⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actypes.h

📁 xen 3.2.2 源码
💻 H
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************** * * 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 + -