📄 acobject.h
字号:
union acpi_operand_object *DeviceNotify; /* Handler for driver notifies */\ union acpi_operand_object *Handler; /* Handler for Address space */typedef struct acpi_object_notify_common /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */{ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO} ACPI_OBJECT_NOTIFY_COMMON;typedef struct acpi_object_device{ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO ACPI_GPE_BLOCK_INFO *GpeBlock;} ACPI_OBJECT_DEVICE;typedef struct acpi_object_power_resource{ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO UINT32 SystemLevel; UINT32 ResourceOrder;} ACPI_OBJECT_POWER_RESOURCE;typedef struct acpi_object_processor{ ACPI_OBJECT_COMMON_HEADER /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */ UINT8 ProcId; UINT8 Length; ACPI_COMMON_NOTIFY_INFO ACPI_IO_ADDRESS Address;} ACPI_OBJECT_PROCESSOR;typedef struct acpi_object_thermal_zone{ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO} ACPI_OBJECT_THERMAL_ZONE;/****************************************************************************** * * 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 \ UINT8 FieldFlags; /* Access, update, and lock bits */\ UINT8 Attribute; /* From AccessAs keyword */\ UINT8 AccessByteWidth; /* Read/Write size in bytes */\ ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */\ UINT32 BitLength; /* Length of field in bits */\ UINT32 BaseByteOffset; /* Byte offset within containing object */\ UINT32 Value; /* Value to store into the Bank or Index register */\ UINT8 StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\ UINT8 AccessBitWidth; /* Read/Write size in bits (8-64) */typedef 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 *RegionObj; /* Parent Operation Region object (REGION/BANK fields only) */} ACPI_OBJECT_FIELD_COMMON;typedef struct acpi_object_region_field{ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *RegionObj; /* Containing OpRegion object */} ACPI_OBJECT_REGION_FIELD;typedef struct acpi_object_bank_field{ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *RegionObj; /* Containing OpRegion object */ union acpi_operand_object *BankObj; /* BankSelect Register object */} ACPI_OBJECT_BANK_FIELD;typedef 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 *IndexObj; /* Index register */ union acpi_operand_object *DataObj; /* Data register */} ACPI_OBJECT_INDEX_FIELD;/* The BufferField is different in that it is part of a Buffer, not an OpRegion */typedef struct acpi_object_buffer_field{ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *BufferObj; /* Containing Buffer object */} ACPI_OBJECT_BUFFER_FIELD;/****************************************************************************** * * Objects for handlers * *****************************************************************************/typedef struct acpi_object_notify_handler{ ACPI_OBJECT_COMMON_HEADER ACPI_NAMESPACE_NODE *Node; /* Parent device */ ACPI_NOTIFY_HANDLER Handler; void *Context;} ACPI_OBJECT_NOTIFY_HANDLER;typedef struct acpi_object_addr_handler{ ACPI_OBJECT_COMMON_HEADER UINT8 SpaceId; UINT8 HandlerFlags; ACPI_ADR_SPACE_HANDLER Handler; ACPI_NAMESPACE_NODE *Node; /* Parent device */ void *Context; ACPI_ADR_SPACE_SETUP Setup; union acpi_operand_object *RegionList; /* regions using this handler */ union acpi_operand_object *Next;} ACPI_OBJECT_ADDR_HANDLER;/* Flags for address handler (HandlerFlags) */#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], IndexOp, NameOp, ZeroOp, OneOp, OnesOp, DebugOp */typedef struct acpi_object_reference{ ACPI_OBJECT_COMMON_HEADER UINT8 TargetType; /* Used for IndexOp */ UINT16 Opcode; void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */ ACPI_NAMESPACE_NODE *Node; union acpi_operand_object **Where; UINT32 Offset; /* Used for ArgOp, LocalOp, and IndexOp */} ACPI_OBJECT_REFERENCE;/* * Extra object is used as additional storage for types that * have AML code in their declarations (TermArgs) that must be * evaluated at run time. * * Currently: Region and FieldUnit types */typedef struct acpi_object_extra{ ACPI_OBJECT_COMMON_HEADER ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */ void *RegionContext; /* Region-specific data */ UINT8 *AmlStart; UINT32 AmlLength;} ACPI_OBJECT_EXTRA;/* Additional data that can be attached to namespace nodes */typedef struct acpi_object_data{ ACPI_OBJECT_COMMON_HEADER ACPI_OBJECT_HANDLER Handler; void *Pointer;} ACPI_OBJECT_DATA;/* Structure used when objects are cached for reuse */typedef struct acpi_object_cache_list{ ACPI_OBJECT_COMMON_HEADER union acpi_operand_object *Next; /* Link for object cache and internal lists*/} ACPI_OBJECT_CACHE_LIST;/****************************************************************************** * * ACPI_OPERAND_OBJECT Descriptor - a giant union of all of the above * *****************************************************************************/typedef union acpi_operand_object{ ACPI_OBJECT_COMMON Common; ACPI_OBJECT_INTEGER Integer; ACPI_OBJECT_STRING String; ACPI_OBJECT_BUFFER Buffer; ACPI_OBJECT_PACKAGE Package; ACPI_OBJECT_EVENT Event; ACPI_OBJECT_METHOD Method; ACPI_OBJECT_MUTEX Mutex; ACPI_OBJECT_REGION Region; ACPI_OBJECT_NOTIFY_COMMON CommonNotify; ACPI_OBJECT_DEVICE Device; ACPI_OBJECT_POWER_RESOURCE PowerResource; ACPI_OBJECT_PROCESSOR Processor; ACPI_OBJECT_THERMAL_ZONE ThermalZone; ACPI_OBJECT_FIELD_COMMON CommonField; ACPI_OBJECT_REGION_FIELD Field; ACPI_OBJECT_BUFFER_FIELD BufferField; ACPI_OBJECT_BANK_FIELD BankField; ACPI_OBJECT_INDEX_FIELD IndexField; ACPI_OBJECT_NOTIFY_HANDLER Notify; ACPI_OBJECT_ADDR_HANDLER AddressSpace; ACPI_OBJECT_REFERENCE Reference; ACPI_OBJECT_EXTRA Extra; ACPI_OBJECT_DATA Data; ACPI_OBJECT_CACHE_LIST Cache;} ACPI_OPERAND_OBJECT;/****************************************************************************** * * 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 0x0Ftypedef struct acpi_common_descriptor{ void *CommonPointer; UINT8 DescriptorType; /* To differentiate various internal objs */} ACPI_COMMON_DESCRIPTOR;typedef union acpi_descriptor{ ACPI_COMMON_DESCRIPTOR Common; ACPI_OPERAND_OBJECT Object; ACPI_NAMESPACE_NODE Node; ACPI_PARSE_OBJECT Op;} ACPI_DESCRIPTOR;#pragma pack()#endif /* _ACOBJECT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -