📄 actypes.h
字号:
/****************************************************************************** * * Name: actypes.h - Common data types for the entire ACPI subsystem * $Revision: 159 $ * *****************************************************************************//* * 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 __ACTYPES_H__#define __ACTYPES_H__/*! [Begin] no source code translation (keep the typedefs) *//* * Data types - Fixed across all compilation models * * BOOLEAN Logical Boolean. * 1 byte value containing a 0 for FALSE or a 1 for TRUE. * Other values are undefined. * * INT8 8-bit (1 byte) signed value * UINT8 8-bit (1 byte) unsigned value * INT16 16-bit (2 byte) signed value * UINT16 16-bit (2 byte) unsigned value * INT32 32-bit (4 byte) signed value * UINT32 32-bit (4 byte) unsigned value * INT64 64-bit (8 byte) signed value * UINT64 64-bit (8 byte) unsigned value * NATIVE_INT 32-bit on IA-32, 64-bit on IA-64 signed value * NATIVE_UINT 32-bit on IA-32, 64-bit on IA-64 unsigned value * UCHAR Character. 1 byte unsigned value. */#ifdef _IA64/* * 64-bit type definitions */typedef unsigned char UINT8;typedef unsigned char BOOLEAN;typedef unsigned char UCHAR;typedef unsigned short UINT16;typedef int INT32;typedef unsigned int UINT32;typedef COMPILER_DEPENDENT_UINT64 UINT64;typedef UINT64 NATIVE_UINT;typedef INT64 NATIVE_INT;typedef NATIVE_UINT ACPI_TBLPTR;typedef UINT64 ACPI_IO_ADDRESS;typedef UINT64 ACPI_PHYSICAL_ADDRESS;#define ALIGNED_ADDRESS_BOUNDARY 0x00000008/* (No hardware alignment support in IA64) */#elif _IA16/* * 16-bit type definitions */typedef unsigned char UINT8;typedef unsigned char BOOLEAN;typedef unsigned char UCHAR;typedef unsigned int UINT16;typedef long INT32;typedef int INT16;typedef unsigned long UINT32;typedef struct{ UINT32 Lo; UINT32 Hi;} UINT64;typedef UINT16 NATIVE_UINT;typedef INT16 NATIVE_INT;typedef UINT32 ACPI_TBLPTR;typedef UINT32 ACPI_IO_ADDRESS;typedef void *ACPI_PHYSICAL_ADDRESS;#define ALIGNED_ADDRESS_BOUNDARY 0x00000002#define _HW_ALIGNMENT_SUPPORT/* * (16-bit only) internal integers must be 32-bits, so * 64-bit integers cannot be supported */#define ACPI_NO_INTEGER64_SUPPORT#else/* * 32-bit type definitions (default) */typedef unsigned char UINT8;typedef unsigned char BOOLEAN;typedef unsigned char UCHAR;typedef unsigned short UINT16;typedef int INT32;typedef unsigned int UINT32;typedef COMPILER_DEPENDENT_UINT64 UINT64;typedef UINT32 NATIVE_UINT;typedef INT32 NATIVE_INT;typedef NATIVE_UINT ACPI_TBLPTR;typedef UINT32 ACPI_IO_ADDRESS;typedef UINT64 ACPI_PHYSICAL_ADDRESS;#define ALIGNED_ADDRESS_BOUNDARY 0x00000004#define _HW_ALIGNMENT_SUPPORT#endif/* * Miscellaneous common types */typedef UINT32 UINT32_BIT;typedef NATIVE_UINT ACPI_PTRDIFF;typedef char NATIVE_CHAR;/* * Data type ranges */#define ACPI_UINT8_MAX (UINT8) 0xFF#define ACPI_UINT16_MAX (UINT16) 0xFFFF#define ACPI_UINT32_MAX (UINT32) 0xFFFFFFFF#define ACPI_UINT64_MAX (UINT64) 0xFFFFFFFFFFFFFFFF#ifdef DEFINE_ALTERNATE_TYPES/* * Types used only in translated source */typedef INT32 s32;typedef UINT8 u8;typedef UINT16 u16;typedef UINT32 u32;typedef UINT64 u64;#endif/*! [End] no source code translation !*//* * Useful defines */#ifdef FALSE#undef FALSE#endif#define FALSE (1 == 0)#ifdef TRUE#undef TRUE#endif#define TRUE (1 == 1)#ifndef NULL#define NULL (void *) 0#endif/* * Local datatypes */typedef u32 ACPI_STATUS; /* All ACPI Exceptions */typedef u32 ACPI_NAME; /* 4-s8 ACPI name */typedef char* ACPI_STRING; /* Null terminated ASCII string */typedef void* ACPI_HANDLE; /* Actually a ptr to an Node *//* * Acpi integer width. In ACPI version 1, integers are * 32 bits. In ACPI version 2, integers are 64 bits. * Note that this pertains to the ACPI integer type only, not * other integers used in the implementation of the ACPI CA * subsystem. */#ifdef ACPI_NO_INTEGER64_SUPPORT/* 32-bit integers only, no 64-bit support */typedef u32 ACPI_INTEGER;#define ACPI_INTEGER_MAX ACPI_UINT32_MAX#define ACPI_INTEGER_BIT_SIZE 32#define ACPI_MAX_BCD_VALUE 99999999#define ACPI_MAX_BCD_DIGITS 8#else/* 64-bit integers */typedef UINT64 ACPI_INTEGER;#define ACPI_INTEGER_MAX ACPI_UINT64_MAX#define ACPI_INTEGER_BIT_SIZE 64#define ACPI_MAX_BCD_VALUE 9999999999999999#define ACPI_MAX_BCD_DIGITS 16#endif/* * Constants with special meanings */#define ACPI_ROOT_OBJECT (ACPI_HANDLE)(-1)#define ACPI_FULL_INITIALIZATION 0x00#define ACPI_NO_ADDRESS_SPACE_INIT 0x01#define ACPI_NO_HARDWARE_INIT 0x02#define ACPI_NO_EVENT_INIT 0x04#define ACPI_NO_ACPI_ENABLE 0x08#define ACPI_NO_DEVICE_INIT 0x10#define ACPI_NO_PCI_INIT 0x20#define ACPI_NO_OBJECT_INIT 0x40/* * Sleep state constants */#define ACPI_STATE_S0 (u8) 0#define ACPI_STATE_S1 (u8) 1#define ACPI_STATE_S2 (u8) 2#define ACPI_STATE_S3 (u8) 3#define ACPI_STATE_S4 (u8) 4#define ACPI_STATE_S4_bIOS (u8) 5#define ACPI_STATE_S5 (u8) 6#define ACPI_S_STATES_MAX ACPI_STATE_S5/* * Table types. These values are passed to the table related APIs */typedef u32 ACPI_TABLE_TYPE;#define ACPI_TABLE_RSDP (ACPI_TABLE_TYPE) 0#define ACPI_TABLE_DSDT (ACPI_TABLE_TYPE) 1#define ACPI_TABLE_FADT (ACPI_TABLE_TYPE) 2#define ACPI_TABLE_FACS (ACPI_TABLE_TYPE) 3#define ACPI_TABLE_PSDT (ACPI_TABLE_TYPE) 4#define ACPI_TABLE_SSDT (ACPI_TABLE_TYPE) 5#define ACPI_TABLE_XSDT (ACPI_TABLE_TYPE) 6#define ACPI_TABLE_MAX 6#define NUM_ACPI_TABLES (ACPI_TABLE_MAX+1)/* * Types associated with names. The first group of * values correspond to the definition of the ACPI * Object_type operator (See the ACPI Spec). Therefore, * only add to the first group if the spec changes! * * Types must be kept in sync with the Acpi_ns_properties * and Acpi_ns_type_names arrays */typedef u32 ACPI_OBJECT_TYPE;typedef u8 OBJECT_TYPE_INTERNAL;#define ACPI_TYPE_ANY 0 /* 0x00 */#define ACPI_TYPE_NUMBER 1 /* 0x01 Byte/Word/Dword/Zero/One/Ones */#define ACPI_TYPE_STRING 2 /* 0x02 */#define ACPI_TYPE_BUFFER 3 /* 0x03 */#define ACPI_TYPE_PACKAGE 4 /* 0x04 Byte_const, multiple Data_term/Constant/Super_name */#define ACPI_TYPE_FIELD_UNIT 5 /* 0x05 */#define ACPI_TYPE_DEVICE 6 /* 0x06 Name, multiple Node */#define ACPI_TYPE_EVENT 7 /* 0x07 */#define ACPI_TYPE_METHOD 8 /* 0x08 Name, Byte_const, multiple Code */#define ACPI_TYPE_MUTEX 9 /* 0x09 */#define ACPI_TYPE_REGION 10 /* 0x0A */#define ACPI_TYPE_POWER 11 /* 0x0B Name,Byte_const,Word_const,multi Node */#define ACPI_TYPE_PROCESSOR 12 /* 0x0C Name,Byte_const,DWord_const,Byte_const,multi Nm_o */#define ACPI_TYPE_THERMAL 13 /* 0x0D Name, multiple Node */#define ACPI_TYPE_BUFFER_FIELD 14 /* 0x0E */#define ACPI_TYPE_DDB_HANDLE 15 /* 0x0F */#define ACPI_TYPE_DEBUG_OBJECT 16 /* 0x10 */#define ACPI_TYPE_MAX 16/* * This section contains object types that do not relate to the ACPI Object_type operator. * They are used for various internal purposes only. If new predefined ACPI_TYPEs are * added (via the ACPI specification), these internal types must move upwards. * Also, values exceeding the largest official ACPI Object_type must not overlap with * defined AML opcodes. */#define INTERNAL_TYPE_BEGIN 17#define INTERNAL_TYPE_DEF_FIELD 17 /* 0x11 */#define INTERNAL_TYPE_BANK_FIELD 18 /* 0x12 */#define INTERNAL_TYPE_INDEX_FIELD 19 /* 0x13 */#define INTERNAL_TYPE_REFERENCE 20 /* 0x14 Arg#, Local#, Name, Debug; used only in descriptors */#define INTERNAL_TYPE_ALIAS 21 /* 0x15 */#define INTERNAL_TYPE_NOTIFY 22 /* 0x16 */#define INTERNAL_TYPE_ADDRESS_HANDLER 23 /* 0x17 */#define INTERNAL_TYPE_RESOURCE 24 /* 0x18 */#define INTERNAL_TYPE_NODE_MAX 24/* These are pseudo-types because there are never any namespace nodes with these types */#define INTERNAL_TYPE_DEF_FIELD_DEFN 25 /* 0x19 Name, Byte_const, multiple Field_element */#define INTERNAL_TYPE_BANK_FIELD_DEFN 26 /* 0x1A 2 Name,DWord_const,Byte_const,multi Field_element */#define INTERNAL_TYPE_INDEX_FIELD_DEFN 27 /* 0x1B 2 Name, Byte_const, multiple Field_element */#define INTERNAL_TYPE_IF 28 /* 0x1C Op_code, multiple Code */#define INTERNAL_TYPE_ELSE 29 /* 0x1D multiple Code */#define INTERNAL_TYPE_WHILE 30 /* 0x1E Op_code, multiple Code */#define INTERNAL_TYPE_SCOPE 31 /* 0x1F Name, multiple Node */#define INTERNAL_TYPE_DEF_ANY 32 /* 0x20 type is Any, suppress search of enclosing scopes */#define INTERNAL_TYPE_EXTRA 33 /* 0x21 */#define INTERNAL_TYPE_MAX 33#define INTERNAL_TYPE_INVALID 34#define ACPI_TYPE_NOT_FOUND 0xFF/* * Acpi_event Types: * ------------ * Fixed & general purpose... */typedef u32 ACPI_EVENT_TYPE;#define ACPI_EVENT_FIXED (ACPI_EVENT_TYPE) 0#define ACPI_EVENT_GPE (ACPI_EVENT_TYPE) 1/* * Fixed events */#define ACPI_EVENT_PMTIMER (ACPI_EVENT_TYPE) 0 /* * There's no bus master event so index 1 is used for IRQ's that are not * handled by the SCI handler */#define ACPI_EVENT_NOT_USED (ACPI_EVENT_TYPE) 1#define ACPI_EVENT_GLOBAL (ACPI_EVENT_TYPE) 2#define ACPI_EVENT_POWER_BUTTON (ACPI_EVENT_TYPE) 3#define ACPI_EVENT_SLEEP_BUTTON (ACPI_EVENT_TYPE) 4#define ACPI_EVENT_RTC (ACPI_EVENT_TYPE) 5#define ACPI_EVENT_GENERAL (ACPI_EVENT_TYPE) 6#define ACPI_EVENT_MAX 6#define NUM_FIXED_EVENTS (ACPI_EVENT_TYPE) 7#define ACPI_GPE_INVALID 0xFF#define ACPI_GPE_MAX 0xFF#define NUM_GPE 256#define ACPI_EVENT_LEVEL_TRIGGERED (ACPI_EVENT_TYPE) 1#define ACPI_EVENT_EDGE_TRIGGERED (ACPI_EVENT_TYPE) 2/* * Acpi_event Status: * ------------- * The encoding of ACPI_EVENT_STATUS is illustrated below. * Note that a set bit (1) indicates the property is TRUE * (e.g. if bit 0 is set then the event is enabled). * +---------------+-+-+ * | Bits 31:2 |1|0| * +---------------+-+-+ * | | | * | | +- Enabled? * | +--- Set? * +----------- <Reserved> */typedef u32 ACPI_EVENT_STATUS;#define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00#define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01#define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x02/* Notify types */#define ACPI_SYSTEM_NOTIFY 0#define ACPI_DEVICE_NOTIFY 1#define ACPI_MAX_NOTIFY_HANDLER_TYPE 1#define MAX_SYS_NOTIFY 0x7f/* Address Space (Operation Region) Types */typedef u8 ACPI_ADDRESS_SPACE_TYPE;#define ADDRESS_SPACE_SYSTEM_MEMORY (ACPI_ADDRESS_SPACE_TYPE) 0#define ADDRESS_SPACE_SYSTEM_IO (ACPI_ADDRESS_SPACE_TYPE) 1#define ADDRESS_SPACE_PCI_CONFIG (ACPI_ADDRESS_SPACE_TYPE) 2#define ADDRESS_SPACE_EC (ACPI_ADDRESS_SPACE_TYPE) 3#define ADDRESS_SPACE_SMBUS (ACPI_ADDRESS_SPACE_TYPE) 4#define ADDRESS_SPACE_CMOS (ACPI_ADDRESS_SPACE_TYPE) 5#define ADDRESS_SPACE_PCI_BAR_TARGET (ACPI_ADDRESS_SPACE_TYPE) 6/* * External ACPI object definition */typedef union acpi_obj{ ACPI_OBJECT_TYPE type; /* See definition of Acpi_ns_type for values */ struct { ACPI_OBJECT_TYPE type; ACPI_INTEGER value; /* The actual number */ } number; struct { ACPI_OBJECT_TYPE type; u32 length; /* # of bytes in string, excluding trailing null */ NATIVE_CHAR *pointer; /* points to the string value */ } string; struct { ACPI_OBJECT_TYPE type; u32 length; /* # of bytes in buffer */ u8 *pointer; /* points to the buffer */ } buffer; struct { ACPI_OBJECT_TYPE type; u32 fill1; ACPI_HANDLE handle; /* object reference */ } reference; struct { ACPI_OBJECT_TYPE type; u32 count; /* # of elements in package */ union acpi_obj *elements; /* Pointer to an array of ACPI_OBJECTs */ } package; struct { ACPI_OBJECT_TYPE type; u32 proc_id; u32 pblk_address; u32 pblk_length; } processor; struct { ACPI_OBJECT_TYPE type; u32 system_level; u32 resource_order; } power_resource;} ACPI_OBJECT, *PACPI_OBJECT;/* * List of objects, used as a parameter list for control method evaluation */typedef struct acpi_obj_list{ u32 count; ACPI_OBJECT *pointer;} ACPI_OBJECT_LIST, *PACPI_OBJECT_LIST;/* * Miscellaneous common Data Structures used by the interfaces */typedef struct{ u32 length; /* Length in bytes of the buffer */ void *pointer; /* pointer to buffer */} ACPI_BUFFER;/* * Name_type for Acpi_get_name */#define ACPI_FULL_PATHNAME 0#define ACPI_SINGLE_NAME 1#define ACPI_NAME_TYPE_MAX 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -