ReactOS 0.4.16-dev-306-g647d351
dswload2.c
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * Module Name: dswload2 - Dispatcher second pass namespace load callbacks
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2022, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44#include "acpi.h"
45#include "accommon.h"
46#include "acparser.h"
47#include "amlcode.h"
48#include "acdispat.h"
49#include "acinterp.h"
50#include "acnamesp.h"
51#include "acevents.h"
52#ifdef ACPI_EXEC_APP
53#include "aecommon.h"
54#endif
55
56#define _COMPONENT ACPI_DISPATCHER
57 ACPI_MODULE_NAME ("dswload2")
58
59
60/*******************************************************************************
61 *
62 * FUNCTION: AcpiDsLoad2BeginOp
63 *
64 * PARAMETERS: WalkState - Current state of the parse tree walk
65 * OutOp - Where to return op if a new one is created
66 *
67 * RETURN: Status
68 *
69 * DESCRIPTION: Descending callback used during the loading of ACPI tables.
70 *
71 ******************************************************************************/
72
75 ACPI_WALK_STATE *WalkState,
76 ACPI_PARSE_OBJECT **OutOp)
77{
82 char *BufferPtr;
84
85
86 ACPI_FUNCTION_TRACE (DsLoad2BeginOp);
87
88
89 Op = WalkState->Op;
90 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState));
91
92 if (Op)
93 {
94 if ((WalkState->ControlState) &&
95 (WalkState->ControlState->Common.State ==
97 {
98 /* We are executing a while loop outside of a method */
99
100 Status = AcpiDsExecBeginOp (WalkState, OutOp);
102 }
103
104 /* We only care about Namespace opcodes here */
105
106 if ((!(WalkState->OpInfo->Flags & AML_NSOPCODE) &&
107 (WalkState->Opcode != AML_INT_NAMEPATH_OP)) ||
108 (!(WalkState->OpInfo->Flags & AML_NAMED)))
109 {
111 }
112
113 /* Get the name we are going to enter or lookup in the namespace */
114
115 if (WalkState->Opcode == AML_INT_NAMEPATH_OP)
116 {
117 /* For Namepath op, get the path string */
118
119 BufferPtr = Op->Common.Value.String;
120 if (!BufferPtr)
121 {
122 /* No name, just exit */
123
125 }
126 }
127 else
128 {
129 /* Get name from the op */
130
131 BufferPtr = ACPI_CAST_PTR (char, &Op->Named.Name);
132 }
133 }
134 else
135 {
136 /* Get the namestring from the raw AML */
137
138 BufferPtr = AcpiPsGetNextNamestring (&WalkState->ParserState);
139 }
140
141 /* Map the opcode into an internal object type */
142
143 ObjectType = WalkState->OpInfo->ObjectType;
144
146 "State=%p Op=%p Type=%X\n", WalkState, Op, ObjectType));
147
148 switch (WalkState->Opcode)
149 {
150 case AML_FIELD_OP:
153
154 Node = NULL;
155 Status = AE_OK;
156 break;
157
159 /*
160 * The NamePath is an object reference to an existing object.
161 * Don't enter the name into the namespace, but look it up
162 * for use later.
163 */
164 Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
166 WalkState, &(Node));
167 break;
168
169 case AML_SCOPE_OP:
170
171 /* Special case for Scope(\‍) -> refers to the Root node */
172
173 if (Op && (Op->Named.Node == AcpiGbl_RootNode))
174 {
175 Node = Op->Named.Node;
176
178 if (ACPI_FAILURE (Status))
179 {
181 }
182 }
183 else
184 {
185 /*
186 * The Path is an object reference to an existing object.
187 * Don't enter the name into the namespace, but look it up
188 * for use later.
189 */
190 Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
192 WalkState, &(Node));
193 if (ACPI_FAILURE (Status))
194 {
195#ifdef ACPI_ASL_COMPILER
196 if (Status == AE_NOT_FOUND)
197 {
198 Status = AE_OK;
199 }
200 else
201 {
202 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
203 BufferPtr, Status);
204 }
205#else
206 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
207 BufferPtr, Status);
208#endif
210 }
211 }
212
213 /*
214 * We must check to make sure that the target is
215 * one of the opcodes that actually opens a scope
216 */
217 switch (Node->Type)
218 {
219 case ACPI_TYPE_ANY:
220 case ACPI_TYPE_LOCAL_SCOPE: /* Scope */
221 case ACPI_TYPE_DEVICE:
222 case ACPI_TYPE_POWER:
225
226 /* These are acceptable types */
227 break;
228
230 case ACPI_TYPE_STRING:
231 case ACPI_TYPE_BUFFER:
232
233 /*
234 * These types we will allow, but we will change the type.
235 * This enables some existing code of the form:
236 *
237 * Name (DEB, 0)
238 * Scope (DEB) { ... }
239 */
241 "Type override - [%4.4s] had invalid type (%s) "
242 "for Scope operator, changed to type ANY",
244
245 Node->Type = ACPI_TYPE_ANY;
246 WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY;
247 break;
248
249 case ACPI_TYPE_METHOD:
250
251 /*
252 * Allow scope change to root during execution of module-level
253 * code. Root is typed METHOD during this time.
254 */
255 if ((Node == AcpiGbl_RootNode) &&
256 (WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
257 {
258 break;
259 }
260
262
263 default:
264
265 /* All other types are an error */
266
268 "Invalid type (%s) for target of "
269 "Scope operator [%4.4s] (Cannot override)",
271
273 }
274 break;
275
276 default:
277
278 /* All other opcodes */
279
280 if (Op && Op->Common.Node)
281 {
282 /* This op/node was previously entered into the namespace */
283
284 Node = Op->Common.Node;
285
287 {
289 if (ACPI_FAILURE (Status))
290 {
292 }
293 }
294
296 }
297
298 /*
299 * Enter the named type into the internal namespace. We enter the name
300 * as we go downward in the parse tree. Any necessary subobjects that
301 * involve arguments to the opcode must be created as we go back up the
302 * parse tree later.
303 *
304 * Note: Name may already exist if we are executing a deferred opcode.
305 */
306 if (WalkState->DeferredNode)
307 {
308 /* This name is already in the namespace, get the node */
309
310 Node = WalkState->DeferredNode;
311 Status = AE_OK;
312 break;
313 }
314
316 if (WalkState->PassNumber == ACPI_IMODE_EXECUTE)
317 {
318 /* Execution mode, node cannot already exist, node is temporary */
319
321
322 if (!(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
323 {
325 }
326 }
327
328#ifdef ACPI_ASL_COMPILER
329
330 /*
331 * Do not open a scope for AML_EXTERNAL_OP
332 * AcpiNsLookup can open a new scope based on the object type
333 * of this op. AML_EXTERNAL_OP is a declaration rather than a
334 * definition. In the case that this external is a method object,
335 * AcpiNsLookup will open a new scope. However, an AML_EXTERNAL_OP
336 * associated with the ACPI_TYPE_METHOD is a declaration, rather than
337 * a definition. Flags is set to avoid opening a scope for any
338 * AML_EXTERNAL_OP.
339 */
340 if (WalkState->Opcode == AML_EXTERNAL_OP)
341 {
343 }
344#endif
345
346 /*
347 * For name creation opcodes, the full namepath prefix must
348 * exist, except for the final (new) nameseg.
349 */
350 if (WalkState->OpInfo->Flags & AML_NAMED)
351 {
353 }
354
355 /* Add new entry or lookup existing entry */
356
357 Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
358 ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node);
359
361 {
363 "***New Node [%4.4s] %p is temporary\n",
365 }
366 break;
367 }
368
369 if (ACPI_FAILURE (Status))
370 {
371 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
372 BufferPtr, Status);
374 }
375
376 if (!Op)
377 {
378 /* Create a new op */
379
380 Op = AcpiPsAllocOp (WalkState->Opcode, WalkState->Aml);
381 if (!Op)
382 {
384 }
385
386 /* Initialize the new op */
387
388 if (Node)
389 {
390 Op->Named.Name = Node->Name.Integer;
391 }
392 *OutOp = Op;
393 }
394
395 /*
396 * Put the Node in the "op" object that the parser uses, so we
397 * can get it again quickly when this scope is closed
398 */
399 Op->Common.Node = Node;
401}
402
403
404/*******************************************************************************
405 *
406 * FUNCTION: AcpiDsLoad2EndOp
407 *
408 * PARAMETERS: WalkState - Current state of the parse tree walk
409 *
410 * RETURN: Status
411 *
412 * DESCRIPTION: Ascending callback used during the loading of the namespace,
413 * both control methods and everything else.
414 *
415 ******************************************************************************/
416
419 ACPI_WALK_STATE *WalkState)
420{
426 ACPI_NAMESPACE_NODE *NewNode;
427 UINT32 i;
428 UINT8 RegionSpace;
429#ifdef ACPI_EXEC_APP
430 ACPI_OPERAND_OBJECT *ObjDesc;
431 char *Namepath;
432#endif
433
434
435 ACPI_FUNCTION_TRACE (DsLoad2EndOp);
436
437 Op = WalkState->Op;
438 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Opcode [%s] Op %p State %p\n",
439 WalkState->OpInfo->Name, Op, WalkState));
440
441 /* Check if opcode had an associated namespace object */
442
443 if (!(WalkState->OpInfo->Flags & AML_NSOBJECT))
444 {
446 }
447
448 if (Op->Common.AmlOpcode == AML_SCOPE_OP)
449 {
451 "Ending scope Op=%p State=%p\n", Op, WalkState));
452 }
453
454 ObjectType = WalkState->OpInfo->ObjectType;
455
456 /*
457 * Get the Node/name from the earlier lookup
458 * (It was saved in the *op structure)
459 */
460 Node = Op->Common.Node;
461
462 /*
463 * Put the Node on the object stack (Contains the ACPI Name of
464 * this object)
465 */
466 WalkState->Operands[0] = (void *) Node;
467 WalkState->NumOperands = 1;
468
469 /* Pop the scope stack */
470
472 (Op->Common.AmlOpcode != AML_INT_METHODCALL_OP))
473 {
474 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s) Popping scope for Op %p\n",
476
477 Status = AcpiDsScopeStackPop (WalkState);
478 if (ACPI_FAILURE (Status))
479 {
480 goto Cleanup;
481 }
482 }
483
484 /*
485 * Named operations are as follows:
486 *
487 * AML_ALIAS
488 * AML_BANKFIELD
489 * AML_CREATEBITFIELD
490 * AML_CREATEBYTEFIELD
491 * AML_CREATEDWORDFIELD
492 * AML_CREATEFIELD
493 * AML_CREATEQWORDFIELD
494 * AML_CREATEWORDFIELD
495 * AML_DATA_REGION
496 * AML_DEVICE
497 * AML_EVENT
498 * AML_FIELD
499 * AML_INDEXFIELD
500 * AML_METHOD
501 * AML_METHODCALL
502 * AML_MUTEX
503 * AML_NAME
504 * AML_NAMEDFIELD
505 * AML_OPREGION
506 * AML_POWERRES
507 * AML_PROCESSOR
508 * AML_SCOPE
509 * AML_THERMALZONE
510 */
511
513 "Create-Load [%s] State=%p Op=%p NamedObj=%p\n",
514 AcpiPsGetOpcodeName (Op->Common.AmlOpcode), WalkState, Op, Node));
515
516 /* Decode the opcode */
517
518 Arg = Op->Common.Value.Arg;
519
520 switch (WalkState->OpInfo->Type)
521 {
522
524 /*
525 * Create the field object, but the field buffer and index must
526 * be evaluated later during the execution phase
527 */
528 Status = AcpiDsCreateBufferField (Op, WalkState);
530 {
531 ACPI_EXCEPTION ((AE_INFO, Status, "CreateBufferField failure"));
532 goto Cleanup;
533 }
534 break;
535
537 /*
538 * If we are executing a method, initialize the field
539 */
540 if (WalkState->MethodNode)
541 {
542 Status = AcpiDsInitFieldObjects (Op, WalkState);
543 }
544
545 switch (Op->Common.AmlOpcode)
546 {
548
550 Op, (ACPI_HANDLE) Arg->Common.Node, WalkState);
551 break;
552
554
555 Status = AcpiDsCreateBankField (Op, Arg->Common.Node, WalkState);
556 break;
557
558 case AML_FIELD_OP:
559
560 Status = AcpiDsCreateField (Op, Arg->Common.Node, WalkState);
561 break;
562
563 default:
564
565 /* All NAMED_FIELD opcodes must be handled above */
566 break;
567 }
568 break;
569
571
572 Status = AcpiDsCreateOperands (WalkState, Arg);
573 if (ACPI_FAILURE (Status))
574 {
575 goto Cleanup;
576 }
577
578 switch (Op->Common.AmlOpcode)
579 {
580 case AML_PROCESSOR_OP:
581
582 Status = AcpiExCreateProcessor (WalkState);
583 break;
584
586
587 Status = AcpiExCreatePowerResource (WalkState);
588 break;
589
590 case AML_MUTEX_OP:
591
592 Status = AcpiExCreateMutex (WalkState);
593 break;
594
595 case AML_EVENT_OP:
596
597 Status = AcpiExCreateEvent (WalkState);
598 break;
599
600 case AML_ALIAS_OP:
601
602 Status = AcpiExCreateAlias (WalkState);
603 break;
604
605 default:
606
607 /* Unknown opcode */
608
609 Status = AE_OK;
610 goto Cleanup;
611 }
612
613 /* Delete operands */
614
615 for (i = 1; i < WalkState->NumOperands; i++)
616 {
617 AcpiUtRemoveReference (WalkState->Operands[i]);
618 WalkState->Operands[i] = NULL;
619 }
620
621 break;
622
624
625 switch (Op->Common.AmlOpcode)
626 {
627 case AML_REGION_OP:
629
630 if (Op->Common.AmlOpcode == AML_REGION_OP)
631 {
632 RegionSpace = (ACPI_ADR_SPACE_TYPE)
633 ((Op->Common.Value.Arg)->Common.Value.Integer);
634 }
635 else
636 {
637 RegionSpace = ACPI_ADR_SPACE_DATA_TABLE;
638 }
639
640 /*
641 * The OpRegion is not fully parsed at this time. The only valid
642 * argument is the SpaceId. (We must save the address of the
643 * AML of the address and length operands)
644 *
645 * If we have a valid region, initialize it. The namespace is
646 * unlocked at this point.
647 *
648 * Need to unlock interpreter if it is locked (if we are running
649 * a control method), in order to allow _REG methods to be run
650 * during AcpiEvInitializeRegion.
651 */
652 if (WalkState->MethodNode)
653 {
654 /*
655 * Executing a method: initialize the region and unlock
656 * the interpreter
657 */
659 Op->Named.Length, RegionSpace, WalkState);
660 if (ACPI_FAILURE (Status))
661 {
663 }
664 }
665
668 break;
669
670 case AML_NAME_OP:
671
672 Status = AcpiDsCreateNode (WalkState, Node, Op);
673 if (ACPI_FAILURE (Status))
674 {
675 goto Cleanup;
676 }
677
678#ifdef ACPI_EXEC_APP
679 /*
680 * AcpiExec support for namespace initialization file (initialize
681 * Name opcodes in this code.)
682 */
683 Namepath = AcpiNsGetExternalPathname (Node);
684 Status = AeLookupInitFileEntry (Namepath, &ObjDesc);
685 if (ACPI_SUCCESS (Status))
686 {
687 /* Detach any existing object, attach new object */
688
689 if (Node->Object)
690 {
692 }
693 AcpiNsAttachObject (Node, ObjDesc, ObjDesc->Common.Type);
694 }
695 ACPI_FREE (Namepath);
696 Status = AE_OK;
697#endif
698 break;
699
700 case AML_METHOD_OP:
701 /*
702 * MethodOp PkgLength NameString MethodFlags TermList
703 *
704 * Note: We must create the method node/object pair as soon as we
705 * see the method declaration. This allows later pass1 parsing
706 * of invocations of the method (need to know the number of
707 * arguments.)
708 */
710 "LOADING-Method: State=%p Op=%p NamedObj=%p\n",
711 WalkState, Op, Op->Named.Node));
712
713 if (!AcpiNsGetAttachedObject (Op->Named.Node))
714 {
715 WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node);
716 WalkState->NumOperands = 1;
717
719 WalkState, Op->Common.Value.Arg);
720 if (ACPI_SUCCESS (Status))
721 {
723 Op->Named.Data, Op->Named.Length, WalkState);
724 }
725
726 WalkState->Operands[0] = NULL;
727 WalkState->NumOperands = 0;
728
729 if (ACPI_FAILURE (Status))
730 {
732 }
733 }
734 break;
735
736
737 default:
738
739 /* All NAMED_COMPLEX opcodes must be handled above */
740 break;
741 }
742 break;
743
745
746 /* case AML_INT_NAMEPATH_OP: */
747 break;
748
750
752 "RESOLVING-MethodCall: State=%p Op=%p NamedObj=%p\n",
753 WalkState, Op, Node));
754
755 /*
756 * Lookup the method name and save the Node
757 */
758 Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
761 WalkState, &(NewNode));
762 if (ACPI_SUCCESS (Status))
763 {
764 /*
765 * Make sure that what we found is indeed a method
766 * We didn't search for a method on purpose, to see if the name
767 * would resolve
768 */
769 if (NewNode->Type != ACPI_TYPE_METHOD)
770 {
772 }
773
774 /* We could put the returned object (Node) on the object stack for
775 * later, but for now, we will put it in the "op" object that the
776 * parser uses, so we can get it again at the end of this scope
777 */
778 Op->Common.Node = NewNode;
779 }
780 else
781 {
783 Arg->Common.Value.String, Status);
784 }
785 break;
786
787
788 default:
789
790 break;
791 }
792
793Cleanup:
794
795 /* Remove the Node pushed at the very beginning */
796
797 WalkState->Operands[0] = NULL;
798 WalkState->NumOperands = 0;
800}
unsigned char UINT8
unsigned int UINT32
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
#define AE_NOT_FOUND
Definition: acexcep.h:113
#define AE_NO_MEMORY
Definition: acexcep.h:112
#define AE_AML_OPERAND_TYPE
Definition: acexcep.h:182
#define ACPI_SUCCESS(a)
Definition: acexcep.h:94
#define AE_OK
Definition: acexcep.h:97
@ ACPI_IMODE_EXECUTE
Definition: aclocal.h:169
@ ACPI_IMODE_LOAD_PASS2
Definition: aclocal.h:168
#define ACPI_CONTROL_CONDITIONAL_EXECUTING
Definition: aclocal.h:670
#define ACPI_ERROR_NAMESPACE(s, p, e)
Definition: acmacros.h:462
ACPI_STATUS AcpiNsLookup(ACPI_GENERIC_STATE *ScopeInfo, char *Name, ACPI_OBJECT_TYPE Type, ACPI_INTERPRETER_MODE InterpreterMode, UINT32 Flags, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **RetNode)
Definition: nsaccess.c:328
ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject(ACPI_NAMESPACE_NODE *Node)
Definition: nsobject.c:308
#define ACPI_NS_TEMPORARY
Definition: acnamesp.h:69
char * AcpiNsGetExternalPathname(ACPI_NAMESPACE_NODE *Node)
Definition: nsnames.c:70
#define ACPI_NS_NO_UPSEARCH
Definition: acnamesp.h:62
#define ACPI_NS_ERROR_IF_FOUND
Definition: acnamesp.h:66
#define ACPI_NS_DONT_OPEN_SCOPE
Definition: acnamesp.h:64
ACPI_STATUS AcpiNsAttachObject(ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, ACPI_OBJECT_TYPE Type)
Definition: nsobject.c:76
void AcpiNsDetachObject(ACPI_NAMESPACE_NODE *Node)
Definition: nsobject.c:220
#define ACPI_NS_SEARCH_PARENT
Definition: acnamesp.h:63
#define ACPI_NS_PREFIX_MUST_EXIST
Definition: acnamesp.h:72
UINT32 AcpiNsOpensScope(ACPI_OBJECT_TYPE Type)
Definition: nsutils.c:736
#define ACPI_DB_DISPATCH
Definition: acoutput.h:163
#define ACPI_DEBUG_PRINT(pl)
Definition: acoutput.h:475
#define ACPI_EXCEPTION(plist)
Definition: acoutput.h:239
#define ACPI_MODULE_NAME(Name)
Definition: acoutput.h:216
#define ACPI_WARNING(plist)
Definition: acoutput.h:238
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_FUNCTION_TRACE(a)
Definition: acoutput.h:480
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
#define AE_INFO
Definition: acoutput.h:230
const char * AcpiPsGetOpcodeName(UINT16 Opcode)
Definition: psopinfo.c:169
char * AcpiPsGetNextNamestring(ACPI_PARSE_STATE *ParserState)
Definition: psargs.c:172
#define ACPI_PARSE_MODULE_LEVEL
Definition: acparser.h:67
ACPI_PARSE_OBJECT * AcpiPsAllocOp(UINT16 Opcode, UINT8 *Aml)
Definition: psutils.c:130
#define ACPI_TYPE_STRING
Definition: actypes.h:689
#define ACPI_TYPE_PROCESSOR
Definition: actypes.h:699
UINT32 ACPI_OBJECT_TYPE
Definition: actypes.h:685
UINT8 ACPI_ADR_SPACE_TYPE
Definition: actypes.h:859
#define ACPI_TYPE_BUFFER
Definition: actypes.h:690
#define ACPI_FREE(a)
Definition: actypes.h:386
#define ACPI_TYPE_INTEGER
Definition: actypes.h:688
#define ACPI_TYPE_POWER
Definition: actypes.h:698
#define ACPI_TYPE_ANY
Definition: actypes.h:687
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define ACPI_TYPE_DEVICE
Definition: actypes.h:693
#define ACPI_CAST_PTR(t, p)
Definition: actypes.h:544
#define ACPI_ADR_SPACE_DATA_TABLE
Definition: actypes.h:884
#define ACPI_TYPE_METHOD
Definition: actypes.h:695
#define ACPI_TYPE_LOCAL_SCOPE
Definition: actypes.h:726
#define ACPI_TYPE_THERMAL
Definition: actypes.h:700
#define ACPI_FALLTHROUGH
Definition: actypes.h:1466
const char * AcpiUtGetTypeName(ACPI_OBJECT_TYPE Type)
Definition: utdecode.c:250
const char * AcpiUtGetNodeName(void *Object)
Definition: utdecode.c:306
void AcpiUtRemoveReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:790
#define AML_PROCESSOR_OP
Definition: amlcode.h:183
#define AML_REGION_OP
Definition: amlcode.h:180
#define AML_INDEX_FIELD_OP
Definition: amlcode.h:186
#define AML_TYPE_CREATE_FIELD
Definition: amlcode.h:379
#define AML_BANK_FIELD_OP
Definition: amlcode.h:187
#define AML_EXTERNAL_OP
Definition: amlcode.h:65
#define AML_NAME_OP
Definition: amlcode.h:54
#define AML_TYPE_NAMED_SIMPLE
Definition: amlcode.h:384
#define AML_INT_METHODCALL_OP
Definition: amlcode.h:210
#define AML_NSOPCODE
Definition: amlcode.h:325
#define AML_CLASS_METHOD_CALL
Definition: amlcode.h:409
#define AML_FIELD_OP
Definition: amlcode.h:181
#define AML_DATA_REGION_OP
Definition: amlcode.h:188
#define AML_METHOD_OP
Definition: amlcode.h:64
#define AML_TYPE_NAMED_FIELD
Definition: amlcode.h:383
#define AML_MUTEX_OP
Definition: amlcode.h:158
#define AML_EVENT_OP
Definition: amlcode.h:159
#define AML_POWER_RESOURCE_OP
Definition: amlcode.h:184
#define AML_SCOPE_OP
Definition: amlcode.h:60
#define AML_NSOBJECT
Definition: amlcode.h:326
#define AML_INT_NAMEPATH_OP
Definition: amlcode.h:205
#define AML_CLASS_INTERNAL
Definition: amlcode.h:407
#define AML_ALIAS_OP
Definition: amlcode.h:53
#define AML_NAMED
Definition: amlcode.h:323
#define AML_TYPE_NAMED_COMPLEX
Definition: amlcode.h:385
#define NULL
Definition: types.h:112
union node Node
Definition: types.h:1255
static const WCHAR Cleanup[]
Definition: register.c:80
ACPI_STATUS AcpiDsCreateField(ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:534
ACPI_STATUS AcpiDsCreateBankField(ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:748
ACPI_STATUS AcpiDsCreateBufferField(ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:165
ACPI_STATUS AcpiDsCreateIndexField(ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:842
ACPI_STATUS AcpiDsInitFieldObjects(ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:617
ACPI_STATUS AcpiDsCreateNode(ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, ACPI_PARSE_OBJECT *Op)
Definition: dsobject.c:302
ACPI_STATUS AcpiDsCreateOperands(ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *FirstArg)
Definition: dsutils.c:753
ACPI_STATUS AcpiDsExecBeginOp(ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp)
Definition: dswexec.c:234
ACPI_STATUS AcpiDsLoad2EndOp(ACPI_WALK_STATE *WalkState)
Definition: dswload2.c:418
ACPI_STATUS AcpiDsLoad2BeginOp(ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp)
Definition: dswload2.c:74
ACPI_STATUS AcpiDsScopeStackPush(ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE Type, ACPI_WALK_STATE *WalkState)
Definition: dswscope.c:107
ACPI_STATUS AcpiDsScopeStackPop(ACPI_WALK_STATE *WalkState)
Definition: dswscope.c:192
ACPI_STATUS AcpiEvInitializeRegion(ACPI_OPERAND_OBJECT *RegionObj)
Definition: evrgnini.c:629
ACPI_STATUS AcpiExCreateRegion(UINT8 *AmlStart, UINT32 AmlLength, UINT8 SpaceId, ACPI_WALK_STATE *WalkState)
Definition: excreate.c:268
ACPI_STATUS AcpiExCreateAlias(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:68
ACPI_STATUS AcpiExCreateMutex(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:206
ACPI_STATUS AcpiExCreateEvent(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:147
ACPI_STATUS AcpiExCreateProcessor(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:381
ACPI_STATUS AcpiExCreatePowerResource(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:433
ACPI_STATUS AcpiExCreateMethod(UINT8 *AmlStart, UINT32 AmlLength, ACPI_WALK_STATE *WalkState)
Definition: excreate.c:484
Status
Definition: gdiplustypes.h:25
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
ObjectType
Definition: metafile.c:81
UINT16 Flags
Definition: aclocal.h:873
UINT8 ObjectType
Definition: aclocal.h:874
union acpi_operand_object * Operands[ACPI_OBJ_NUM_OPERANDS+1]
Definition: acstruct.h:105
struct acpi_namespace_node * MethodNode
Definition: acstruct.h:116
ACPI_PARSE_OBJECT * Op
Definition: acstruct.h:118
ACPI_GENERIC_STATE * ScopeInfo
Definition: acstruct.h:124
const ACPI_OPCODE_INFO * OpInfo
Definition: acstruct.h:119
UINT8 NumOperands
Definition: acstruct.h:80
ACPI_OBJECT_COMMON Common
Definition: acobject.h:519
ACPI_PARSE_OBJ_NAMED Named
Definition: aclocal.h:1079
ACPI_PARSE_OBJ_COMMON Common
Definition: aclocal.h:1078
Definition: dlist.c:348
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170