Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenacobject.h
Go to the documentation of this file.
00001 00002 /****************************************************************************** 00003 * 00004 * Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only) 00005 * 00006 *****************************************************************************/ 00007 00008 /****************************************************************************** 00009 * 00010 * 1. Copyright Notice 00011 * 00012 * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp. 00013 * All rights reserved. 00014 * 00015 * 2. License 00016 * 00017 * 2.1. This is your license from Intel Corp. under its intellectual property 00018 * rights. You may have additional license terms from the party that provided 00019 * you this software, covering your right to use that party's intellectual 00020 * property rights. 00021 * 00022 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 00023 * copy of the source code appearing in this file ("Covered Code") an 00024 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 00025 * base code distributed originally by Intel ("Original Intel Code") to copy, 00026 * make derivatives, distribute, use and display any portion of the Covered 00027 * Code in any form, with the right to sublicense such rights; and 00028 * 00029 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 00030 * license (with the right to sublicense), under only those claims of Intel 00031 * patents that are infringed by the Original Intel Code, to make, use, sell, 00032 * offer to sell, and import the Covered Code and derivative works thereof 00033 * solely to the minimum extent necessary to exercise the above copyright 00034 * license, and in no event shall the patent license extend to any additions 00035 * to or modifications of the Original Intel Code. No other license or right 00036 * is granted directly or by implication, estoppel or otherwise; 00037 * 00038 * The above copyright and patent license is granted only if the following 00039 * conditions are met: 00040 * 00041 * 3. Conditions 00042 * 00043 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 00044 * Redistribution of source code of any substantial portion of the Covered 00045 * Code or modification with rights to further distribute source must include 00046 * the above Copyright Notice, the above License, this list of Conditions, 00047 * and the following Disclaimer and Export Compliance provision. In addition, 00048 * Licensee must cause all Covered Code to which Licensee contributes to 00049 * contain a file documenting the changes Licensee made to create that Covered 00050 * Code and the date of any change. Licensee must include in that file the 00051 * documentation of any changes made by any predecessor Licensee. Licensee 00052 * must include a prominent statement that the modification is derived, 00053 * directly or indirectly, from Original Intel Code. 00054 * 00055 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 00056 * Redistribution of source code of any substantial portion of the Covered 00057 * Code or modification without rights to further distribute source must 00058 * include the following Disclaimer and Export Compliance provision in the 00059 * documentation and/or other materials provided with distribution. In 00060 * addition, Licensee may not authorize further sublicense of source of any 00061 * portion of the Covered Code, and must include terms to the effect that the 00062 * license from Licensee to its licensee is limited to the intellectual 00063 * property embodied in the software Licensee provides to its licensee, and 00064 * not to intellectual property embodied in modifications its licensee may 00065 * make. 00066 * 00067 * 3.3. Redistribution of Executable. Redistribution in executable form of any 00068 * substantial portion of the Covered Code or modification must reproduce the 00069 * above Copyright Notice, and the following Disclaimer and Export Compliance 00070 * provision in the documentation and/or other materials provided with the 00071 * distribution. 00072 * 00073 * 3.4. Intel retains all right, title, and interest in and to the Original 00074 * Intel Code. 00075 * 00076 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 00077 * Intel shall be used in advertising or otherwise to promote the sale, use or 00078 * other dealings in products derived from or relating to the Covered Code 00079 * without prior written authorization from Intel. 00080 * 00081 * 4. Disclaimer and Export Compliance 00082 * 00083 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 00084 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 00085 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 00086 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 00087 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 00088 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 00089 * PARTICULAR PURPOSE. 00090 * 00091 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 00092 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 00093 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 00094 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 00095 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 00096 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 00097 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 00098 * LIMITED REMEDY. 00099 * 00100 * 4.3. Licensee shall not export, either directly or indirectly, any of this 00101 * software or system incorporating such software without first obtaining any 00102 * required license or other approval from the U. S. Department of Commerce or 00103 * any other agency or department of the United States Government. In the 00104 * event Licensee exports any such software from the United States or 00105 * re-exports any such software from a foreign destination, Licensee shall 00106 * ensure that the distribution and export/re-export of the software is in 00107 * compliance with all laws, regulations, orders, or other restrictions of the 00108 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 00109 * any of its subsidiaries will export/re-export any technical data, process, 00110 * software, or service, directly or indirectly, to any country for which the 00111 * United States government or any agency thereof requires an export license, 00112 * other governmental approval, or letter of assurance, without first obtaining 00113 * such license, approval or letter. 00114 * 00115 *****************************************************************************/ 00116 00117 #ifndef _ACOBJECT_H 00118 #define _ACOBJECT_H 00119 00120 /* acpisrc:StructDefs -- for acpisrc conversion */ 00121 00122 00123 /* 00124 * The ACPI_OPERAND_OBJECT is used to pass AML operands from the dispatcher 00125 * to the interpreter, and to keep track of the various handlers such as 00126 * address space handlers and notify handlers. The object is a constant 00127 * size in order to allow it to be cached and reused. 00128 * 00129 * Note: The object is optimized to be aligned and will not work if it is 00130 * byte-packed. 00131 */ 00132 #if ACPI_MACHINE_WIDTH == 64 00133 #pragma pack(8) 00134 #else 00135 #pragma pack(4) 00136 #endif 00137 00138 /******************************************************************************* 00139 * 00140 * Common Descriptors 00141 * 00142 ******************************************************************************/ 00143 00144 /* 00145 * Common area for all objects. 00146 * 00147 * DescriptorType is used to differentiate between internal descriptors, and 00148 * must be in the same place across all descriptors 00149 * 00150 * Note: The DescriptorType and Type fields must appear in the identical 00151 * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT 00152 * structures. 00153 */ 00154 #define ACPI_OBJECT_COMMON_HEADER \ 00155 union acpi_operand_object *NextObject; /* Objects linked to parent NS node */\ 00156 UINT8 DescriptorType; /* To differentiate various internal objs */\ 00157 UINT8 Type; /* ACPI_OBJECT_TYPE */\ 00158 UINT16 ReferenceCount; /* For object deletion management */\ 00159 UINT8 Flags; 00160 /* 00161 * Note: There are 3 bytes available here before the 00162 * next natural alignment boundary (for both 32/64 cases) 00163 */ 00164 00165 /* Values for Flag byte above */ 00166 00167 #define AOPOBJ_AML_CONSTANT 0x01 /* Integer is an AML constant */ 00168 #define AOPOBJ_STATIC_POINTER 0x02 /* Data is part of an ACPI table, don't delete */ 00169 #define AOPOBJ_DATA_VALID 0x04 /* Object is intialized and data is valid */ 00170 #define AOPOBJ_OBJECT_INITIALIZED 0x08 /* Region is initialized, _REG was run */ 00171 #define AOPOBJ_SETUP_COMPLETE 0x10 /* Region setup is complete */ 00172 #define AOPOBJ_INVALID 0x20 /* Host OS won't allow a Region address */ 00173 00174 00175 /****************************************************************************** 00176 * 00177 * Basic data types 00178 * 00179 *****************************************************************************/ 00180 00181 typedef struct acpi_object_common 00182 { 00183 ACPI_OBJECT_COMMON_HEADER 00184 00185 } ACPI_OBJECT_COMMON; 00186 00187 00188 typedef struct acpi_object_integer 00189 { 00190 ACPI_OBJECT_COMMON_HEADER 00191 UINT8 Fill[3]; /* Prevent warning on some compilers */ 00192 UINT64 Value; 00193 00194 } ACPI_OBJECT_INTEGER; 00195 00196 00197 /* 00198 * Note: The String and Buffer object must be identical through the Pointer 00199 * and length elements. There is code that depends on this. 00200 * 00201 * Fields common to both Strings and Buffers 00202 */ 00203 #define ACPI_COMMON_BUFFER_INFO(_Type) \ 00204 _Type *Pointer; \ 00205 UINT32 Length; 00206 00207 00208 typedef struct acpi_object_string /* Null terminated, ASCII characters only */ 00209 { 00210 ACPI_OBJECT_COMMON_HEADER 00211 ACPI_COMMON_BUFFER_INFO (char) /* String in AML stream or allocated string */ 00212 00213 } ACPI_OBJECT_STRING; 00214 00215 00216 typedef struct acpi_object_buffer 00217 { 00218 ACPI_OBJECT_COMMON_HEADER 00219 ACPI_COMMON_BUFFER_INFO (UINT8) /* Buffer in AML stream or allocated buffer */ 00220 UINT32 AmlLength; 00221 UINT8 *AmlStart; 00222 ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */ 00223 00224 } ACPI_OBJECT_BUFFER; 00225 00226 00227 typedef struct acpi_object_package 00228 { 00229 ACPI_OBJECT_COMMON_HEADER 00230 ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */ 00231 union acpi_operand_object **Elements; /* Array of pointers to AcpiObjects */ 00232 UINT8 *AmlStart; 00233 UINT32 AmlLength; 00234 UINT32 Count; /* # of elements in package */ 00235 00236 } ACPI_OBJECT_PACKAGE; 00237 00238 00239 /****************************************************************************** 00240 * 00241 * Complex data types 00242 * 00243 *****************************************************************************/ 00244 00245 typedef struct acpi_object_event 00246 { 00247 ACPI_OBJECT_COMMON_HEADER 00248 ACPI_SEMAPHORE OsSemaphore; /* Actual OS synchronization object */ 00249 00250 } ACPI_OBJECT_EVENT; 00251 00252 00253 typedef struct acpi_object_mutex 00254 { 00255 ACPI_OBJECT_COMMON_HEADER 00256 UINT8 SyncLevel; /* 0-15, specified in Mutex() call */ 00257 UINT16 AcquisitionDepth; /* Allow multiple Acquires, same thread */ 00258 ACPI_MUTEX OsMutex; /* Actual OS synchronization object */ 00259 ACPI_THREAD_ID ThreadId; /* Current owner of the mutex */ 00260 struct acpi_thread_state *OwnerThread; /* Current owner of the mutex */ 00261 union acpi_operand_object *Prev; /* Link for list of acquired mutexes */ 00262 union acpi_operand_object *Next; /* Link for list of acquired mutexes */ 00263 ACPI_NAMESPACE_NODE *Node; /* Containing namespace node */ 00264 UINT8 OriginalSyncLevel; /* Owner's original sync level (0-15) */ 00265 00266 } ACPI_OBJECT_MUTEX; 00267 00268 00269 typedef struct acpi_object_region 00270 { 00271 ACPI_OBJECT_COMMON_HEADER 00272 UINT8 SpaceId; 00273 ACPI_NAMESPACE_NODE *Node; /* Containing namespace node */ 00274 union acpi_operand_object *Handler; /* Handler for region access */ 00275 union acpi_operand_object *Next; 00276 ACPI_PHYSICAL_ADDRESS Address; 00277 UINT32 Length; 00278 00279 } ACPI_OBJECT_REGION; 00280 00281 00282 typedef struct acpi_object_method 00283 { 00284 ACPI_OBJECT_COMMON_HEADER 00285 UINT8 InfoFlags; 00286 UINT8 ParamCount; 00287 UINT8 SyncLevel; 00288 union acpi_operand_object *Mutex; 00289 UINT8 *AmlStart; 00290 union 00291 { 00292 ACPI_INTERNAL_METHOD Implementation; 00293 union acpi_operand_object *Handler; 00294 } Dispatch; 00295 00296 UINT32 AmlLength; 00297 UINT8 ThreadCount; 00298 ACPI_OWNER_ID OwnerId; 00299 00300 } ACPI_OBJECT_METHOD; 00301 00302 /* Flags for InfoFlags field above */ 00303 00304 #define ACPI_METHOD_MODULE_LEVEL 0x01 /* Method is actually module-level code */ 00305 #define ACPI_METHOD_INTERNAL_ONLY 0x02 /* Method is implemented internally (_OSI) */ 00306 #define ACPI_METHOD_SERIALIZED 0x04 /* Method is serialized */ 00307 #define ACPI_METHOD_SERIALIZED_PENDING 0x08 /* Method is to be marked serialized */ 00308 #define ACPI_METHOD_MODIFIED_NAMESPACE 0x10 /* Method modified the namespace */ 00309 00310 00311 /****************************************************************************** 00312 * 00313 * Objects that can be notified. All share a common NotifyInfo area. 00314 * 00315 *****************************************************************************/ 00316 00317 /* 00318 * Common fields for objects that support ASL notifications 00319 */ 00320 #define ACPI_COMMON_NOTIFY_INFO \ 00321 union acpi_operand_object *SystemNotify; /* Handler for system notifies */\ 00322 union acpi_operand_object *DeviceNotify; /* Handler for driver notifies */\ 00323 union acpi_operand_object *Handler; /* Handler for Address space */ 00324 00325 00326 typedef struct acpi_object_notify_common /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */ 00327 { 00328 ACPI_OBJECT_COMMON_HEADER 00329 ACPI_COMMON_NOTIFY_INFO 00330 00331 } ACPI_OBJECT_NOTIFY_COMMON; 00332 00333 00334 typedef struct acpi_object_device 00335 { 00336 ACPI_OBJECT_COMMON_HEADER 00337 ACPI_COMMON_NOTIFY_INFO 00338 ACPI_GPE_BLOCK_INFO *GpeBlock; 00339 00340 } ACPI_OBJECT_DEVICE; 00341 00342 00343 typedef struct acpi_object_power_resource 00344 { 00345 ACPI_OBJECT_COMMON_HEADER 00346 ACPI_COMMON_NOTIFY_INFO 00347 UINT32 SystemLevel; 00348 UINT32 ResourceOrder; 00349 00350 } ACPI_OBJECT_POWER_RESOURCE; 00351 00352 00353 typedef struct acpi_object_processor 00354 { 00355 ACPI_OBJECT_COMMON_HEADER 00356 00357 /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */ 00358 00359 UINT8 ProcId; 00360 UINT8 Length; 00361 ACPI_COMMON_NOTIFY_INFO 00362 ACPI_IO_ADDRESS Address; 00363 00364 } ACPI_OBJECT_PROCESSOR; 00365 00366 00367 typedef struct acpi_object_thermal_zone 00368 { 00369 ACPI_OBJECT_COMMON_HEADER 00370 ACPI_COMMON_NOTIFY_INFO 00371 00372 } ACPI_OBJECT_THERMAL_ZONE; 00373 00374 00375 /****************************************************************************** 00376 * 00377 * Fields. All share a common header/info field. 00378 * 00379 *****************************************************************************/ 00380 00381 /* 00382 * Common bitfield for the field objects 00383 * "Field Datum" -- a datum from the actual field object 00384 * "Buffer Datum" -- a datum from a user buffer, read from or to be written to the field 00385 */ 00386 #define ACPI_COMMON_FIELD_INFO \ 00387 UINT8 FieldFlags; /* Access, update, and lock bits */\ 00388 UINT8 Attribute; /* From AccessAs keyword */\ 00389 UINT8 AccessByteWidth; /* Read/Write size in bytes */\ 00390 ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */\ 00391 UINT32 BitLength; /* Length of field in bits */\ 00392 UINT32 BaseByteOffset; /* Byte offset within containing object */\ 00393 UINT32 Value; /* Value to store into the Bank or Index register */\ 00394 UINT8 StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\ 00395 00396 00397 typedef struct acpi_object_field_common /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */ 00398 { 00399 ACPI_OBJECT_COMMON_HEADER 00400 ACPI_COMMON_FIELD_INFO 00401 union acpi_operand_object *RegionObj; /* Parent Operation Region object (REGION/BANK fields only) */ 00402 00403 } ACPI_OBJECT_FIELD_COMMON; 00404 00405 00406 typedef struct acpi_object_region_field 00407 { 00408 ACPI_OBJECT_COMMON_HEADER 00409 ACPI_COMMON_FIELD_INFO 00410 union acpi_operand_object *RegionObj; /* Containing OpRegion object */ 00411 00412 } ACPI_OBJECT_REGION_FIELD; 00413 00414 00415 typedef struct acpi_object_bank_field 00416 { 00417 ACPI_OBJECT_COMMON_HEADER 00418 ACPI_COMMON_FIELD_INFO 00419 union acpi_operand_object *RegionObj; /* Containing OpRegion object */ 00420 union acpi_operand_object *BankObj; /* BankSelect Register object */ 00421 00422 } ACPI_OBJECT_BANK_FIELD; 00423 00424 00425 typedef struct acpi_object_index_field 00426 { 00427 ACPI_OBJECT_COMMON_HEADER 00428 ACPI_COMMON_FIELD_INFO 00429 00430 /* 00431 * No "RegionObj" pointer needed since the Index and Data registers 00432 * are each field definitions unto themselves. 00433 */ 00434 union acpi_operand_object *IndexObj; /* Index register */ 00435 union acpi_operand_object *DataObj; /* Data register */ 00436 00437 } ACPI_OBJECT_INDEX_FIELD; 00438 00439 00440 /* The BufferField is different in that it is part of a Buffer, not an OpRegion */ 00441 00442 typedef struct acpi_object_buffer_field 00443 { 00444 ACPI_OBJECT_COMMON_HEADER 00445 ACPI_COMMON_FIELD_INFO 00446 union acpi_operand_object *BufferObj; /* Containing Buffer object */ 00447 00448 } ACPI_OBJECT_BUFFER_FIELD; 00449 00450 00451 /****************************************************************************** 00452 * 00453 * Objects for handlers 00454 * 00455 *****************************************************************************/ 00456 00457 typedef struct acpi_object_notify_handler 00458 { 00459 ACPI_OBJECT_COMMON_HEADER 00460 ACPI_NAMESPACE_NODE *Node; /* Parent device */ 00461 ACPI_NOTIFY_HANDLER Handler; 00462 void *Context; 00463 00464 } ACPI_OBJECT_NOTIFY_HANDLER; 00465 00466 00467 typedef struct acpi_object_addr_handler 00468 { 00469 ACPI_OBJECT_COMMON_HEADER 00470 UINT8 SpaceId; 00471 UINT8 HandlerFlags; 00472 ACPI_ADR_SPACE_HANDLER Handler; 00473 ACPI_NAMESPACE_NODE *Node; /* Parent device */ 00474 void *Context; 00475 ACPI_ADR_SPACE_SETUP Setup; 00476 union acpi_operand_object *RegionList; /* regions using this handler */ 00477 union acpi_operand_object *Next; 00478 00479 } ACPI_OBJECT_ADDR_HANDLER; 00480 00481 /* Flags for address handler (HandlerFlags) */ 00482 00483 #define ACPI_ADDR_HANDLER_DEFAULT_INSTALLED 0x01 00484 00485 00486 /****************************************************************************** 00487 * 00488 * Special internal objects 00489 * 00490 *****************************************************************************/ 00491 00492 /* 00493 * The Reference object is used for these opcodes: 00494 * Arg[0-6], Local[0-7], IndexOp, NameOp, RefOfOp, LoadOp, LoadTableOp, DebugOp 00495 * The Reference.Class differentiates these types. 00496 */ 00497 typedef struct acpi_object_reference 00498 { 00499 ACPI_OBJECT_COMMON_HEADER 00500 UINT8 Class; /* Reference Class */ 00501 UINT8 TargetType; /* Used for Index Op */ 00502 UINT8 Reserved; 00503 void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */ 00504 ACPI_NAMESPACE_NODE *Node; /* RefOf or Namepath */ 00505 union acpi_operand_object **Where; /* Target of Index */ 00506 UINT32 Value; /* Used for Local/Arg/Index/DdbHandle */ 00507 00508 } ACPI_OBJECT_REFERENCE; 00509 00510 /* Values for Reference.Class above */ 00511 00512 typedef enum 00513 { 00514 ACPI_REFCLASS_LOCAL = 0, /* Method local */ 00515 ACPI_REFCLASS_ARG = 1, /* Method argument */ 00516 ACPI_REFCLASS_REFOF = 2, /* Result of RefOf() TBD: Split to Ref/Node and Ref/OperandObj? */ 00517 ACPI_REFCLASS_INDEX = 3, /* Result of Index() */ 00518 ACPI_REFCLASS_TABLE = 4, /* DdbHandle - Load(), LoadTable() */ 00519 ACPI_REFCLASS_NAME = 5, /* Reference to a named object */ 00520 ACPI_REFCLASS_DEBUG = 6, /* Debug object */ 00521 00522 ACPI_REFCLASS_MAX = 6 00523 00524 } ACPI_REFERENCE_CLASSES; 00525 00526 00527 /* 00528 * Extra object is used as additional storage for types that 00529 * have AML code in their declarations (TermArgs) that must be 00530 * evaluated at run time. 00531 * 00532 * Currently: Region and FieldUnit types 00533 */ 00534 typedef struct acpi_object_extra 00535 { 00536 ACPI_OBJECT_COMMON_HEADER 00537 ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */ 00538 void *RegionContext; /* Region-specific data */ 00539 UINT8 *AmlStart; 00540 UINT32 AmlLength; 00541 00542 } ACPI_OBJECT_EXTRA; 00543 00544 00545 /* Additional data that can be attached to namespace nodes */ 00546 00547 typedef struct acpi_object_data 00548 { 00549 ACPI_OBJECT_COMMON_HEADER 00550 ACPI_OBJECT_HANDLER Handler; 00551 void *Pointer; 00552 00553 } ACPI_OBJECT_DATA; 00554 00555 00556 /* Structure used when objects are cached for reuse */ 00557 00558 typedef struct acpi_object_cache_list 00559 { 00560 ACPI_OBJECT_COMMON_HEADER 00561 union acpi_operand_object *Next; /* Link for object cache and internal lists*/ 00562 00563 } ACPI_OBJECT_CACHE_LIST; 00564 00565 00566 /****************************************************************************** 00567 * 00568 * ACPI_OPERAND_OBJECT Descriptor - a giant union of all of the above 00569 * 00570 *****************************************************************************/ 00571 00572 typedef union acpi_operand_object 00573 { 00574 ACPI_OBJECT_COMMON Common; 00575 ACPI_OBJECT_INTEGER Integer; 00576 ACPI_OBJECT_STRING String; 00577 ACPI_OBJECT_BUFFER Buffer; 00578 ACPI_OBJECT_PACKAGE Package; 00579 ACPI_OBJECT_EVENT Event; 00580 ACPI_OBJECT_METHOD Method; 00581 ACPI_OBJECT_MUTEX Mutex; 00582 ACPI_OBJECT_REGION Region; 00583 ACPI_OBJECT_NOTIFY_COMMON CommonNotify; 00584 ACPI_OBJECT_DEVICE Device; 00585 ACPI_OBJECT_POWER_RESOURCE PowerResource; 00586 ACPI_OBJECT_PROCESSOR Processor; 00587 ACPI_OBJECT_THERMAL_ZONE ThermalZone; 00588 ACPI_OBJECT_FIELD_COMMON CommonField; 00589 ACPI_OBJECT_REGION_FIELD Field; 00590 ACPI_OBJECT_BUFFER_FIELD BufferField; 00591 ACPI_OBJECT_BANK_FIELD BankField; 00592 ACPI_OBJECT_INDEX_FIELD IndexField; 00593 ACPI_OBJECT_NOTIFY_HANDLER Notify; 00594 ACPI_OBJECT_ADDR_HANDLER AddressSpace; 00595 ACPI_OBJECT_REFERENCE Reference; 00596 ACPI_OBJECT_EXTRA Extra; 00597 ACPI_OBJECT_DATA Data; 00598 ACPI_OBJECT_CACHE_LIST Cache; 00599 00600 /* 00601 * Add namespace node to union in order to simplify code that accepts both 00602 * ACPI_OPERAND_OBJECTs and ACPI_NAMESPACE_NODEs. The structures share 00603 * a common DescriptorType field in order to differentiate them. 00604 */ 00605 ACPI_NAMESPACE_NODE Node; 00606 00607 } ACPI_OPERAND_OBJECT; 00608 00609 00610 /****************************************************************************** 00611 * 00612 * ACPI_DESCRIPTOR - objects that share a common descriptor identifier 00613 * 00614 *****************************************************************************/ 00615 00616 /* Object descriptor types */ 00617 00618 #define ACPI_DESC_TYPE_CACHED 0x01 /* Used only when object is cached */ 00619 #define ACPI_DESC_TYPE_STATE 0x02 00620 #define ACPI_DESC_TYPE_STATE_UPDATE 0x03 00621 #define ACPI_DESC_TYPE_STATE_PACKAGE 0x04 00622 #define ACPI_DESC_TYPE_STATE_CONTROL 0x05 00623 #define ACPI_DESC_TYPE_STATE_RPSCOPE 0x06 00624 #define ACPI_DESC_TYPE_STATE_PSCOPE 0x07 00625 #define ACPI_DESC_TYPE_STATE_WSCOPE 0x08 00626 #define ACPI_DESC_TYPE_STATE_RESULT 0x09 00627 #define ACPI_DESC_TYPE_STATE_NOTIFY 0x0A 00628 #define ACPI_DESC_TYPE_STATE_THREAD 0x0B 00629 #define ACPI_DESC_TYPE_WALK 0x0C 00630 #define ACPI_DESC_TYPE_PARSER 0x0D 00631 #define ACPI_DESC_TYPE_OPERAND 0x0E 00632 #define ACPI_DESC_TYPE_NAMED 0x0F 00633 #define ACPI_DESC_TYPE_MAX 0x0F 00634 00635 00636 typedef struct acpi_common_descriptor 00637 { 00638 void *CommonPointer; 00639 UINT8 DescriptorType; /* To differentiate various internal objs */ 00640 00641 } ACPI_COMMON_DESCRIPTOR; 00642 00643 typedef union acpi_descriptor 00644 { 00645 ACPI_COMMON_DESCRIPTOR Common; 00646 ACPI_OPERAND_OBJECT Object; 00647 ACPI_NAMESPACE_NODE Node; 00648 ACPI_PARSE_OBJECT Op; 00649 00650 } ACPI_DESCRIPTOR; 00651 00652 #pragma pack() 00653 00654 #endif /* _ACOBJECT_H */ Generated on Sun May 27 2012 04:27:18 for ReactOS by
1.7.6.1
|