📄 actypes.h
字号:
/****************************************************************************** * * Name: actypes.h - Common data types for the entire ACPI subsystem * $Revision: 193 $ * *****************************************************************************//* * Copyright (C) 2000, 2001 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 */#define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */#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 char *ACPI_PHYSICAL_ADDRESS;#define ALIGNED_ADDRESS_BOUNDARY 0x00000002#define _HW_ALIGNMENT_SUPPORT#define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide *//* * (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-byte ACPI name */typedef char* acpi_string; /* Null terminated ASCII string */typedef void* acpi_handle; /* Actually a ptr to an Node */typedef struct{ u32 lo; u32 hi;} uint64_struct;typedef union{ u64 full; uint64_struct part;} uint64_overlay;/* * 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#define ACPI_MAX_DECIMAL_DIGITS 10#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 32-bit divide */#else/* 64-bit integers */typedef u64 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#define ACPI_MAX_DECIMAL_DIGITS 19#ifdef _IA64#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */#endif#endif/* * Constants with special meanings */#define ACPI_ROOT_OBJECT (acpi_handle)(-1)/* * Initialization sequence */#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_OBJECT_INIT 0x20/* * Initialization state */#define ACPI_INITIALIZED_OK 0x01/* * Power state values */#define ACPI_STATE_UNKNOWN (u8) 0xFF#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_S5 (u8) 5#define ACPI_S_STATES_MAX ACPI_STATE_S5#define ACPI_S_STATE_COUNT 6#define ACPI_STATE_D0 (u8) 0#define ACPI_STATE_D1 (u8) 1#define ACPI_STATE_D2 (u8) 2#define ACPI_STATE_D3 (u8) 3#define ACPI_D_STATES_MAX ACPI_STATE_D3#define ACPI_D_STATE_COUNT 4/* * Standard notify values */#define ACPI_NOTIFY_BUS_CHECK (u8) 0#define ACPI_NOTIFY_DEVICE_CHECK (u8) 1#define ACPI_NOTIFY_DEVICE_WAKE (u8) 2#define ACPI_NOTIFY_EJECT_REQUEST (u8) 3#define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (u8) 4#define ACPI_NOTIFY_FREQUENCY_MISMATCH (u8) 5#define ACPI_NOTIFY_BUS_MODE_MISMATCH (u8) 6#define ACPI_NOTIFY_POWER_FAULT (u8) 7/* * 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 acpi_object_type8;#define ACPI_TYPE_ANY 0 /* 0x00 */#define ACPI_TYPE_INTEGER 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_REGION_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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -