Print this page
acpica-unix2-20130823
PANKOVs restructure
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/uts/intel/sys/acpi/acobject.h
+++ new/usr/src/common/acpica/include/acobject.h
1 -
2 1 /******************************************************************************
3 2 *
4 3 * Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only)
5 4 *
6 5 *****************************************************************************/
7 6
8 7 /*
9 - * Copyright (C) 2000 - 2011, Intel Corp.
8 + * Copyright (C) 2000 - 2013, Intel Corp.
10 9 * All rights reserved.
11 10 *
12 11 * Redistribution and use in source and binary forms, with or without
13 12 * modification, are permitted provided that the following conditions
14 13 * are met:
15 14 * 1. Redistributions of source code must retain the above copyright
16 15 * notice, this list of conditions, and the following disclaimer,
17 16 * without modification.
18 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19 18 * substantially similar to the "NO WARRANTY" disclaimer below
20 19 * ("Disclaimer") and any redistribution must be conditioned upon
21 20 * including a substantially similar Disclaimer requirement for further
22 21 * binary redistribution.
23 22 * 3. Neither the names of the above-listed copyright holders nor the names
24 23 * of any contributors may be used to endorse or promote products derived
25 24 * from this software without specific prior written permission.
26 25 *
27 26 * Alternatively, this software may be distributed under the terms of the
28 27 * GNU General Public License ("GPL") version 2 as published by the Free
29 28 * Software Foundation.
30 29 *
31 30 * NO WARRANTY
32 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42 41 * POSSIBILITY OF SUCH DAMAGES.
43 42 */
44 43
45 44 #ifndef _ACOBJECT_H
46 45 #define _ACOBJECT_H
47 46
48 47 /* acpisrc:StructDefs -- for acpisrc conversion */
49 48
50 49
51 50 /*
52 51 * The ACPI_OPERAND_OBJECT is used to pass AML operands from the dispatcher
53 52 * to the interpreter, and to keep track of the various handlers such as
54 53 * address space handlers and notify handlers. The object is a constant
55 54 * size in order to allow it to be cached and reused.
56 55 *
57 56 * Note: The object is optimized to be aligned and will not work if it is
58 57 * byte-packed.
59 58 */
60 59 #if ACPI_MACHINE_WIDTH == 64
61 60 #pragma pack(8)
62 61 #else
63 62 #pragma pack(4)
64 63 #endif
65 64
66 65 /*******************************************************************************
67 66 *
68 67 * Common Descriptors
69 68 *
70 69 ******************************************************************************/
71 70
72 71 /*
73 72 * Common area for all objects.
74 73 *
75 74 * DescriptorType is used to differentiate between internal descriptors, and
76 75 * must be in the same place across all descriptors
77 76 *
78 77 * Note: The DescriptorType and Type fields must appear in the identical
79 78 * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT
80 79 * structures.
81 80 */
82 81 #define ACPI_OBJECT_COMMON_HEADER \
83 82 union acpi_operand_object *NextObject; /* Objects linked to parent NS node */\
84 83 UINT8 DescriptorType; /* To differentiate various internal objs */\
85 84 UINT8 Type; /* ACPI_OBJECT_TYPE */\
86 85 UINT16 ReferenceCount; /* For object deletion management */\
↓ open down ↓ |
67 lines elided |
↑ open up ↑ |
87 86 UINT8 Flags;
88 87 /*
89 88 * Note: There are 3 bytes available here before the
90 89 * next natural alignment boundary (for both 32/64 cases)
91 90 */
92 91
93 92 /* Values for Flag byte above */
94 93
95 94 #define AOPOBJ_AML_CONSTANT 0x01 /* Integer is an AML constant */
96 95 #define AOPOBJ_STATIC_POINTER 0x02 /* Data is part of an ACPI table, don't delete */
97 -#define AOPOBJ_DATA_VALID 0x04 /* Object is intialized and data is valid */
96 +#define AOPOBJ_DATA_VALID 0x04 /* Object is initialized and data is valid */
98 97 #define AOPOBJ_OBJECT_INITIALIZED 0x08 /* Region is initialized, _REG was run */
99 98 #define AOPOBJ_SETUP_COMPLETE 0x10 /* Region setup is complete */
100 99 #define AOPOBJ_INVALID 0x20 /* Host OS won't allow a Region address */
101 100
102 101
103 102 /******************************************************************************
104 103 *
105 104 * Basic data types
106 105 *
107 106 *****************************************************************************/
108 107
109 108 typedef struct acpi_object_common
110 109 {
111 110 ACPI_OBJECT_COMMON_HEADER
112 111
113 112 } ACPI_OBJECT_COMMON;
114 113
115 114
↓ open down ↓ |
8 lines elided |
↑ open up ↑ |
116 115 typedef struct acpi_object_integer
117 116 {
118 117 ACPI_OBJECT_COMMON_HEADER
119 118 UINT8 Fill[3]; /* Prevent warning on some compilers */
120 119 UINT64 Value;
121 120
122 121 } ACPI_OBJECT_INTEGER;
123 122
124 123
125 124 /*
126 - * Note: The String and Buffer object must be identical through the Pointer
127 - * and length elements. There is code that depends on this.
125 + * Note: The String and Buffer object must be identical through the
126 + * pointer and length elements. There is code that depends on this.
128 127 *
129 128 * Fields common to both Strings and Buffers
130 129 */
131 130 #define ACPI_COMMON_BUFFER_INFO(_Type) \
132 131 _Type *Pointer; \
133 132 UINT32 Length;
134 133
135 134
136 135 typedef struct acpi_object_string /* Null terminated, ASCII characters only */
137 136 {
138 137 ACPI_OBJECT_COMMON_HEADER
139 138 ACPI_COMMON_BUFFER_INFO (char) /* String in AML stream or allocated string */
140 139
141 140 } ACPI_OBJECT_STRING;
142 141
143 142
144 143 typedef struct acpi_object_buffer
145 144 {
146 145 ACPI_OBJECT_COMMON_HEADER
147 146 ACPI_COMMON_BUFFER_INFO (UINT8) /* Buffer in AML stream or allocated buffer */
148 147 UINT32 AmlLength;
149 148 UINT8 *AmlStart;
150 149 ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */
151 150
152 151 } ACPI_OBJECT_BUFFER;
153 152
154 153
155 154 typedef struct acpi_object_package
156 155 {
157 156 ACPI_OBJECT_COMMON_HEADER
158 157 ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */
159 158 union acpi_operand_object **Elements; /* Array of pointers to AcpiObjects */
160 159 UINT8 *AmlStart;
161 160 UINT32 AmlLength;
162 161 UINT32 Count; /* # of elements in package */
163 162
164 163 } ACPI_OBJECT_PACKAGE;
165 164
166 165
167 166 /******************************************************************************
168 167 *
169 168 * Complex data types
170 169 *
171 170 *****************************************************************************/
172 171
173 172 typedef struct acpi_object_event
174 173 {
175 174 ACPI_OBJECT_COMMON_HEADER
176 175 ACPI_SEMAPHORE OsSemaphore; /* Actual OS synchronization object */
177 176
178 177 } ACPI_OBJECT_EVENT;
179 178
180 179
181 180 typedef struct acpi_object_mutex
182 181 {
183 182 ACPI_OBJECT_COMMON_HEADER
184 183 UINT8 SyncLevel; /* 0-15, specified in Mutex() call */
185 184 UINT16 AcquisitionDepth; /* Allow multiple Acquires, same thread */
186 185 ACPI_MUTEX OsMutex; /* Actual OS synchronization object */
187 186 ACPI_THREAD_ID ThreadId; /* Current owner of the mutex */
188 187 struct acpi_thread_state *OwnerThread; /* Current owner of the mutex */
189 188 union acpi_operand_object *Prev; /* Link for list of acquired mutexes */
190 189 union acpi_operand_object *Next; /* Link for list of acquired mutexes */
191 190 ACPI_NAMESPACE_NODE *Node; /* Containing namespace node */
192 191 UINT8 OriginalSyncLevel; /* Owner's original sync level (0-15) */
193 192
194 193 } ACPI_OBJECT_MUTEX;
195 194
196 195
197 196 typedef struct acpi_object_region
198 197 {
199 198 ACPI_OBJECT_COMMON_HEADER
200 199 UINT8 SpaceId;
201 200 ACPI_NAMESPACE_NODE *Node; /* Containing namespace node */
202 201 union acpi_operand_object *Handler; /* Handler for region access */
203 202 union acpi_operand_object *Next;
204 203 ACPI_PHYSICAL_ADDRESS Address;
205 204 UINT32 Length;
206 205
207 206 } ACPI_OBJECT_REGION;
208 207
209 208
210 209 typedef struct acpi_object_method
211 210 {
212 211 ACPI_OBJECT_COMMON_HEADER
213 212 UINT8 InfoFlags;
214 213 UINT8 ParamCount;
215 214 UINT8 SyncLevel;
216 215 union acpi_operand_object *Mutex;
217 216 UINT8 *AmlStart;
218 217 union
219 218 {
220 219 ACPI_INTERNAL_METHOD Implementation;
221 220 union acpi_operand_object *Handler;
222 221 } Dispatch;
223 222
224 223 UINT32 AmlLength;
225 224 UINT8 ThreadCount;
226 225 ACPI_OWNER_ID OwnerId;
227 226
228 227 } ACPI_OBJECT_METHOD;
229 228
230 229 /* Flags for InfoFlags field above */
↓ open down ↓ |
93 lines elided |
↑ open up ↑ |
231 230
232 231 #define ACPI_METHOD_MODULE_LEVEL 0x01 /* Method is actually module-level code */
233 232 #define ACPI_METHOD_INTERNAL_ONLY 0x02 /* Method is implemented internally (_OSI) */
234 233 #define ACPI_METHOD_SERIALIZED 0x04 /* Method is serialized */
235 234 #define ACPI_METHOD_SERIALIZED_PENDING 0x08 /* Method is to be marked serialized */
236 235 #define ACPI_METHOD_MODIFIED_NAMESPACE 0x10 /* Method modified the namespace */
237 236
238 237
239 238 /******************************************************************************
240 239 *
241 - * Objects that can be notified. All share a common NotifyInfo area.
240 + * Objects that can be notified. All share a common NotifyInfo area.
242 241 *
243 242 *****************************************************************************/
244 243
245 244 /*
246 245 * Common fields for objects that support ASL notifications
247 246 */
248 247 #define ACPI_COMMON_NOTIFY_INFO \
249 - union acpi_operand_object *SystemNotify; /* Handler for system notifies */\
250 - union acpi_operand_object *DeviceNotify; /* Handler for driver notifies */\
248 + union acpi_operand_object *NotifyList[2]; /* Handlers for system/device notifies */\
251 249 union acpi_operand_object *Handler; /* Handler for Address space */
252 250
253 251
254 252 typedef struct acpi_object_notify_common /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */
255 253 {
256 254 ACPI_OBJECT_COMMON_HEADER
257 255 ACPI_COMMON_NOTIFY_INFO
258 256
259 257 } ACPI_OBJECT_NOTIFY_COMMON;
260 258
261 259
262 260 typedef struct acpi_object_device
263 261 {
264 262 ACPI_OBJECT_COMMON_HEADER
265 263 ACPI_COMMON_NOTIFY_INFO
266 264 ACPI_GPE_BLOCK_INFO *GpeBlock;
267 265
268 266 } ACPI_OBJECT_DEVICE;
269 267
270 268
271 269 typedef struct acpi_object_power_resource
272 270 {
273 271 ACPI_OBJECT_COMMON_HEADER
274 272 ACPI_COMMON_NOTIFY_INFO
275 273 UINT32 SystemLevel;
276 274 UINT32 ResourceOrder;
277 275
278 276 } ACPI_OBJECT_POWER_RESOURCE;
279 277
280 278
281 279 typedef struct acpi_object_processor
282 280 {
283 281 ACPI_OBJECT_COMMON_HEADER
284 282
285 283 /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */
286 284
287 285 UINT8 ProcId;
288 286 UINT8 Length;
289 287 ACPI_COMMON_NOTIFY_INFO
290 288 ACPI_IO_ADDRESS Address;
291 289
292 290 } ACPI_OBJECT_PROCESSOR;
293 291
294 292
↓ open down ↓ |
34 lines elided |
↑ open up ↑ |
295 293 typedef struct acpi_object_thermal_zone
296 294 {
297 295 ACPI_OBJECT_COMMON_HEADER
298 296 ACPI_COMMON_NOTIFY_INFO
299 297
300 298 } ACPI_OBJECT_THERMAL_ZONE;
301 299
302 300
303 301 /******************************************************************************
304 302 *
305 - * Fields. All share a common header/info field.
303 + * Fields. All share a common header/info field.
306 304 *
307 305 *****************************************************************************/
308 306
309 307 /*
310 308 * Common bitfield for the field objects
311 309 * "Field Datum" -- a datum from the actual field object
312 310 * "Buffer Datum" -- a datum from a user buffer, read from or to be written to the field
313 311 */
314 312 #define ACPI_COMMON_FIELD_INFO \
315 313 UINT8 FieldFlags; /* Access, update, and lock bits */\
316 314 UINT8 Attribute; /* From AccessAs keyword */\
317 315 UINT8 AccessByteWidth; /* Read/Write size in bytes */\
318 316 ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */\
319 317 UINT32 BitLength; /* Length of field in bits */\
320 318 UINT32 BaseByteOffset; /* Byte offset within containing object */\
321 319 UINT32 Value; /* Value to store into the Bank or Index register */\
322 320 UINT8 StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\
321 + UINT8 AccessLength; /* For serial regions/fields */
323 322
324 323
325 324 typedef struct acpi_object_field_common /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
326 325 {
327 326 ACPI_OBJECT_COMMON_HEADER
328 327 ACPI_COMMON_FIELD_INFO
329 328 union acpi_operand_object *RegionObj; /* Parent Operation Region object (REGION/BANK fields only) */
330 329
331 330 } ACPI_OBJECT_FIELD_COMMON;
332 331
333 332
334 333 typedef struct acpi_object_region_field
335 334 {
336 335 ACPI_OBJECT_COMMON_HEADER
337 336 ACPI_COMMON_FIELD_INFO
337 + UINT16 ResourceLength;
338 338 union acpi_operand_object *RegionObj; /* Containing OpRegion object */
339 + UINT8 *ResourceBuffer; /* ResourceTemplate for serial regions/fields */
339 340
340 341 } ACPI_OBJECT_REGION_FIELD;
341 342
342 343
343 344 typedef struct acpi_object_bank_field
344 345 {
345 346 ACPI_OBJECT_COMMON_HEADER
346 347 ACPI_COMMON_FIELD_INFO
347 348 union acpi_operand_object *RegionObj; /* Containing OpRegion object */
348 349 union acpi_operand_object *BankObj; /* BankSelect Register object */
349 350
350 351 } ACPI_OBJECT_BANK_FIELD;
351 352
352 353
353 354 typedef struct acpi_object_index_field
354 355 {
355 356 ACPI_OBJECT_COMMON_HEADER
356 357 ACPI_COMMON_FIELD_INFO
357 358
358 359 /*
359 360 * No "RegionObj" pointer needed since the Index and Data registers
360 361 * are each field definitions unto themselves.
361 362 */
362 363 union acpi_operand_object *IndexObj; /* Index register */
363 364 union acpi_operand_object *DataObj; /* Data register */
364 365
365 366 } ACPI_OBJECT_INDEX_FIELD;
366 367
367 368
368 369 /* The BufferField is different in that it is part of a Buffer, not an OpRegion */
369 370
370 371 typedef struct acpi_object_buffer_field
371 372 {
372 373 ACPI_OBJECT_COMMON_HEADER
373 374 ACPI_COMMON_FIELD_INFO
374 375 union acpi_operand_object *BufferObj; /* Containing Buffer object */
375 376
376 377 } ACPI_OBJECT_BUFFER_FIELD;
377 378
378 379
↓ open down ↓ |
30 lines elided |
↑ open up ↑ |
379 380 /******************************************************************************
380 381 *
381 382 * Objects for handlers
382 383 *
383 384 *****************************************************************************/
384 385
385 386 typedef struct acpi_object_notify_handler
386 387 {
387 388 ACPI_OBJECT_COMMON_HEADER
388 389 ACPI_NAMESPACE_NODE *Node; /* Parent device */
389 - ACPI_NOTIFY_HANDLER Handler;
390 + UINT32 HandlerType; /* Type: Device/System/Both */
391 + ACPI_NOTIFY_HANDLER Handler; /* Handler address */
390 392 void *Context;
393 + union acpi_operand_object *Next[2]; /* Device and System handler lists */
391 394
392 395 } ACPI_OBJECT_NOTIFY_HANDLER;
393 396
394 397
395 398 typedef struct acpi_object_addr_handler
396 399 {
397 400 ACPI_OBJECT_COMMON_HEADER
398 401 UINT8 SpaceId;
399 402 UINT8 HandlerFlags;
400 403 ACPI_ADR_SPACE_HANDLER Handler;
401 404 ACPI_NAMESPACE_NODE *Node; /* Parent device */
402 405 void *Context;
403 406 ACPI_ADR_SPACE_SETUP Setup;
404 - union acpi_operand_object *RegionList; /* regions using this handler */
407 + union acpi_operand_object *RegionList; /* Regions using this handler */
405 408 union acpi_operand_object *Next;
406 409
407 410 } ACPI_OBJECT_ADDR_HANDLER;
408 411
409 412 /* Flags for address handler (HandlerFlags) */
410 413
411 414 #define ACPI_ADDR_HANDLER_DEFAULT_INSTALLED 0x01
412 415
413 416
414 417 /******************************************************************************
415 418 *
416 419 * Special internal objects
417 420 *
418 421 *****************************************************************************/
419 422
420 423 /*
421 424 * The Reference object is used for these opcodes:
422 425 * Arg[0-6], Local[0-7], IndexOp, NameOp, RefOfOp, LoadOp, LoadTableOp, DebugOp
423 426 * The Reference.Class differentiates these types.
424 427 */
425 428 typedef struct acpi_object_reference
426 429 {
427 430 ACPI_OBJECT_COMMON_HEADER
428 431 UINT8 Class; /* Reference Class */
429 432 UINT8 TargetType; /* Used for Index Op */
430 433 UINT8 Reserved;
431 434 void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */
432 435 ACPI_NAMESPACE_NODE *Node; /* RefOf or Namepath */
433 436 union acpi_operand_object **Where; /* Target of Index */
434 437 UINT32 Value; /* Used for Local/Arg/Index/DdbHandle */
435 438
436 439 } ACPI_OBJECT_REFERENCE;
437 440
438 441 /* Values for Reference.Class above */
439 442
440 443 typedef enum
441 444 {
442 445 ACPI_REFCLASS_LOCAL = 0, /* Method local */
443 446 ACPI_REFCLASS_ARG = 1, /* Method argument */
444 447 ACPI_REFCLASS_REFOF = 2, /* Result of RefOf() TBD: Split to Ref/Node and Ref/OperandObj? */
445 448 ACPI_REFCLASS_INDEX = 3, /* Result of Index() */
446 449 ACPI_REFCLASS_TABLE = 4, /* DdbHandle - Load(), LoadTable() */
447 450 ACPI_REFCLASS_NAME = 5, /* Reference to a named object */
448 451 ACPI_REFCLASS_DEBUG = 6, /* Debug object */
449 452
450 453 ACPI_REFCLASS_MAX = 6
451 454
452 455 } ACPI_REFERENCE_CLASSES;
453 456
454 457
455 458 /*
↓ open down ↓ |
41 lines elided |
↑ open up ↑ |
456 459 * Extra object is used as additional storage for types that
457 460 * have AML code in their declarations (TermArgs) that must be
458 461 * evaluated at run time.
459 462 *
460 463 * Currently: Region and FieldUnit types
461 464 */
462 465 typedef struct acpi_object_extra
463 466 {
464 467 ACPI_OBJECT_COMMON_HEADER
465 468 ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */
469 + ACPI_NAMESPACE_NODE *ScopeNode;
466 470 void *RegionContext; /* Region-specific data */
467 471 UINT8 *AmlStart;
468 472 UINT32 AmlLength;
469 473
470 474 } ACPI_OBJECT_EXTRA;
471 475
472 476
473 477 /* Additional data that can be attached to namespace nodes */
474 478
475 479 typedef struct acpi_object_data
476 480 {
477 481 ACPI_OBJECT_COMMON_HEADER
478 482 ACPI_OBJECT_HANDLER Handler;
479 483 void *Pointer;
480 484
481 485 } ACPI_OBJECT_DATA;
482 486
483 487
484 488 /* Structure used when objects are cached for reuse */
485 489
486 490 typedef struct acpi_object_cache_list
487 491 {
488 492 ACPI_OBJECT_COMMON_HEADER
489 493 union acpi_operand_object *Next; /* Link for object cache and internal lists*/
490 494
491 495 } ACPI_OBJECT_CACHE_LIST;
492 496
493 497
494 498 /******************************************************************************
495 499 *
496 500 * ACPI_OPERAND_OBJECT Descriptor - a giant union of all of the above
497 501 *
498 502 *****************************************************************************/
499 503
500 504 typedef union acpi_operand_object
501 505 {
502 506 ACPI_OBJECT_COMMON Common;
503 507 ACPI_OBJECT_INTEGER Integer;
504 508 ACPI_OBJECT_STRING String;
505 509 ACPI_OBJECT_BUFFER Buffer;
506 510 ACPI_OBJECT_PACKAGE Package;
507 511 ACPI_OBJECT_EVENT Event;
508 512 ACPI_OBJECT_METHOD Method;
509 513 ACPI_OBJECT_MUTEX Mutex;
510 514 ACPI_OBJECT_REGION Region;
511 515 ACPI_OBJECT_NOTIFY_COMMON CommonNotify;
512 516 ACPI_OBJECT_DEVICE Device;
513 517 ACPI_OBJECT_POWER_RESOURCE PowerResource;
514 518 ACPI_OBJECT_PROCESSOR Processor;
515 519 ACPI_OBJECT_THERMAL_ZONE ThermalZone;
516 520 ACPI_OBJECT_FIELD_COMMON CommonField;
517 521 ACPI_OBJECT_REGION_FIELD Field;
518 522 ACPI_OBJECT_BUFFER_FIELD BufferField;
519 523 ACPI_OBJECT_BANK_FIELD BankField;
520 524 ACPI_OBJECT_INDEX_FIELD IndexField;
521 525 ACPI_OBJECT_NOTIFY_HANDLER Notify;
522 526 ACPI_OBJECT_ADDR_HANDLER AddressSpace;
523 527 ACPI_OBJECT_REFERENCE Reference;
524 528 ACPI_OBJECT_EXTRA Extra;
525 529 ACPI_OBJECT_DATA Data;
526 530 ACPI_OBJECT_CACHE_LIST Cache;
527 531
528 532 /*
529 533 * Add namespace node to union in order to simplify code that accepts both
530 534 * ACPI_OPERAND_OBJECTs and ACPI_NAMESPACE_NODEs. The structures share
531 535 * a common DescriptorType field in order to differentiate them.
532 536 */
533 537 ACPI_NAMESPACE_NODE Node;
534 538
535 539 } ACPI_OPERAND_OBJECT;
536 540
537 541
538 542 /******************************************************************************
539 543 *
540 544 * ACPI_DESCRIPTOR - objects that share a common descriptor identifier
541 545 *
542 546 *****************************************************************************/
543 547
544 548 /* Object descriptor types */
545 549
546 550 #define ACPI_DESC_TYPE_CACHED 0x01 /* Used only when object is cached */
547 551 #define ACPI_DESC_TYPE_STATE 0x02
548 552 #define ACPI_DESC_TYPE_STATE_UPDATE 0x03
549 553 #define ACPI_DESC_TYPE_STATE_PACKAGE 0x04
550 554 #define ACPI_DESC_TYPE_STATE_CONTROL 0x05
551 555 #define ACPI_DESC_TYPE_STATE_RPSCOPE 0x06
552 556 #define ACPI_DESC_TYPE_STATE_PSCOPE 0x07
553 557 #define ACPI_DESC_TYPE_STATE_WSCOPE 0x08
554 558 #define ACPI_DESC_TYPE_STATE_RESULT 0x09
555 559 #define ACPI_DESC_TYPE_STATE_NOTIFY 0x0A
556 560 #define ACPI_DESC_TYPE_STATE_THREAD 0x0B
557 561 #define ACPI_DESC_TYPE_WALK 0x0C
558 562 #define ACPI_DESC_TYPE_PARSER 0x0D
559 563 #define ACPI_DESC_TYPE_OPERAND 0x0E
560 564 #define ACPI_DESC_TYPE_NAMED 0x0F
561 565 #define ACPI_DESC_TYPE_MAX 0x0F
562 566
563 567
564 568 typedef struct acpi_common_descriptor
565 569 {
566 570 void *CommonPointer;
567 571 UINT8 DescriptorType; /* To differentiate various internal objs */
568 572
569 573 } ACPI_COMMON_DESCRIPTOR;
570 574
571 575 typedef union acpi_descriptor
572 576 {
573 577 ACPI_COMMON_DESCRIPTOR Common;
574 578 ACPI_OPERAND_OBJECT Object;
575 579 ACPI_NAMESPACE_NODE Node;
576 580 ACPI_PARSE_OBJECT Op;
577 581
578 582 } ACPI_DESCRIPTOR;
579 583
580 584 #pragma pack()
581 585
582 586 #endif /* _ACOBJECT_H */
↓ open down ↓ |
107 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX