📄 acobject.h
字号:
struct acpi_object_processor { ACPI_OBJECT_COMMON_HEADER /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */ u8 proc_id; u8 length; ACPI_COMMON_NOTIFY_INFO acpi_io_address address;};struct acpi_object_thermal_zone {ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO};/****************************************************************************** * * Fields. All share a common header/info field. * *****************************************************************************//* * Common bitfield for the field objects * "Field Datum" -- a datum from the actual field object * "Buffer Datum" -- a datum from a user buffer, read from or to be written to the field */#define ACPI_COMMON_FIELD_INFO \ u8 field_flags; /* Access, update, and lock bits */\ u8 attribute; /* From access_as keyword */\ u8 access_byte_width; /* Read/Write size in bytes */\ struct acpi_namespace_node *node; /* Link back to parent node */\ u32 bit_length; /* Length of field in bits */\ u32 base_byte_offset; /* Byte offset within containing object */\ u32 value; /* Value to store into the Bank or Index register */\ u8 start_field_bit_offset;/* Bit offset within first field datum (0-63) */\ u8 access_bit_width; /* Read/Write size in bits (8-64) */struct acpi_object_field_common { /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Parent Operation Region object (REGION/BANK fields only) */};struct acpi_object_region_field { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing op_region object */};struct acpi_object_bank_field { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing op_region object */ union acpi_operand_object *bank_obj; /* bank_select Register object */};struct acpi_object_index_field { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO /* * No "RegionObj" pointer needed since the Index and Data registers * are each field definitions unto themselves. */ union acpi_operand_object *index_obj; /* Index register */ union acpi_operand_object *data_obj; /* Data register */};/* The buffer_field is different in that it is part of a Buffer, not an op_region */struct acpi_object_buffer_field { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *buffer_obj; /* Containing Buffer object */};/****************************************************************************** * * Objects for handlers * *****************************************************************************/struct acpi_object_notify_handler { ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *node; /* Parent device */ acpi_notify_handler handler; void *context;};struct acpi_object_addr_handler { ACPI_OBJECT_COMMON_HEADER u8 space_id; u8 handler_flags; acpi_adr_space_handler handler; struct acpi_namespace_node *node; /* Parent device */ void *context; acpi_adr_space_setup setup; union acpi_operand_object *region_list; /* regions using this handler */ union acpi_operand_object *next;};/* Flags for address handler (handler_flags) */#define ACPI_ADDR_HANDLER_DEFAULT_INSTALLED 0x01/****************************************************************************** * * Special internal objects * *****************************************************************************//* * The Reference object type is used for these opcodes: * Arg[0-6], Local[0-7], index_op, name_op, zero_op, one_op, ones_op, debug_op */struct acpi_object_reference { ACPI_OBJECT_COMMON_HEADER u8 target_type; /* Used for index_op */ u16 opcode; void *object; /* name_op=>HANDLE to obj, index_op=>union acpi_operand_object */ struct acpi_namespace_node *node; union acpi_operand_object **where; u32 offset; /* Used for arg_op, local_op, and index_op */};/* * Extra object is used as additional storage for types that * have AML code in their declarations (term_args) that must be * evaluated at run time. * * Currently: Region and field_unit types */struct acpi_object_extra { ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */ void *region_context; /* Region-specific data */ u8 *aml_start; u32 aml_length;};/* Additional data that can be attached to namespace nodes */struct acpi_object_data { ACPI_OBJECT_COMMON_HEADER acpi_object_handler handler; void *pointer;};/* Structure used when objects are cached for reuse */struct acpi_object_cache_list { ACPI_OBJECT_COMMON_HEADER union acpi_operand_object *next; /* Link for object cache and internal lists */};/****************************************************************************** * * union acpi_operand_object Descriptor - a giant union of all of the above * *****************************************************************************/union acpi_operand_object { struct acpi_object_common common; struct acpi_object_integer integer; struct acpi_object_string string; struct acpi_object_buffer buffer; struct acpi_object_package package; struct acpi_object_event event; struct acpi_object_method method; struct acpi_object_mutex mutex; struct acpi_object_region region; struct acpi_object_notify_common common_notify; struct acpi_object_device device; struct acpi_object_power_resource power_resource; struct acpi_object_processor processor; struct acpi_object_thermal_zone thermal_zone; struct acpi_object_field_common common_field; struct acpi_object_region_field field; struct acpi_object_buffer_field buffer_field; struct acpi_object_bank_field bank_field; struct acpi_object_index_field index_field; struct acpi_object_notify_handler notify; struct acpi_object_addr_handler address_space; struct acpi_object_reference reference; struct acpi_object_extra extra; struct acpi_object_data data; struct acpi_object_cache_list cache;};/****************************************************************************** * * union acpi_descriptor - objects that share a common descriptor identifier * *****************************************************************************//* Object descriptor types */#define ACPI_DESC_TYPE_CACHED 0x01 /* Used only when object is cached */#define ACPI_DESC_TYPE_STATE 0x02#define ACPI_DESC_TYPE_STATE_UPDATE 0x03#define ACPI_DESC_TYPE_STATE_PACKAGE 0x04#define ACPI_DESC_TYPE_STATE_CONTROL 0x05#define ACPI_DESC_TYPE_STATE_RPSCOPE 0x06#define ACPI_DESC_TYPE_STATE_PSCOPE 0x07#define ACPI_DESC_TYPE_STATE_WSCOPE 0x08#define ACPI_DESC_TYPE_STATE_RESULT 0x09#define ACPI_DESC_TYPE_STATE_NOTIFY 0x0A#define ACPI_DESC_TYPE_STATE_THREAD 0x0B#define ACPI_DESC_TYPE_WALK 0x0C#define ACPI_DESC_TYPE_PARSER 0x0D#define ACPI_DESC_TYPE_OPERAND 0x0E#define ACPI_DESC_TYPE_NAMED 0x0F#define ACPI_DESC_TYPE_MAX 0x0Fstruct acpi_common_descriptor { void *common_pointer; u8 descriptor_type; /* To differentiate various internal objs */};union acpi_descriptor { struct acpi_common_descriptor common; union acpi_operand_object object; struct acpi_namespace_node node; union acpi_parse_object op;};#pragma pack()#endif /* _ACOBJECT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -