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

📄 aclocal.h

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** * * Name: aclocal.h - Internal data types used across the ACPI subsystem *       $Revision: 95 $ * *****************************************************************************//* *  Copyright (C) 2000 R. Byron Moore * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#ifndef __ACLOCAL_H__#define __ACLOCAL_H__#define WAIT_FOREVER                ((u32) -1)typedef void*                       ACPI_MUTEX;typedef u32                         ACPI_MUTEX_HANDLE;/* Object descriptor types */#define ACPI_CACHED_OBJECT          0x11    /* ORed in when object is cached */#define ACPI_DESC_TYPE_STATE        0x22#define ACPI_DESC_TYPE_WALK         0x44#define ACPI_DESC_TYPE_PARSER       0x66#define ACPI_DESC_TYPE_INTERNAL     0x88#define ACPI_DESC_TYPE_NAMED        0xAA/***************************************************************************** * * Mutex typedefs and structs * ****************************************************************************//* * Predefined handles for the mutex objects used within the subsystem * All mutex objects are automatically created by Acpi_cm_mutex_initialize. * NOTE: any changes here must be reflected in the Acpi_gbl_Mutex_names table also! */#define ACPI_MTX_HARDWARE           0#define ACPI_MTX_MEMORY             1#define ACPI_MTX_CACHES             2#define ACPI_MTX_TABLES             3#define ACPI_MTX_PARSER             4#define ACPI_MTX_DISPATCHER         5#define ACPI_MTX_INTERPRETER        6#define ACPI_MTX_EXECUTE            7#define ACPI_MTX_NAMESPACE          8#define ACPI_MTX_EVENTS             9#define ACPI_MTX_OP_REGIONS         10#define ACPI_MTX_DEBUG_CMD_READY    11#define ACPI_MTX_DEBUG_CMD_COMPLETE 12#define MAX_MTX                     12#define NUM_MTX                     MAX_MTX+1#ifdef ACPI_DEBUG#ifdef DEFINE_ACPI_GLOBALS/* Names for the mutexes used in the subsystem */static NATIVE_CHAR          *acpi_gbl_mutex_names[] ={	"ACPI_MTX_Hardware",	"ACPI_MTX_Memory",	"ACPI_MTX_Caches",	"ACPI_MTX_Tables",	"ACPI_MTX_Parser",	"ACPI_MTX_Dispatcher",	"ACPI_MTX_Interpreter",	"ACPI_MTX_Execute",	"ACPI_MTX_Namespace",	"ACPI_MTX_Events",	"ACPI_MTX_Op_regions",	"ACPI_MTX_Debug_cmd_ready",	"ACPI_MTX_Debug_cmd_complete"};#endif#endif/* Table for the global mutexes */typedef struct acpi_mutex_info{	ACPI_MUTEX                  mutex;	u32                         use_count;	u8                          locked;} ACPI_MUTEX_INFO;/* Lock flag parameter for various interfaces */#define ACPI_MTX_DO_NOT_LOCK        0#define ACPI_MTX_LOCK               1typedef u16                         ACPI_OWNER_ID;#define OWNER_TYPE_TABLE            0x0#define OWNER_TYPE_METHOD           0x1#define FIRST_METHOD_ID             0x0000#define FIRST_TABLE_ID              0x8000/* TBD: [Restructure] get rid of the need for this! */#define TABLE_ID_DSDT               (ACPI_OWNER_ID) 0x8000/***************************************************************************** * * Namespace typedefs and structs * ****************************************************************************//* Operational modes of the AML interpreter/scanner */typedef enum{	IMODE_LOAD_PASS1                = 0x01,	IMODE_LOAD_PASS2                = 0x02,	IMODE_EXECUTE                   = 0x0E} OPERATING_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. */typedef struct acpi_node{	u8                      data_type;	u8                      type;           /* Type associated with this name */	u16                     owner_id;	u32                     name;           /* ACPI Name, always 4 chars per ACPI spec */	void                    *object;        /* Pointer to attached ACPI object (optional) */	struct acpi_node        *child;         /* first child */	struct acpi_node        *peer;          /* Next peer*/	u16                     reference_count; /* Current count of references and children */	u8                      flags;} ACPI_NAMESPACE_NODE;#define ENTRY_NOT_FOUND             NULL/* Node flags */#define ANOBJ_AML_ATTACHMENT        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/* * ACPI Table Descriptor.  One per ACPI table */typedef struct acpi_table_desc{	struct acpi_table_desc  *prev;	struct acpi_table_desc  *next;	struct acpi_table_desc  *installed_desc;	ACPI_TABLE_HEADER       *pointer;	void                    *base_pointer;	u8                      *aml_pointer;	UINT64                  physical_address;	u32                     aml_length;	u32                     length;	u32                     count;	ACPI_OWNER_ID           table_id;	u8                      type;	u8                      allocation;	u8                      loaded_into_namespace;} ACPI_TABLE_DESC;typedef struct{	NATIVE_CHAR             *search_for;	ACPI_HANDLE             *list;	u32                     *count;} FIND_CONTEXT;typedef struct{	ACPI_NAMESPACE_NODE     *node;} NS_SEARCH_DATA;/* * Predefined Namespace items */#define ACPI_MAX_ADDRESS_SPACE      255#define ACPI_NUM_ADDRESS_SPACES     256typedef struct{	NATIVE_CHAR             *name;	ACPI_OBJECT_TYPE        type;	NATIVE_CHAR             *val;} PREDEFINED_NAMES;/***************************************************************************** * * Event typedefs and structs * ****************************************************************************//* Status bits. */#define ACPI_STATUS_PMTIMER                  0x0001#define ACPI_STATUS_GLOBAL                   0x0020#define ACPI_STATUS_POWER_BUTTON             0x0100#define ACPI_STATUS_SLEEP_BUTTON             0x0200#define ACPI_STATUS_RTC_ALARM                0x0400/* Enable bits. */#define ACPI_ENABLE_PMTIMER                  0x0001#define ACPI_ENABLE_GLOBAL                   0x0020#define ACPI_ENABLE_POWER_BUTTON             0x0100#define ACPI_ENABLE_SLEEP_BUTTON             0x0200#define ACPI_ENABLE_RTC_ALARM                0x0400/* * Entry in the Address_space (AKA Operation Region) table */typedef struct{	ADDRESS_SPACE_HANDLER   handler;	void                    *context;} ACPI_ADDRESS_SPACE_INFO;/* Values and addresses of the GPE registers (both banks) */typedef struct{	u8                      status;         /* Current value of status reg */	u8                      enable;         /* Current value of enable reg */	u16                     status_addr;    /* Address of status reg */	u16                     enable_addr;    /* Address of enable reg */	u8                      gpe_base;       /* Base GPE number */} ACPI_GPE_REGISTERS;#define ACPI_GPE_LEVEL_TRIGGERED            1#define ACPI_GPE_EDGE_TRIGGERED             2/* Information about each particular GPE level */typedef struct{	u8                      type;           /* Level or Edge */	ACPI_HANDLE             method_handle;  /* Method handle for direct (fast) execution */	GPE_HANDLER             handler;        /* Address of handler, if any */	void                    *context;       /* Context to be passed to handler */} ACPI_GPE_LEVEL_INFO;/* Information about each particular fixed event */typedef struct{	FIXED_EVENT_HANDLER     handler;        /* Address of handler. */	void                    *context;       /* Context to be passed to handler */} ACPI_FIXED_EVENT_INFO;/* Information used during field processing */typedef struct{	u8                      skip_field;	u8                      field_flag;	u32                     pkg_length;} ACPI_FIELD_INFO;/***************************************************************************** * * Generic "state" object for stacks * ****************************************************************************/#define CONTROL_NORMAL                        0xC0#define CONTROL_CONDITIONAL_EXECUTING         0xC1#define CONTROL_PREDICATE_EXECUTING           0xC2#define CONTROL_PREDICATE_FALSE               0xC3#define CONTROL_PREDICATE_TRUE                0xC4/* Forward declaration */struct acpi_walk_state;struct acpi_parse_obj ;#define ACPI_STATE_COMMON                  /* Two 32-bit fields and a pointer */\	u8                      data_type;          /* To differentiate various internal objs */\	u8                      flags; \	u16                     value; \	u16                     state; \	u16                     acpi_eval; \	void                    *next; \typedef struct acpi_common_state{	ACPI_STATE_COMMON} ACPI_COMMON_STATE;/* * Update state - used to traverse complex objects such as packages */typedef struct acpi_update_state{	ACPI_STATE_COMMON	union acpi_operand_obj  *object;} ACPI_UPDATE_STATE;/* * Control state - one per if/else and while constructs. * Allows nesting of these constructs */typedef struct acpi_control_state{	ACPI_STATE_COMMON	struct acpi_parse_obj   *predicate_op;	u8                      *aml_predicate_start; /* Start of if/while predicate */} ACPI_CONTROL_STATE;/* * Scope state - current scope during namespace lookups */typedef struct acpi_scope_state{	ACPI_STATE_COMMON	ACPI_NAMESPACE_NODE     *node;} ACPI_SCOPE_STATE;typedef struct acpi_pscope_state{	ACPI_STATE_COMMON	struct acpi_parse_obj   *op;            /* current op being parsed */	u8                      *arg_end;       /* current argument end */	u8                      *pkg_end;       /* current package end */	u32                     arg_list;       /* next argument to parse */	u32                     arg_count;      /* Number of fixed arguments */} ACPI_PSCOPE_STATE;/* * Result values - used to accumulate the results of nested * AML arguments */typedef struct acpi_result_values{	ACPI_STATE_COMMON	union acpi_operand_obj  *obj_desc [OBJ_NUM_OPERANDS];	u8                      num_results;	u8                      last_insert;} ACPI_RESULT_VALUES;/* Generic state is union of structs above */typedef union acpi_gen_state{	ACPI_COMMON_STATE       common;	ACPI_CONTROL_STATE      control;	ACPI_UPDATE_STATE       update;	ACPI_SCOPE_STATE        scope;	ACPI_PSCOPE_STATE       parse_scope;	ACPI_RESULT_VALUES      results;} ACPI_GENERIC_STATE;typedefACPI_STATUS (*ACPI_PARSE_DOWNWARDS) (	u16                     opcode,	struct acpi_parse_obj   *op,	struct acpi_walk_state  *walk_state,	struct acpi_parse_obj   **out_op);typedefACPI_STATUS (*ACPI_PARSE_UPWARDS) (	struct acpi_walk_state  *walk_state,	struct acpi_parse_obj   *op);/***************************************************************************** * * Parser typedefs and structs *

⌨️ 快捷键说明

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