ReactOS  0.4.14-dev-323-g6fe6a88
dswload2.c File Reference
#include "acpi.h"
#include "accommon.h"
#include "acparser.h"
#include "amlcode.h"
#include "acdispat.h"
#include "acinterp.h"
#include "acnamesp.h"
#include "acevents.h"
Include dependency graph for dswload2.c:

Go to the source code of this file.

Macros

#define _COMPONENT   ACPI_DISPATCHER
 

Functions

ACPI_STATUS AcpiDsLoad2BeginOp (ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp)
 
ACPI_STATUS AcpiDsLoad2EndOp (ACPI_WALK_STATE *WalkState)
 

Macro Definition Documentation

◆ _COMPONENT

#define _COMPONENT   ACPI_DISPATCHER

Definition at line 53 of file dswload2.c.

Function Documentation

◆ AcpiDsLoad2BeginOp()

ACPI_STATUS AcpiDsLoad2BeginOp ( ACPI_WALK_STATE WalkState,
ACPI_PARSE_OBJECT **  OutOp 
)

Definition at line 71 of file dswload2.c.

74 {
79  char *BufferPtr;
80  UINT32 Flags;
81 
82 
83  ACPI_FUNCTION_TRACE (DsLoad2BeginOp);
84 
85 
86  Op = WalkState->Op;
87  ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState));
88 
89  if (Op)
90  {
91  if ((WalkState->ControlState) &&
92  (WalkState->ControlState->Common.State ==
94  {
95  /* We are executing a while loop outside of a method */
96 
97  Status = AcpiDsExecBeginOp (WalkState, OutOp);
99  }
100 
101  /* We only care about Namespace opcodes here */
102 
103  if ((!(WalkState->OpInfo->Flags & AML_NSOPCODE) &&
104  (WalkState->Opcode != AML_INT_NAMEPATH_OP)) ||
105  (!(WalkState->OpInfo->Flags & AML_NAMED)))
106  {
108  }
109 
110  /* Get the name we are going to enter or lookup in the namespace */
111 
112  if (WalkState->Opcode == AML_INT_NAMEPATH_OP)
113  {
114  /* For Namepath op, get the path string */
115 
116  BufferPtr = Op->Common.Value.String;
117  if (!BufferPtr)
118  {
119  /* No name, just exit */
120 
122  }
123  }
124  else
125  {
126  /* Get name from the op */
127 
128  BufferPtr = ACPI_CAST_PTR (char, &Op->Named.Name);
129  }
130  }
131  else
132  {
133  /* Get the namestring from the raw AML */
134 
135  BufferPtr = AcpiPsGetNextNamestring (&WalkState->ParserState);
136  }
137 
138  /* Map the opcode into an internal object type */
139 
140  ObjectType = WalkState->OpInfo->ObjectType;
141 
143  "State=%p Op=%p Type=%X\n", WalkState, Op, ObjectType));
144 
145  switch (WalkState->Opcode)
146  {
147  case AML_FIELD_OP:
148  case AML_BANK_FIELD_OP:
149  case AML_INDEX_FIELD_OP:
150 
151  Node = NULL;
152  Status = AE_OK;
153  break;
154 
155  case AML_INT_NAMEPATH_OP:
156  /*
157  * The NamePath is an object reference to an existing object.
158  * Don't enter the name into the namespace, but look it up
159  * for use later.
160  */
161  Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
163  WalkState, &(Node));
164  break;
165 
166  case AML_SCOPE_OP:
167 
168  /* Special case for Scope(\) -> refers to the Root node */
169 
170  if (Op && (Op->Named.Node == AcpiGbl_RootNode))
171  {
172  Node = Op->Named.Node;
173 
174  Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState);
175  if (ACPI_FAILURE (Status))
176  {
178  }
179  }
180  else
181  {
182  /*
183  * The Path is an object reference to an existing object.
184  * Don't enter the name into the namespace, but look it up
185  * for use later.
186  */
187  Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
189  WalkState, &(Node));
190  if (ACPI_FAILURE (Status))
191  {
192 #ifdef ACPI_ASL_COMPILER
193  if (Status == AE_NOT_FOUND)
194  {
195  Status = AE_OK;
196  }
197  else
198  {
199  ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
200  BufferPtr, Status);
201  }
202 #else
203  ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
204  BufferPtr, Status);
205 #endif
207  }
208  }
209 
210  /*
211  * We must check to make sure that the target is
212  * one of the opcodes that actually opens a scope
213  */
214  switch (Node->Type)
215  {
216  case ACPI_TYPE_ANY:
217  case ACPI_TYPE_LOCAL_SCOPE: /* Scope */
218  case ACPI_TYPE_DEVICE:
219  case ACPI_TYPE_POWER:
220  case ACPI_TYPE_PROCESSOR:
221  case ACPI_TYPE_THERMAL:
222 
223  /* These are acceptable types */
224  break;
225 
226  case ACPI_TYPE_INTEGER:
227  case ACPI_TYPE_STRING:
228  case ACPI_TYPE_BUFFER:
229 
230  /*
231  * These types we will allow, but we will change the type.
232  * This enables some existing code of the form:
233  *
234  * Name (DEB, 0)
235  * Scope (DEB) { ... }
236  */
238  "Type override - [%4.4s] had invalid type (%s) "
239  "for Scope operator, changed to type ANY",
241 
242  Node->Type = ACPI_TYPE_ANY;
243  WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY;
244  break;
245 
246  case ACPI_TYPE_METHOD:
247 
248  /*
249  * Allow scope change to root during execution of module-level
250  * code. Root is typed METHOD during this time.
251  */
252  if ((Node == AcpiGbl_RootNode) &&
253  (WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
254  {
255  break;
256  }
257 
258  /*lint -fallthrough */
259 
260  default:
261 
262  /* All other types are an error */
263 
265  "Invalid type (%s) for target of "
266  "Scope operator [%4.4s] (Cannot override)",
268 
270  }
271  break;
272 
273  default:
274 
275  /* All other opcodes */
276 
277  if (Op && Op->Common.Node)
278  {
279  /* This op/node was previously entered into the namespace */
280 
281  Node = Op->Common.Node;
282 
284  {
285  Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState);
286  if (ACPI_FAILURE (Status))
287  {
289  }
290  }
291 
293  }
294 
295  /*
296  * Enter the named type into the internal namespace. We enter the name
297  * as we go downward in the parse tree. Any necessary subobjects that
298  * involve arguments to the opcode must be created as we go back up the
299  * parse tree later.
300  *
301  * Note: Name may already exist if we are executing a deferred opcode.
302  */
303  if (WalkState->DeferredNode)
304  {
305  /* This name is already in the namespace, get the node */
306 
307  Node = WalkState->DeferredNode;
308  Status = AE_OK;
309  break;
310  }
311 
313  if (WalkState->PassNumber == ACPI_IMODE_EXECUTE)
314  {
315  /* Execution mode, node cannot already exist, node is temporary */
316 
318 
319  if (!(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
320  {
322  }
323  }
324 
325 #ifdef ACPI_ASL_COMPILER
326 
327  /*
328  * Do not open a scope for AML_EXTERNAL_OP
329  * AcpiNsLookup can open a new scope based on the object type
330  * of this op. AML_EXTERNAL_OP is a declaration rather than a
331  * definition. In the case that this external is a method object,
332  * AcpiNsLookup will open a new scope. However, an AML_EXTERNAL_OP
333  * associated with the ACPI_TYPE_METHOD is a declaration, rather than
334  * a definition. Flags is set to avoid opening a scope for any
335  * AML_EXTERNAL_OP.
336  */
337  if (WalkState->Opcode == AML_EXTERNAL_OP)
338  {
340  }
341 #endif
342 
343  /*
344  * For name creation opcodes, the full namepath prefix must
345  * exist, except for the final (new) nameseg.
346  */
347  if (WalkState->OpInfo->Flags & AML_NAMED)
348  {
350  }
351 
352  /* Add new entry or lookup existing entry */
353 
354  Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
355  ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node);
356 
358  {
360  "***New Node [%4.4s] %p is temporary\n",
362  }
363  break;
364  }
365 
366  if (ACPI_FAILURE (Status))
367  {
368  ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
369  BufferPtr, Status);
371  }
372 
373  if (!Op)
374  {
375  /* Create a new op */
376 
377  Op = AcpiPsAllocOp (WalkState->Opcode, WalkState->Aml);
378  if (!Op)
379  {
381  }
382 
383  /* Initialize the new op */
384 
385  if (Node)
386  {
387  Op->Named.Name = Node->Name.Integer;
388  }
389  *OutOp = Op;
390  }
391 
392  /*
393  * Put the Node in the "op" object that the parser uses, so we
394  * can get it again quickly when this scope is closed
395  */
396  Op->Common.Node = Node;
398 }
#define ACPI_NS_TEMPORARY
Definition: acnamesp.h:69
#define ACPI_NS_SEARCH_PARENT
Definition: acnamesp.h:63
ObjectType
Definition: metafile.c:80
ACPI_PARSE_OBJ_COMMON Common
Definition: aclocal.h:1078
#define AML_NAMED
Definition: amlcode.h:323
#define ACPI_SUCCESS(a)
Definition: acexcep.h:94
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:329
#define ACPI_TYPE_THERMAL
Definition: actypes.h:691
#define AE_NO_MEMORY
Definition: acexcep.h:112
#define ACPI_WARNING(plist)
Definition: acoutput.h:238
#define ACPI_TYPE_BUFFER
Definition: actypes.h:681
#define ACPI_TYPE_INTEGER
Definition: actypes.h:679
#define ACPI_TYPE_POWER
Definition: actypes.h:689
ACPI_STATUS AcpiDsScopeStackPush(ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE Type, ACPI_WALK_STATE *WalkState)
Definition: dswscope.c:107
UINT8 ObjectType
Definition: aclocal.h:874
struct acpi_namespace_node * DeferredNode
Definition: acstruct.h:111
ACPI_PARSE_OBJECT * AcpiPsAllocOp(UINT16 Opcode, UINT8 *Aml)
Definition: psutils.c:130
#define ACPI_NS_ERROR_IF_FOUND
Definition: acnamesp.h:66
UINT32 ParseFlags
Definition: acstruct.h:95
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define ACPI_NS_PREFIX_MUST_EXIST
Definition: acnamesp.h:72
ACPI_GENERIC_STATE * ControlState
Definition: acstruct.h:110
#define AE_AML_OPERAND_TYPE
Definition: acexcep.h:182
#define AML_EXTERNAL_OP
Definition: amlcode.h:65
#define AML_INT_NAMEPATH_OP
Definition: amlcode.h:205
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
char * AcpiPsGetNextNamestring(ACPI_PARSE_STATE *ParserState)
Definition: psargs.c:172
unsigned int UINT32
union node Node
Definition: types.h:1255
#define ACPI_NS_DONT_OPEN_SCOPE
Definition: acnamesp.h:64
#define AE_INFO
Definition: acoutput.h:230
smooth NULL
Definition: ftsmooth.c:416
UINT32 ACPI_OBJECT_TYPE
Definition: actypes.h:676
ACPI_PARSE_OBJ_NAMED Named
Definition: aclocal.h:1079
UINT32 AcpiNsOpensScope(ACPI_OBJECT_TYPE Type)
Definition: nsutils.c:736
#define ACPI_DB_DISPATCH
Definition: acoutput.h:163
#define AML_BANK_FIELD_OP
Definition: amlcode.h:187
#define AML_NSOPCODE
Definition: amlcode.h:325
#define ACPI_TYPE_METHOD
Definition: actypes.h:686
ACPI_PARSE_OBJECT * Op
Definition: acstruct.h:118
#define AML_FIELD_OP
Definition: amlcode.h:181
#define ACPI_DEBUG_PRINT(pl)
Definition: acoutput.h:475
#define AML_SCOPE_OP
Definition: amlcode.h:60
#define AE_NOT_FOUND
Definition: acexcep.h:113
const ACPI_OPCODE_INFO * OpInfo
Definition: acstruct.h:119
#define AML_INDEX_FIELD_OP
Definition: amlcode.h:186
ACPI_GENERIC_STATE * ScopeInfo
Definition: acstruct.h:124
#define ACPI_TYPE_ANY
Definition: actypes.h:678
ACPI_PARSE_STATE ParserState
Definition: acstruct.h:97
ACPI_STATUS AcpiDsExecBeginOp(ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp)
Definition: dswexec.c:232
#define ACPI_TYPE_DEVICE
Definition: actypes.h:684
ACPI_COMMON_STATE Common
Definition: aclocal.h:822
#define ACPI_TYPE_PROCESSOR
Definition: actypes.h:690
Status
Definition: gdiplustypes.h:24
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_NS_NO_UPSEARCH
Definition: acnamesp.h:62
#define ACPI_FUNCTION_TRACE(a)
Definition: acoutput.h:480
#define ACPI_PARSE_MODULE_LEVEL
Definition: acparser.h:67
const char * AcpiUtGetTypeName(ACPI_OBJECT_TYPE Type)
Definition: utdecode.c:249
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
const char * AcpiUtGetNodeName(void *Object)
Definition: utdecode.c:305
UINT8 PassNumber
Definition: acstruct.h:87
#define ACPI_TYPE_LOCAL_SCOPE
Definition: actypes.h:717
UINT16 Opcode
Definition: acstruct.h:78
#define ACPI_TYPE_STRING
Definition: actypes.h:680
#define ACPI_CAST_PTR(t, p)
Definition: actypes.h:544
#define ACPI_ERROR_NAMESPACE(s, p, e)
Definition: acmacros.h:462
#define ACPI_CONTROL_CONDITIONAL_EXECUTING
Definition: aclocal.h:670
#define AE_OK
Definition: acexcep.h:97
UINT16 Flags
Definition: aclocal.h:873
Definition: dlist.c:348
UINT8 * Aml
Definition: acstruct.h:91

Referenced by AcpiDsExecBeginOp(), and AcpiDsInitCallbacks().

◆ AcpiDsLoad2EndOp()

ACPI_STATUS AcpiDsLoad2EndOp ( ACPI_WALK_STATE WalkState)

Definition at line 415 of file dswload2.c.

417 {
418  ACPI_PARSE_OBJECT *Op;
422  ACPI_PARSE_OBJECT *Arg;
423  ACPI_NAMESPACE_NODE *NewNode;
424  UINT32 i;
425  UINT8 RegionSpace;
426 
427 
428  ACPI_FUNCTION_TRACE (DsLoad2EndOp);
429 
430  Op = WalkState->Op;
431  ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Opcode [%s] Op %p State %p\n",
432  WalkState->OpInfo->Name, Op, WalkState));
433 
434  /* Check if opcode had an associated namespace object */
435 
436  if (!(WalkState->OpInfo->Flags & AML_NSOBJECT))
437  {
439  }
440 
441  if (Op->Common.AmlOpcode == AML_SCOPE_OP)
442  {
444  "Ending scope Op=%p State=%p\n", Op, WalkState));
445  }
446 
447  ObjectType = WalkState->OpInfo->ObjectType;
448 
449  /*
450  * Get the Node/name from the earlier lookup
451  * (It was saved in the *op structure)
452  */
453  Node = Op->Common.Node;
454 
455  /*
456  * Put the Node on the object stack (Contains the ACPI Name of
457  * this object)
458  */
459  WalkState->Operands[0] = (void *) Node;
460  WalkState->NumOperands = 1;
461 
462  /* Pop the scope stack */
463 
465  (Op->Common.AmlOpcode != AML_INT_METHODCALL_OP))
466  {
467  ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s) Popping scope for Op %p\n",
469 
470  Status = AcpiDsScopeStackPop (WalkState);
471  if (ACPI_FAILURE (Status))
472  {
473  goto Cleanup;
474  }
475  }
476 
477  /*
478  * Named operations are as follows:
479  *
480  * AML_ALIAS
481  * AML_BANKFIELD
482  * AML_CREATEBITFIELD
483  * AML_CREATEBYTEFIELD
484  * AML_CREATEDWORDFIELD
485  * AML_CREATEFIELD
486  * AML_CREATEQWORDFIELD
487  * AML_CREATEWORDFIELD
488  * AML_DATA_REGION
489  * AML_DEVICE
490  * AML_EVENT
491  * AML_FIELD
492  * AML_INDEXFIELD
493  * AML_METHOD
494  * AML_METHODCALL
495  * AML_MUTEX
496  * AML_NAME
497  * AML_NAMEDFIELD
498  * AML_OPREGION
499  * AML_POWERRES
500  * AML_PROCESSOR
501  * AML_SCOPE
502  * AML_THERMALZONE
503  */
504 
506  "Create-Load [%s] State=%p Op=%p NamedObj=%p\n",
507  AcpiPsGetOpcodeName (Op->Common.AmlOpcode), WalkState, Op, Node));
508 
509  /* Decode the opcode */
510 
511  Arg = Op->Common.Value.Arg;
512 
513  switch (WalkState->OpInfo->Type)
514  {
515 
517  /*
518  * Create the field object, but the field buffer and index must
519  * be evaluated later during the execution phase
520  */
521  Status = AcpiDsCreateBufferField (Op, WalkState);
522  break;
523 
525  /*
526  * If we are executing a method, initialize the field
527  */
528  if (WalkState->MethodNode)
529  {
530  Status = AcpiDsInitFieldObjects (Op, WalkState);
531  }
532 
533  switch (Op->Common.AmlOpcode)
534  {
535  case AML_INDEX_FIELD_OP:
536 
538  Op, (ACPI_HANDLE) Arg->Common.Node, WalkState);
539  break;
540 
541  case AML_BANK_FIELD_OP:
542 
543  Status = AcpiDsCreateBankField (Op, Arg->Common.Node, WalkState);
544  break;
545 
546  case AML_FIELD_OP:
547 
548  Status = AcpiDsCreateField (Op, Arg->Common.Node, WalkState);
549  break;
550 
551  default:
552 
553  /* All NAMED_FIELD opcodes must be handled above */
554  break;
555  }
556  break;
557 
559 
560  Status = AcpiDsCreateOperands (WalkState, Arg);
561  if (ACPI_FAILURE (Status))
562  {
563  goto Cleanup;
564  }
565 
566  switch (Op->Common.AmlOpcode)
567  {
568  case AML_PROCESSOR_OP:
569 
570  Status = AcpiExCreateProcessor (WalkState);
571  break;
572 
574 
575  Status = AcpiExCreatePowerResource (WalkState);
576  break;
577 
578  case AML_MUTEX_OP:
579 
580  Status = AcpiExCreateMutex (WalkState);
581  break;
582 
583  case AML_EVENT_OP:
584 
585  Status = AcpiExCreateEvent (WalkState);
586  break;
587 
588  case AML_ALIAS_OP:
589 
590  Status = AcpiExCreateAlias (WalkState);
591  break;
592 
593  default:
594 
595  /* Unknown opcode */
596 
597  Status = AE_OK;
598  goto Cleanup;
599  }
600 
601  /* Delete operands */
602 
603  for (i = 1; i < WalkState->NumOperands; i++)
604  {
605  AcpiUtRemoveReference (WalkState->Operands[i]);
606  WalkState->Operands[i] = NULL;
607  }
608 
609  break;
610 
612 
613  switch (Op->Common.AmlOpcode)
614  {
615  case AML_REGION_OP:
616  case AML_DATA_REGION_OP:
617 
618  if (Op->Common.AmlOpcode == AML_REGION_OP)
619  {
620  RegionSpace = (ACPI_ADR_SPACE_TYPE)
621  ((Op->Common.Value.Arg)->Common.Value.Integer);
622  }
623  else
624  {
625  RegionSpace = ACPI_ADR_SPACE_DATA_TABLE;
626  }
627 
628  /*
629  * The OpRegion is not fully parsed at this time. The only valid
630  * argument is the SpaceId. (We must save the address of the
631  * AML of the address and length operands)
632  *
633  * If we have a valid region, initialize it. The namespace is
634  * unlocked at this point.
635  *
636  * Need to unlock interpreter if it is locked (if we are running
637  * a control method), in order to allow _REG methods to be run
638  * during AcpiEvInitializeRegion.
639  */
640  if (WalkState->MethodNode)
641  {
642  /*
643  * Executing a method: initialize the region and unlock
644  * the interpreter
645  */
647  Op->Named.Length, RegionSpace, WalkState);
648  if (ACPI_FAILURE (Status))
649  {
651  }
652  }
653 
656  break;
657 
658  case AML_NAME_OP:
659 
660  Status = AcpiDsCreateNode (WalkState, Node, Op);
661  break;
662 
663  case AML_METHOD_OP:
664  /*
665  * MethodOp PkgLength NameString MethodFlags TermList
666  *
667  * Note: We must create the method node/object pair as soon as we
668  * see the method declaration. This allows later pass1 parsing
669  * of invocations of the method (need to know the number of
670  * arguments.)
671  */
673  "LOADING-Method: State=%p Op=%p NamedObj=%p\n",
674  WalkState, Op, Op->Named.Node));
675 
676  if (!AcpiNsGetAttachedObject (Op->Named.Node))
677  {
678  WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node);
679  WalkState->NumOperands = 1;
680 
682  WalkState, Op->Common.Value.Arg);
683  if (ACPI_SUCCESS (Status))
684  {
686  Op->Named.Data, Op->Named.Length, WalkState);
687  }
688 
689  WalkState->Operands[0] = NULL;
690  WalkState->NumOperands = 0;
691 
692  if (ACPI_FAILURE (Status))
693  {
695  }
696  }
697  break;
698 
699 
700  default:
701 
702  /* All NAMED_COMPLEX opcodes must be handled above */
703  break;
704  }
705  break;
706 
707  case AML_CLASS_INTERNAL:
708 
709  /* case AML_INT_NAMEPATH_OP: */
710  break;
711 
713 
715  "RESOLVING-MethodCall: State=%p Op=%p NamedObj=%p\n",
716  WalkState, Op, Node));
717 
718  /*
719  * Lookup the method name and save the Node
720  */
721  Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String,
724  WalkState, &(NewNode));
725  if (ACPI_SUCCESS (Status))
726  {
727  /*
728  * Make sure that what we found is indeed a method
729  * We didn't search for a method on purpose, to see if the name
730  * would resolve
731  */
732  if (NewNode->Type != ACPI_TYPE_METHOD)
733  {
735  }
736 
737  /* We could put the returned object (Node) on the object stack for
738  * later, but for now, we will put it in the "op" object that the
739  * parser uses, so we can get it again at the end of this scope
740  */
741  Op->Common.Node = NewNode;
742  }
743  else
744  {
745  ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
746  Arg->Common.Value.String, Status);
747  }
748  break;
749 
750 
751  default:
752 
753  break;
754  }
755 
756 Cleanup:
757 
758  /* Remove the Node pushed at the very beginning */
759 
760  WalkState->Operands[0] = NULL;
761  WalkState->NumOperands = 0;
763 }
ACPI_STATUS AcpiDsCreateOperands(ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *FirstArg)
Definition: dsutils.c:753
#define ACPI_NS_SEARCH_PARENT
Definition: acnamesp.h:63
ACPI_STATUS AcpiDsInitFieldObjects(ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:606
ObjectType
Definition: metafile.c:80
ACPI_STATUS AcpiEvInitializeRegion(ACPI_OPERAND_OBJECT *RegionObj)
Definition: evrgnini.c:569
ACPI_PARSE_OBJ_COMMON Common
Definition: aclocal.h:1078
UINT8 ACPI_ADR_SPACE_TYPE
Definition: actypes.h:849
const char * AcpiPsGetOpcodeName(UINT16 Opcode)
Definition: psopinfo.c:169
#define ACPI_SUCCESS(a)
Definition: acexcep.h:94
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:329
ACPI_STATUS AcpiDsScopeStackPop(ACPI_WALK_STATE *WalkState)
Definition: dswscope.c:192
UINT8 NumOperands
Definition: acstruct.h:80
#define AML_NSOBJECT
Definition: amlcode.h:326
ACPI_STATUS AcpiExCreatePowerResource(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:432
#define AML_INT_METHODCALL_OP
Definition: amlcode.h:210
UINT8 ObjectType
Definition: aclocal.h:874
#define ACPI_ADR_SPACE_DATA_TABLE
Definition: actypes.h:873
UINT32 ACPI_STATUS
Definition: actypes.h:460
ACPI_STATUS AcpiDsCreateBankField(ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:739
#define AE_AML_OPERAND_TYPE
Definition: acexcep.h:182
#define AML_REGION_OP
Definition: amlcode.h:180
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
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
#define AML_NAME_OP
Definition: amlcode.h:54
ACPI_STATUS AcpiExCreateMethod(UINT8 *AmlStart, UINT32 AmlLength, ACPI_WALK_STATE *WalkState)
Definition: excreate.c:483
#define AML_TYPE_NAMED_SIMPLE
Definition: amlcode.h:384
unsigned int UINT32
union node Node
Definition: types.h:1255
#define ACPI_NS_DONT_OPEN_SCOPE
Definition: acnamesp.h:64
#define AML_PROCESSOR_OP
Definition: amlcode.h:183
ACPI_STATUS AcpiDsCreateField(ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:532
smooth NULL
Definition: ftsmooth.c:416
#define AML_MUTEX_OP
Definition: amlcode.h:158
UINT32 ACPI_OBJECT_TYPE
Definition: actypes.h:676
ACPI_PARSE_OBJ_NAMED Named
Definition: aclocal.h:1079
#define AML_CLASS_METHOD_CALL
Definition: amlcode.h:409
UINT32 AcpiNsOpensScope(ACPI_OBJECT_TYPE Type)
Definition: nsutils.c:736
#define ACPI_DB_DISPATCH
Definition: acoutput.h:163
#define AML_BANK_FIELD_OP
Definition: amlcode.h:187
#define ACPI_TYPE_METHOD
Definition: actypes.h:686
ACPI_STATUS AcpiExCreateRegion(UINT8 *AmlStart, UINT32 AmlLength, UINT8 SpaceId, ACPI_WALK_STATE *WalkState)
Definition: excreate.c:268
#define AML_EVENT_OP
Definition: amlcode.h:159
ACPI_PARSE_OBJECT * Op
Definition: acstruct.h:118
ACPI_STATUS AcpiExCreateAlias(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:68
#define AML_FIELD_OP
Definition: amlcode.h:181
#define ACPI_DEBUG_PRINT(pl)
Definition: acoutput.h:475
ACPI_STATUS AcpiDsCreateNode(ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, ACPI_PARSE_OBJECT *Op)
Definition: dsobject.c:302
#define AML_SCOPE_OP
Definition: amlcode.h:60
ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject(ACPI_NAMESPACE_NODE *Node)
Definition: nsobject.c:308
ACPI_STATUS AcpiDsCreateIndexField(ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:833
#define AML_ALIAS_OP
Definition: amlcode.h:53
const ACPI_OPCODE_INFO * OpInfo
Definition: acstruct.h:119
#define AML_INDEX_FIELD_OP
Definition: amlcode.h:186
ACPI_GENERIC_STATE * ScopeInfo
Definition: acstruct.h:124
#define ACPI_TYPE_ANY
Definition: actypes.h:678
#define AML_METHOD_OP
Definition: amlcode.h:64
static const WCHAR Cleanup[]
Definition: register.c:80
struct acpi_namespace_node * MethodNode
Definition: acstruct.h:116
Status
Definition: gdiplustypes.h:24
union acpi_operand_object * Operands[ACPI_OBJ_NUM_OPERANDS+1]
Definition: acstruct.h:105
ACPI_STATUS AcpiExCreateMutex(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:206
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_FUNCTION_TRACE(a)
Definition: acoutput.h:480
void AcpiUtRemoveReference(ACPI_OPERAND_OBJECT *Object)
Definition: utdelete.c:784
const char * AcpiUtGetTypeName(ACPI_OBJECT_TYPE Type)
Definition: utdecode.c:249
#define AML_CLASS_INTERNAL
Definition: amlcode.h:407
#define AML_TYPE_NAMED_COMPLEX
Definition: amlcode.h:385
#define AML_TYPE_NAMED_FIELD
Definition: amlcode.h:383
#define AML_TYPE_CREATE_FIELD
Definition: amlcode.h:379
ACPI_STATUS AcpiDsCreateBufferField(ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:165
ACPI_STATUS AcpiExCreateEvent(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:147
#define ACPI_CAST_PTR(t, p)
Definition: actypes.h:544
#define ACPI_ERROR_NAMESPACE(s, p, e)
Definition: acmacros.h:462
unsigned char UINT8
#define AML_DATA_REGION_OP
Definition: amlcode.h:188
#define AE_OK
Definition: acexcep.h:97
UINT16 Flags
Definition: aclocal.h:873
ACPI_STATUS AcpiExCreateProcessor(ACPI_WALK_STATE *WalkState)
Definition: excreate.c:380
Definition: dlist.c:348
#define AML_POWER_RESOURCE_OP
Definition: amlcode.h:184

Referenced by AcpiDsExecEndOp(), and AcpiDsInitCallbacks().