📄 aclocal.h
字号:
u8 register_bit; /* This GPE bit within the register */};/* Information about a GPE register pair, one per each status/enable pair in an array */struct acpi_gpe_register_info{ struct acpi_generic_address status_address; /* Address of status reg */ struct acpi_generic_address enable_address; /* Address of enable reg */ u8 enable_for_wake; /* GPEs to keep enabled when sleeping */ u8 enable_for_run; /* GPEs to keep enabled when running */ u8 base_gpe_number; /* Base GPE number for this register */};/* * Information about a GPE register block, one per each installed block -- * GPE0, GPE1, and one per each installed GPE Block Device. */struct acpi_gpe_block_info{ struct acpi_namespace_node *node; struct acpi_gpe_block_info *previous; struct acpi_gpe_block_info *next; struct acpi_gpe_xrupt_info *xrupt_block; /* Backpointer to interrupt block */ struct acpi_gpe_register_info *register_info; /* One per GPE register pair */ struct acpi_gpe_event_info *event_info; /* One for each GPE */ struct acpi_generic_address block_address; /* Base address of the block */ u32 register_count; /* Number of register pairs in block */ u8 block_base_number;/* Base GPE number for this block */};/* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */struct acpi_gpe_xrupt_info{ struct acpi_gpe_xrupt_info *previous; struct acpi_gpe_xrupt_info *next; struct acpi_gpe_block_info *gpe_block_list_head; /* List of GPE blocks for this xrupt */ u32 interrupt_level; /* System interrupt level */};struct acpi_gpe_walk_info{ struct acpi_namespace_node *gpe_device; struct acpi_gpe_block_info *gpe_block;};typedef acpi_status (*ACPI_GPE_CALLBACK) ( struct acpi_gpe_xrupt_info *gpe_xrupt_info, struct acpi_gpe_block_info *gpe_block);/* Information about each particular fixed event */struct acpi_fixed_event_handler{ acpi_event_handler handler; /* Address of handler. */ void *context; /* Context to be passed to handler */};struct acpi_fixed_event_info{ u8 status_register_id; u8 enable_register_id; u16 status_bit_mask; u16 enable_bit_mask;};/* Information used during field processing */struct acpi_field_info{ u8 skip_field; u8 field_flag; u32 pkg_length;};/***************************************************************************** * * Generic "state" object for stacks * ****************************************************************************/#define ACPI_CONTROL_NORMAL 0xC0#define ACPI_CONTROL_CONDITIONAL_EXECUTING 0xC1#define ACPI_CONTROL_PREDICATE_EXECUTING 0xC2#define ACPI_CONTROL_PREDICATE_FALSE 0xC3#define ACPI_CONTROL_PREDICATE_TRUE 0xC4/* Forward declarations */struct acpi_walk_state ;struct acpi_obj_mutex;union acpi_parse_object ;#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 reserved; \ void *next; \struct acpi_common_state{ ACPI_STATE_COMMON};/* * Update state - used to traverse complex objects such as packages */struct acpi_update_state{ ACPI_STATE_COMMON union acpi_operand_object *object;};/* * Pkg state - used to traverse nested package structures */struct acpi_pkg_state{ ACPI_STATE_COMMON union acpi_operand_object *source_object; union acpi_operand_object *dest_object; struct acpi_walk_state *walk_state; void *this_target_obj; u32 num_packages; u16 index;};/* * Control state - one per if/else and while constructs. * Allows nesting of these constructs */struct acpi_control_state{ ACPI_STATE_COMMON union acpi_parse_object *predicate_op; u8 *aml_predicate_start; /* Start of if/while predicate */ u8 *package_end; /* End of if/while block */ u16 opcode;};/* * Scope state - current scope during namespace lookups */struct acpi_scope_state{ ACPI_STATE_COMMON struct acpi_namespace_node *node;};struct acpi_pscope_state{ ACPI_STATE_COMMON union acpi_parse_object *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 */};/* * Thread state - one per thread across multiple walk states. Multiple walk * states are created when there are nested control methods executing. */struct acpi_thread_state{ ACPI_STATE_COMMON struct acpi_walk_state *walk_state_list; /* Head of list of walk_states for this thread */ union acpi_operand_object *acquired_mutex_list; /* List of all currently acquired mutexes */ u32 thread_id; /* Running thread ID */ u8 current_sync_level; /* Mutex Sync (nested acquire) level */};/* * Result values - used to accumulate the results of nested * AML arguments */struct acpi_result_values{ ACPI_STATE_COMMON union acpi_operand_object *obj_desc [ACPI_OBJ_NUM_OPERANDS]; u8 num_results; u8 last_insert;};typedefacpi_status (*acpi_parse_downwards) ( struct acpi_walk_state *walk_state, union acpi_parse_object **out_op);typedefacpi_status (*acpi_parse_upwards) ( struct acpi_walk_state *walk_state);/* * Notify info - used to pass info to the deferred notify * handler/dispatcher. */struct acpi_notify_info{ ACPI_STATE_COMMON struct acpi_namespace_node *node; union acpi_operand_object *handler_obj;};/* Generic state is union of structs above */union acpi_generic_state{ struct acpi_common_state common; struct acpi_control_state control; struct acpi_update_state update; struct acpi_scope_state scope; struct acpi_pscope_state parse_scope; struct acpi_pkg_state pkg; struct acpi_thread_state thread; struct acpi_result_values results; struct acpi_notify_info notify;};/***************************************************************************** * * Interpreter typedefs and structs * ****************************************************************************/typedefacpi_status (*ACPI_EXECUTE_OP) ( struct acpi_walk_state *walk_state);/***************************************************************************** * * Parser typedefs and structs * ****************************************************************************//* * AML opcode, name, and argument layout */struct acpi_opcode_info{#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT) char *name; /* Opcode name (disassembler/debug only) */#endif u32 parse_args; /* Grammar/Parse time arguments */ u32 runtime_args; /* Interpret time arguments */ u32 flags; /* Misc flags */ u8 object_type; /* Corresponding internal object type */ u8 class; /* Opcode class */ u8 type; /* Opcode type */};union acpi_parse_value{ acpi_integer integer; /* Integer constant (Up to 64 bits) */ struct uint64_struct integer64; /* Structure overlay for 2 32-bit Dwords */ u32 size; /* bytelist or field size */ char *string; /* NULL terminated string */ u8 *buffer; /* buffer or string */ char *name; /* NULL terminated string */ union acpi_parse_object *arg; /* arguments and contained ops */};#define ACPI_PARSE_COMMON \ u8 data_type; /* To differentiate various internal objs */\ u8 flags; /* Type of Op */\ u16 aml_opcode; /* AML opcode */\ u32 aml_offset; /* Offset of declaration in AML */\ union acpi_parse_object *parent; /* Parent op */\ union acpi_parse_object *next; /* Next op */\ ACPI_DISASM_ONLY_MEMBERS (\ u8 disasm_flags; /* Used during AML disassembly */\ u8 disasm_opcode; /* Subtype used for disassembly */\ char aml_op_name[16]) /* Op name (debug only) */\ /* NON-DEBUG members below: */\ struct acpi_namespace_node *node; /* For use by interpreter */\ union acpi_parse_value value; /* Value or args associated with the opcode */\#define ACPI_DASM_BUFFER 0x00#define ACPI_DASM_RESOURCE 0x01#define ACPI_DASM_STRING 0x02#define ACPI_DASM_UNICODE 0x03#define ACPI_DASM_EISAID 0x04#define ACPI_DASM_MATCHOP 0x05/* * generic operation (for example: If, While, Store) */struct acpi_parse_obj_common{ ACPI_PARSE_COMMON};/* * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and op_regions), * and bytelists. */struct acpi_parse_obj_named{ ACPI_PARSE_COMMON u8 *path; u8 *data; /* AML body or bytelist data */ u32 length; /* AML length */ u32 name; /* 4-byte name or zero if no name */};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -