#define ANOBJ_RESERVED 0x01 /* Available for use */ #define ANOBJ_TEMPORARY 0x02 /* Node is create by a method and is temporary */ #define ANOBJ_METHOD_ARG 0x04 /* Node is a method argument */ #define ANOBJ_METHOD_LOCAL 0x08 /* Node is a method local */ #define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */ #define ANOBJ_EVALUATED 0x20 /* Set on first evaluation of node */ #define ANOBJ_ALLOCATED_BUFFER 0x40 /* Method AML buffer is dynamic (install_method) */ #define ANOBJ_NODE_EARLY_INIT 0x80 /* acpi_exec only: Node was create via init file (-fi) */
#define ANOBJ_IS_EXTERNAL 0x08 /* iASL only: This object created via External() */ #define ANOBJ_METHOD_NO_RETVAL 0x10 /* iASL only: Method has no return value */ #define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* iASL only: Method has at least one return value */ #define ANOBJ_IS_REFERENCED 0x80 /* iASL only: Object was referenced */
/* Internal ACPI table management - master table list */
struct acpi_table_list { struct acpi_table_desc *tables; /* Table descriptor array */
u32 current_table_count; /* Tables currently in the array */
u32 max_table_count; /* Max tables array will hold */
u8 flags;
};
/* Dispatch info for each host-installed SCI handler */
struct acpi_sci_handler_info { struct acpi_sci_handler_info *next;
acpi_sci_handler address; /* Address of handler */ void *context; /* Context to be passed to handler */
};
/* Dispatch info for each GPE -- either a method or handler, cannot be both */
struct acpi_gpe_handler_info {
acpi_gpe_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) */
u8 original_flags; /* Original (pre-handler) GPE info */
u8 originally_enabled; /* True if GPE was originally enabled */
};
/* Notify info for implicit notify, multiple device objects */
struct acpi_gpe_notify_info { struct acpi_namespace_node *device_node; /* Device to be notified */ struct acpi_gpe_notify_info *next;
};
/* *GPEdispatchinfo.Atanytime,theGPEcanhaveatmostonetype *ofdispatch-Method,Handler,orImplicitNotify.
*/ union acpi_gpe_dispatch_info { struct acpi_namespace_node *method_node; /* Method node for this GPE level */ struct acpi_gpe_handler_info *handler; /* Installed GPE handler */ struct acpi_gpe_notify_info *notify_list; /* List of _PRW devices for implicit notifies */
};
/* *InformationaboutaGPE,onepereachGPEinanarray. *NOTE:Importanttokeepthisstructassmallaspossible.
*/ struct acpi_gpe_event_info { union acpi_gpe_dispatch_info dispatch; /* Either Method, Handler, or notify_list */ struct acpi_gpe_register_info *register_info; /* Backpointer to register info */
u8 flags; /* Misc info about this GPE */
u8 gpe_number; /* This GPE */
u8 runtime_count; /* References to a run GPE */
u8 disable_for_dispatch; /* Masked during dispatching */
};
/* GPE register address */
struct acpi_gpe_address {
u8 space_id; /* Address space where the register exists */
u64 address; /* 64-bit address of the register */
};
/* Information about a GPE register pair, one per each status/enable pair in an array */
struct acpi_gpe_register_info { struct acpi_gpe_address status_address; /* Address of status reg */ struct acpi_gpe_address enable_address; /* Address of enable reg */
u16 base_gpe_number; /* Base GPE number for this register */
u8 enable_for_wake; /* GPEs to keep enabled when sleeping */
u8 enable_for_run; /* GPEs to keep enabled when running */
u8 mask_for_run; /* GPEs to keep masked when running */
u8 enable_mask; /* Current mask of enabled GPEs */
};
/* *InformationaboutaGPEregisterblock,onepereachinstalledblock-- *GPE0,GPE1,andonepereachinstalledGPEBlockDevice.
*/ 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 */
u64 address; /* Base address of the block */
u32 register_count; /* Number of register pairs in block */
u16 gpe_count; /* Number of individual GPEs in block */
u16 block_base_number; /* Base GPE number for this block */
u8 space_id;
u8 initialized; /* TRUE if this block is initialized */
};
/* 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_number; /* System interrupt number */
};
/* Information about the interrupt ID and _EVT of a GED device */
struct acpi_ged_handler_info { struct acpi_ged_handler_info *next;
u32 int_id; /* The interrupt ID that triggers the execution of the evt_method. */ struct acpi_namespace_node *evt_method; /* The _EVT method to be executed when an interrupt with ID = int_ID is received */
};
struct acpi_pscope_state {
ACPI_STATE_COMMON;
u32 arg_count; /* Number of fixed arguments */ 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 */
};
/* *Threadstate-oneperthreadacrossmultiplewalkstates.Multiplewalk *statesarecreatedwhentherearenestedcontrolmethodsexecuting.
*/ struct acpi_thread_state {
ACPI_STATE_COMMON;
u8 current_sync_level; /* Mutex Sync (nested acquire) level */ 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 */
acpi_thread_id thread_id; /* Running thread ID */
};
#define ACPI_PARSE_COMMON \ union acpi_parse_object *parent; /* Parent op */\
u8 descriptor_type; /* To differentiate various internal objs */\
u8 flags; /* Type of Op */\
u16 aml_opcode; /* AML opcode */\
u8 *aml; /* Address of declaration in AML */\ union acpi_parse_object *next; /* Next op */\ struct acpi_namespace_node *node; /* For use by interpreter */\ union acpi_parse_value value; /* Value or args associated with the opcode */\
u8 arg_list_length; /* Number of elements in the arg list */\
ACPI_DISASM_ONLY_MEMBERS (\
u16 disasm_flags; /* Used during AML disassembly */\
u8 disasm_opcode; /* Subtype used for disassembly */\ char *operator_symbol; /* Used for C-style operator name strings */\ char aml_op_name[16]) /* Op name (debug only) */\
ACPI_CONVERTER_ONLY_MEMBERS (\ char *inline_comment; /* Inline comment */\ char *end_node_comment; /* End of node comment */\ char *name_comment; /* Comment associated with the first parameter of the name node */\ char *close_brace_comment; /* Comments that come after } on the same as } */\ struct acpi_comment_node *comment_list; /* comments that appears before this node */\ struct acpi_comment_node *end_blk_comment; /* comments that at the end of a block but before ) or } */\ char *cv_filename; /* Filename associated with this node. Used for ASL/ASL+ converter */\ char *cv_parent_filename) /* Parent filename associated with this node. Used for ASL/ASL+ converter */
/* Internal opcodes for disasm_opcode field above */
#define ACPI_DASM_BUFFER 0x00 /* Buffer is a simple data buffer */ #define ACPI_DASM_RESOURCE 0x01 /* Buffer is a Resource Descriptor */ #define ACPI_DASM_STRING 0x02 /* Buffer is a ASCII string */ #define ACPI_DASM_UNICODE 0x03 /* Buffer is a Unicode string */ #define ACPI_DASM_PLD_METHOD 0x04 /* Buffer is a _PLD method bit-packed buffer */ #define ACPI_DASM_UUID 0x05 /* Buffer is a UUID/GUID */ #define ACPI_DASM_EISAID 0x06 /* Integer is an EISAID */ #define ACPI_DASM_MATCHOP 0x07 /* Parent opcode is a Match() operator */ #define ACPI_DASM_LNOT_PREFIX 0x08 /* Start of a Lnot_equal (etc.) pair of opcodes */ #define ACPI_DASM_LNOT_SUFFIX 0x09 /* End of a Lnot_equal (etc.) pair of opcodes */ #define ACPI_DASM_HID_STRING 0x0A /* String is a _HID or _CID */ #define ACPI_DASM_IGNORE_SINGLE 0x0B /* Ignore the opcode but not it's children */ #define ACPI_DASM_SWITCH 0x0C /* While is a Switch */ #define ACPI_DASM_SWITCH_PREDICATE 0x0D /* Object is a predicate for a Switch or Case block */ #define ACPI_DASM_CASE 0x0E /* If/Else is a Case in a Switch/Case block */ #define ACPI_DASM_DEFAULT 0x0F /* Else is a Default in a Switch/Case block */
/* *Filenode-usedfor"Include"operatorfilestackand *dependencytreeforthe-caoption
*/ struct acpi_file_node { void *file; char *filename; char *file_start; /* Points to AML and indicates when the AML for this particular file starts. */ char *file_end; /* Points to AML and indicates when the AML for this particular file ends. */ struct acpi_file_node *next; struct acpi_file_node *parent;
u8 include_written; struct acpi_comment_node *include_comment;
};
/* *ExtendedOpfornamedops(Scope,Method,etc.),deferredops(Methodsandop_regions), *andbytelists.
*/ struct acpi_parse_obj_named {
ACPI_PARSE_COMMON char *path;
u8 *data; /* AML body or bytelist data */
u32 length; /* AML length */
u32 name; /* 4-byte name or zero if no name */
};
/* This version is used by the iASL compiler only */
struct asl_comment_state {
u8 comment_type;
u32 spaces_before; union acpi_parse_object *latest_parse_op; union acpi_parse_object *parsing_paren_brace_node;
u8 capture_comments;
};
/* *Parsestate-onestateperparserinvocationandeachcontrol *method.
*/ struct acpi_parse_state {
u8 *aml_start; /* First AML byte */
u8 *aml; /* Next AML byte */
u8 *aml_end; /* (last + 1) AML byte */
u8 *pkg_start; /* Current package begin */
u8 *pkg_end; /* Current package end */ union acpi_parse_object *start_op; /* Root of parse tree */ struct acpi_namespace_node *start_node; union acpi_generic_state *scope; /* Current scope */ union acpi_parse_object *start_scope;
u32 aml_size;
};
#define ACPI_EXT_RESOLVED_REFERENCE 0x01 /* Object was resolved during cross ref */
#define ACPI_EXT_ORIGIN_FROM_FILE 0x02 /* External came from a file */
#define ACPI_EXT_INTERNAL_PATH_ALLOCATED 0x04 /* Deallocate internal path on completion */
#define ACPI_EXT_EXTERNAL_EMITTED 0x08 /* External() statement has been emitted */
#define ACPI_EXT_ORIGIN_FROM_OPCODE 0x10 /* External came from a External() opcode */
#define ACPI_EXT_CONFLICTING_DECLARATION 0x20 /* External has a conflicting declaration within AML */
/*
* Arguments to be passed to method for the commands Threads and
* Background. Note, ACPI specifies a maximum of 7 arguments (0 - 6).
*
* For the Threads command, the Number of threads, ID of current
* thread and Index of current thread inside all them created.
*/
char init_args;
#ifdef ACPI_DEBUGGER
acpi_object_type arg_types[ACPI_METHOD_NUM_ARGS];
#endif
char *arguments[ACPI_METHOD_NUM_ARGS];
char num_threads_str[11];
char id_of_thread_str[11];
char index_of_thread_str[11];
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.