📄 actypes.h
字号:
/****************************************************************************** * * Name: actypes.h - Common data types for the entire ACPI subsystem * *****************************************************************************//* * Copyright (C) 2000 - 2005, R. Byron Moore * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions, and the following disclaimer, * without modification. * 2. Redistributions in binary form must reproduce at minimum a disclaimer * substantially similar to the "NO WARRANTY" disclaimer below * ("Disclaimer") and any redistribution must be conditioned upon * including a substantially similar Disclaimer requirement for further * binary redistribution. * 3. Neither the names of the above-listed copyright holders nor the names * of any contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * NO WARRANTY * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. */#ifndef __ACTYPES_H__#define __ACTYPES_H__/*! [Begin] no source code translation (keep the typedefs) *//* * Data type ranges * Note: These macros are designed to be compiler independent as well as * working around problems that some 32-bit compilers have with 64-bit * constants. */#define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */#define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */#define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */#define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */#define ACPI_ASCII_MAX 0x7F#ifdef DEFINE_ALTERNATE_TYPES/* * Types used only in translated source, defined here to enable * cross-platform compilation only. */typedef int s32;typedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;typedef COMPILER_DEPENDENT_UINT64 u64;#endif/* * Data types - Fixed across all compilation models (16/32/64) * * BOOLEAN Logical Boolean. * 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 * ACPI_NATIVE_INT 32-bit on IA-32, 64-bit on IA-64 signed value * ACPI_NATIVE_UINT 32-bit on IA-32, 64-bit on IA-64 unsigned value */#ifndef ACPI_MACHINE_WIDTH#error ACPI_MACHINE_WIDTH not defined#endif#if ACPI_MACHINE_WIDTH == 64/*! [Begin] no source code translation (keep the typedefs) *//* * 64-bit type definitions */typedef unsigned char UINT8;typedef unsigned char BOOLEAN;typedef unsigned short UINT16;typedef int INT32;typedef unsigned int UINT32;typedef COMPILER_DEPENDENT_INT64 INT64;typedef COMPILER_DEPENDENT_UINT64 UINT64;/*! [End] no source code translation !*/typedef s64 acpi_native_int;typedef u64 acpi_native_uint;typedef u64 acpi_table_ptr;typedef u64 acpi_io_address;typedef u64 acpi_physical_address;typedef u64 acpi_size;#define ALIGNED_ADDRESS_BOUNDARY 0x00000008 /* No hardware alignment support in IA64 */#define ACPI_USE_NATIVE_DIVIDE /* Native 64-bit integer support */#define ACPI_MAX_PTR ACPI_UINT64_MAX#define ACPI_SIZE_MAX ACPI_UINT64_MAX#elif ACPI_MACHINE_WIDTH == 16/*! [Begin] no source code translation (keep the typedefs) *//* * 16-bit type definitions */typedef unsigned char UINT8;typedef unsigned char BOOLEAN;typedef unsigned int UINT16;typedef long INT32;typedef int INT16;typedef unsigned long UINT32;struct{ UINT32 Lo; UINT32 Hi;};/*! [End] no source code translation !*/typedef u16 acpi_native_uint;typedef s16 acpi_native_int;typedef u32 acpi_table_ptr;typedef u32 acpi_io_address;typedef char *acpi_physical_address;typedef u16 acpi_size;#define ALIGNED_ADDRESS_BOUNDARY 0x00000002#define ACPI_MISALIGNED_TRANSFERS#define ACPI_USE_NATIVE_DIVIDE /* No 64-bit integers, ok to use native divide */#define ACPI_MAX_PTR ACPI_UINT16_MAX#define ACPI_SIZE_MAX ACPI_UINT16_MAX/* * (16-bit only) internal integers must be 32-bits, so * 64-bit integers cannot be supported */#define ACPI_NO_INTEGER64_SUPPORT#elif ACPI_MACHINE_WIDTH == 32/*! [Begin] no source code translation (keep the typedefs) *//* * 32-bit type definitions (default) */typedef unsigned char UINT8;typedef unsigned char BOOLEAN;typedef unsigned short UINT16;typedef int INT32;typedef unsigned int UINT32;typedef COMPILER_DEPENDENT_INT64 INT64;typedef COMPILER_DEPENDENT_UINT64 UINT64;/*! [End] no source code translation !*/typedef s32 acpi_native_int;typedef u32 acpi_native_uint;typedef u64 acpi_table_ptr;typedef u32 acpi_io_address;typedef u64 acpi_physical_address;typedef u32 acpi_size;#define ALIGNED_ADDRESS_BOUNDARY 0x00000004#define ACPI_MISALIGNED_TRANSFERS#define ACPI_MAX_PTR ACPI_UINT32_MAX#define ACPI_SIZE_MAX ACPI_UINT32_MAX#else#error unknown ACPI_MACHINE_WIDTH#endif/* * Miscellaneous common types */typedef u16 UINT16_BIT;typedef u32 UINT32_BIT;typedef acpi_native_uint ACPI_PTRDIFF;/* * Pointer overlays to avoid lots of typecasting for * code that accepts both physical and logical pointers. */union acpi_pointers{ acpi_physical_address physical; void *logical; acpi_table_ptr value;};struct acpi_pointer{ u32 pointer_type; union acpi_pointers pointer;};/* pointer_types for above */#define ACPI_PHYSICAL_POINTER 0x01#define ACPI_LOGICAL_POINTER 0x02/* Processor mode */#define ACPI_PHYSICAL_ADDRESSING 0x04#define ACPI_LOGICAL_ADDRESSING 0x08#define ACPI_MEMORY_MODE 0x0C#define ACPI_PHYSMODE_PHYSPTR ACPI_PHYSICAL_ADDRESSING | ACPI_PHYSICAL_POINTER#define ACPI_LOGMODE_PHYSPTR ACPI_LOGICAL_ADDRESSING | ACPI_PHYSICAL_POINTER#define ACPI_LOGMODE_LOGPTR ACPI_LOGICAL_ADDRESSING | ACPI_LOGICAL_POINTER/* * 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 */struct uint64_struct{ u32 lo; u32 hi;};union uint64_overlay{ u64 full; struct uint64_struct part;};struct uint32_struct{ u32 lo; u32 hi;};/* * 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_DECIMAL_DIGITS 10 /* 2^32 = 4,294,967,296 */#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_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */#if ACPI_MACHINE_WIDTH == 64#define ACPI_USE_NATIVE_DIVIDE /* Use compiler native 64-bit divide */#endif#endif#define ACPI_MAX64_DECIMAL_DIGITS 20#define ACPI_MAX32_DECIMAL_DIGITS 10#define ACPI_MAX16_DECIMAL_DIGITS 5#define ACPI_MAX8_DECIMAL_DIGITS 3/* * Constants with special meanings */#define ACPI_ROOT_OBJECT (acpi_handle) ACPI_PTR_ADD (char, NULL, ACPI_MAX_PTR)/* * 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_HANDLER_INIT 0x08#define ACPI_NO_ACPI_ENABLE 0x10#define ACPI_NO_DEVICE_INIT 0x20#define ACPI_NO_OBJECT_INIT 0x40/* * 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#define ACPI_STATE_C0 (u8) 0#define ACPI_STATE_C1 (u8) 1#define ACPI_STATE_C2 (u8) 2#define ACPI_STATE_C3 (u8) 3#define ACPI_C_STATES_MAX ACPI_STATE_C3#define ACPI_C_STATE_COUNT 4/* * Sleep type invalid value */#define ACPI_SLEEP_TYPE_MAX 0x7#define ACPI_SLEEP_TYPE_INVALID 0xFF/* * 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_TABLE_TYPES (ACPI_TABLE_MAX+1)/* * Types associated with ACPI names and objects. The first group of * values (up to ACPI_TYPE_EXTERNAL_MAX) 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. * * NOTE: Types must be kept in sync with the global acpi_ns_properties * and acpi_ns_type_names arrays. */typedef u32 acpi_object_type;#define ACPI_TYPE_ANY 0x00#define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */#define ACPI_TYPE_STRING 0x02#define ACPI_TYPE_BUFFER 0x03#define ACPI_TYPE_PACKAGE 0x04 /* byte_const, multiple data_term/Constant/super_name */#define ACPI_TYPE_FIELD_UNIT 0x05#define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */#define ACPI_TYPE_EVENT 0x07#define ACPI_TYPE_METHOD 0x08 /* Name, byte_const, multiple Code */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -