⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aclocal.h

📁 xen 3.2.2 源码
💻 H
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************** * * Name: aclocal.h - Internal data types used across the ACPI subsystem * *****************************************************************************//* * Copyright (C) 2000 - 2005, R. Byron Moore * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions, and the following disclaimer, *    without modification. * 2. Redistributions in binary form must reproduce at minimum a disclaimer *    substantially similar to the "NO WARRANTY" disclaimer below *    ("Disclaimer") and any redistribution must be conditioned upon *    including a substantially similar Disclaimer requirement for further *    binary redistribution. * 3. Neither the names of the above-listed copyright holders nor the names *    of any contributors may be used to endorse or promote products derived *    from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * NO WARRANTY * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. */#ifndef __ACLOCAL_H__#define __ACLOCAL_H__#define ACPI_WAIT_FOREVER               0xFFFF  /* u16, as per ACPI spec */typedef void *                                  acpi_mutex;typedef u32                                     acpi_mutex_handle;/* Total number of aml opcodes defined */#define AML_NUM_OPCODES                 0x7F/***************************************************************************** * * Mutex typedefs and structs * ****************************************************************************//* * Predefined handles for the mutex objects used within the subsystem * All mutex objects are automatically created by acpi_ut_mutex_initialize. * * The acquire/release ordering protocol is implied via this list.  Mutexes * with a lower value must be acquired before mutexes with a higher value. * * NOTE: any changes here must be reflected in the acpi_gbl_mutex_names table also! */#define ACPI_MTX_EXECUTE                0#define ACPI_MTX_INTERPRETER            1#define ACPI_MTX_PARSER                 2#define ACPI_MTX_DISPATCHER             3#define ACPI_MTX_TABLES                 4#define ACPI_MTX_OP_REGIONS             5#define ACPI_MTX_NAMESPACE              6#define ACPI_MTX_EVENTS                 7#define ACPI_MTX_HARDWARE               8#define ACPI_MTX_CACHES                 9#define ACPI_MTX_MEMORY                 10#define ACPI_MTX_DEBUG_CMD_COMPLETE     11#define ACPI_MTX_DEBUG_CMD_READY        12#define MAX_MUTEX                       12#define NUM_MUTEX                       MAX_MUTEX+1#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)#ifdef DEFINE_ACPI_GLOBALS/* Names for the mutexes used in the subsystem */static char                         *acpi_gbl_mutex_names[] ={	"ACPI_MTX_Execute",	"ACPI_MTX_Interpreter",	"ACPI_MTX_Parser",	"ACPI_MTX_Dispatcher",	"ACPI_MTX_Tables",	"ACPI_MTX_op_regions",	"ACPI_MTX_Namespace",	"ACPI_MTX_Events",	"ACPI_MTX_Hardware",	"ACPI_MTX_Caches",	"ACPI_MTX_Memory",	"ACPI_MTX_debug_cmd_complete",	"ACPI_MTX_debug_cmd_ready",};#endif#endif/* Table for the global mutexes */struct acpi_mutex_info{	acpi_mutex                          mutex;	u32                                 use_count;	u32                                 owner_id;};/* This owner ID means that the mutex is not in use (unlocked) */#define ACPI_MUTEX_NOT_ACQUIRED         (u32) (-1)/* Lock flag parameter for various interfaces */#define ACPI_MTX_DO_NOT_LOCK            0#define ACPI_MTX_LOCK                   1typedef u16                                     acpi_owner_id;#define ACPI_OWNER_TYPE_TABLE           0x0#define ACPI_OWNER_TYPE_METHOD          0x1#define ACPI_FIRST_METHOD_ID            0x0001#define ACPI_FIRST_TABLE_ID             0xF000/* Field access granularities */#define ACPI_FIELD_BYTE_GRANULARITY     1#define ACPI_FIELD_WORD_GRANULARITY     2#define ACPI_FIELD_DWORD_GRANULARITY    4#define ACPI_FIELD_QWORD_GRANULARITY    8/***************************************************************************** * * Namespace typedefs and structs * ****************************************************************************//* Operational modes of the AML interpreter/scanner */typedef enum{	ACPI_IMODE_LOAD_PASS1               = 0x01,	ACPI_IMODE_LOAD_PASS2               = 0x02,	ACPI_IMODE_EXECUTE                  = 0x0E} acpi_interpreter_mode;/* * The Node describes a named object that appears in the AML * An acpi_node is used to store Nodes. * * data_type is used to differentiate between internal descriptors, and MUST * be the first byte in this structure. */union acpi_name_union{	u32                                 integer;	char                                ascii[4];};struct acpi_namespace_node{	u8                                  descriptor;     /* Used to differentiate object descriptor types */	u8                                  type;           /* Type associated with this name */	u16                                 owner_id;	union acpi_name_union               name;           /* ACPI Name, always 4 chars per ACPI spec */	union acpi_operand_object           *object;        /* Pointer to attached ACPI object (optional) */	struct acpi_namespace_node          *child;         /* First child */	struct acpi_namespace_node          *peer;          /* Next peer*/	u16                                 reference_count; /* Current count of references and children */	u8                                  flags;};#define ACPI_ENTRY_NOT_FOUND            NULL/* Node flags */#define ANOBJ_RESERVED                  0x01#define ANOBJ_END_OF_PEER_LIST          0x02#define ANOBJ_DATA_WIDTH_32             0x04     /* Parent table is 64-bits */#define ANOBJ_METHOD_ARG                0x08#define ANOBJ_METHOD_LOCAL              0x10#define ANOBJ_METHOD_NO_RETVAL          0x20#define ANOBJ_METHOD_SOME_NO_RETVAL     0x40#define ANOBJ_IS_BIT_OFFSET             0x80/* * ACPI Table Descriptor.  One per ACPI table */struct acpi_table_desc{	struct acpi_table_desc          *prev;	struct acpi_table_desc          *next;	struct acpi_table_desc          *installed_desc;	struct acpi_table_header        *pointer;	u8                              *aml_start;	u64                             physical_address;	u32                             aml_length;	acpi_size                       length;	acpi_owner_id                   table_id;	u8                              type;	u8                              allocation;	u8                              loaded_into_namespace;};struct acpi_table_list{	struct acpi_table_desc          *next;	u32                             count;};struct acpi_find_context{	char                            *search_for;	acpi_handle                     *list;	u32                             *count;};struct acpi_ns_search_data{	struct acpi_namespace_node      *node;};/* * Predefined Namespace items */struct acpi_predefined_names{	char                            *name;	u8                              type;	char                            *val;};/* Object types used during package copies */#define ACPI_COPY_TYPE_SIMPLE           0#define ACPI_COPY_TYPE_PACKAGE          1/* Info structure used to convert external<->internal namestrings */struct acpi_namestring_info{	char                            *external_name;	char                            *next_external_char;	char                            *internal_name;	u32                             length;	u32                             num_segments;	u32                             num_carats;	u8                              fully_qualified;};/* Field creation info */struct acpi_create_field_info{	struct acpi_namespace_node      *region_node;	struct acpi_namespace_node      *field_node;	struct acpi_namespace_node      *register_node;	struct acpi_namespace_node      *data_register_node;	u32                             bank_value;	u32                             field_bit_position;	u32                             field_bit_length;	u8                              field_flags;	u8                              attribute;	u8                              field_type;};/***************************************************************************** * * Event typedefs and structs * ****************************************************************************//* Dispatch info for each GPE -- either a method or handler, cannot be both */struct acpi_handler_info{	acpi_event_handler                      address;        /* Address of handler, if any */	void                                    *context;       /* Context to be passed to handler */	struct acpi_namespace_node              *method_node;   /* Method node for this GPE level (saved) */};union acpi_gpe_dispatch_info{	struct acpi_namespace_node              *method_node;   /* Method node for this GPE level */	struct acpi_handler_info                *handler;};/* * Information about a GPE, one per each GPE in an array. * NOTE: Important to keep this struct as small as possible. */struct acpi_gpe_event_info{	union acpi_gpe_dispatch_info    dispatch;       /* Either Method or Handler */	struct acpi_gpe_register_info           *register_info; /* Backpointer to register info */	u8                                      flags;          /* Misc info about this GPE */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -