ReactOS 0.4.16-dev-340-g0540c21
dswload.c
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * Module Name: dswload - Dispatcher first 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#ifdef ACPI_ASL_COMPILER
52#include "acdisasm.h"
53#endif
54
55#define _COMPONENT ACPI_DISPATCHER
56 ACPI_MODULE_NAME ("dswload")
57
58
59/*******************************************************************************
60 *
61 * FUNCTION: AcpiDsInitCallbacks
62 *
63 * PARAMETERS: WalkState - Current state of the parse tree walk
64 * PassNumber - 1, 2, or 3
65 *
66 * RETURN: Status
67 *
68 * DESCRIPTION: Init walk state callbacks
69 *
70 ******************************************************************************/
71
74 ACPI_WALK_STATE *WalkState,
75 UINT32 PassNumber)
76{
77
78 switch (PassNumber)
79 {
80 case 0:
81
82 /* Parse only - caller will setup callbacks */
83
84 WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
87 WalkState->DescendingCallback = NULL;
88 WalkState->AscendingCallback = NULL;
89 break;
90
91 case 1:
92
93 /* Load pass 1 */
94
95 WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
97 WalkState->DescendingCallback = AcpiDsLoad1BeginOp;
98 WalkState->AscendingCallback = AcpiDsLoad1EndOp;
99 break;
100
101 case 2:
102
103 /* Load pass 2 */
104
105 WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 |
107 WalkState->DescendingCallback = AcpiDsLoad2BeginOp;
108 WalkState->AscendingCallback = AcpiDsLoad2EndOp;
109 break;
110
111 case 3:
112
113 /* Execution pass */
114
115 WalkState->ParseFlags |= ACPI_PARSE_EXECUTE |
117 WalkState->DescendingCallback = AcpiDsExecBeginOp;
118 WalkState->AscendingCallback = AcpiDsExecEndOp;
119 break;
120
121 default:
122
123 return (AE_BAD_PARAMETER);
124 }
125
126 return (AE_OK);
127}
128
129
130/*******************************************************************************
131 *
132 * FUNCTION: AcpiDsLoad1BeginOp
133 *
134 * PARAMETERS: WalkState - Current state of the parse tree walk
135 * OutOp - Where to return op if a new one is created
136 *
137 * RETURN: Status
138 *
139 * DESCRIPTION: Descending callback used during the loading of ACPI tables.
140 *
141 ******************************************************************************/
142
145 ACPI_WALK_STATE *WalkState,
146 ACPI_PARSE_OBJECT **OutOp)
147{
152 char *Path;
154
155
156 ACPI_FUNCTION_TRACE_PTR (DsLoad1BeginOp, WalkState->Op);
157
158
159 Op = WalkState->Op;
160 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState));
161
162 /* We are only interested in opcodes that have an associated name */
163
164 if (Op)
165 {
166 if (!(WalkState->OpInfo->Flags & AML_NAMED))
167 {
168 *OutOp = Op;
170 }
171
172 /* Check if this object has already been installed in the namespace */
173
174 if (Op->Common.Node)
175 {
176 *OutOp = Op;
178 }
179 }
180
182
183 /* Map the raw opcode into an internal object type */
184
185 ObjectType = WalkState->OpInfo->ObjectType;
186
188 "State=%p Op=%p [%s]\n", WalkState, Op,
190
191 switch (WalkState->Opcode)
192 {
193 case AML_SCOPE_OP:
194 /*
195 * The target name of the Scope() operator must exist at this point so
196 * that we can actually open the scope to enter new names underneath it.
197 * Allow search-to-root for single namesegs.
198 */
201#ifdef ACPI_ASL_COMPILER
202 if (Status == AE_NOT_FOUND)
203 {
204 /*
205 * Table disassembly:
206 * Target of Scope() not found. Generate an External for it, and
207 * insert the name into the namespace.
208 */
212 WalkState, &Node);
213 }
214#endif
215 if (ACPI_FAILURE (Status))
216 {
219 }
220
221 /*
222 * Check to make sure that the target is
223 * one of the opcodes that actually opens a scope
224 */
225 switch (Node->Type)
226 {
227 case ACPI_TYPE_ANY:
228 case ACPI_TYPE_LOCAL_SCOPE: /* Scope */
229 case ACPI_TYPE_DEVICE:
230 case ACPI_TYPE_POWER:
233
234 /* These are acceptable types */
235 break;
236
238 case ACPI_TYPE_STRING:
239 case ACPI_TYPE_BUFFER:
240 /*
241 * These types we will allow, but we will change the type.
242 * This enables some existing code of the form:
243 *
244 * Name (DEB, 0)
245 * Scope (DEB) { ... }
246 *
247 * Note: silently change the type here. On the second pass,
248 * we will report a warning
249 */
251 "Type override - [%4.4s] had invalid type (%s) "
252 "for Scope operator, changed to type ANY\n",
254
255 Node->Type = ACPI_TYPE_ANY;
256 WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY;
257 break;
258
259 case ACPI_TYPE_METHOD:
260 /*
261 * Allow scope change to root during execution of module-level
262 * code. Root is typed METHOD during this time.
263 */
264 if ((Node == AcpiGbl_RootNode) &&
265 (WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
266 {
267 break;
268 }
269
271
272 default:
273
274 /* All other types are an error */
275
277 "Invalid type (%s) for target of "
278 "Scope operator [%4.4s] (Cannot override)",
280
282 }
283 break;
284
285 default:
286 /*
287 * For all other named opcodes, we will enter the name into
288 * the namespace.
289 *
290 * Setup the search flags.
291 * Since we are entering a name into the namespace, we do not want to
292 * enable the search-to-root upsearch.
293 *
294 * There are only two conditions where it is acceptable that the name
295 * already exists:
296 * 1) the Scope() operator can reopen a scoping object that was
297 * previously defined (Scope, Method, Device, etc.)
298 * 2) Whenever we are parsing a deferred opcode (OpRegion, Buffer,
299 * BufferField, or Package), the name of the object is already
300 * in the namespace.
301 */
302 if (WalkState->DeferredNode)
303 {
304 /* This name is already in the namespace, get the node */
305
306 Node = WalkState->DeferredNode;
307 Status = AE_OK;
308 break;
309 }
310
311 /*
312 * If we are executing a method, do not create any namespace objects
313 * during the load phase, only during execution.
314 */
315 if (WalkState->MethodNode)
316 {
317 Node = NULL;
318 Status = AE_OK;
319 break;
320 }
321
323 if ((WalkState->Opcode != AML_SCOPE_OP) &&
324 (!(WalkState->ParseFlags & ACPI_PARSE_DEFERRED_OP)))
325 {
326 if (WalkState->NamespaceOverride)
327 {
329 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Override allowed\n",
331 }
332 else
333 {
335 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Cannot already exist\n",
337 }
338 }
339 else
340 {
342 "[%s] Both Find or Create allowed\n",
344 }
345
346 /*
347 * Enter the named type into the internal namespace. We enter the name
348 * as we go downward in the parse tree. Any necessary subobjects that
349 * involve arguments to the opcode must be created as we go back up the
350 * parse tree later.
351 */
353 ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node);
354 if (ACPI_FAILURE (Status))
355 {
357 {
358 /* The name already exists in this scope */
359
360 if (Node->Flags & ANOBJ_IS_EXTERNAL)
361 {
362 /*
363 * Allow one create on an object or segment that was
364 * previously declared External
365 */
366 Node->Flags &= ~ANOBJ_IS_EXTERNAL;
367 Node->Type = (UINT8) ObjectType;
368
369 /* Just retyped a node, probably will need to open a scope */
370
372 {
374 Node, ObjectType, WalkState);
375 if (ACPI_FAILURE (Status))
376 {
378 }
379 }
380
381 Status = AE_OK;
382 }
383 }
384
385 if (ACPI_FAILURE (Status))
386 {
389 }
390 }
391 break;
392 }
393
394 /* Common exit */
395
396 if (!Op)
397 {
398 /* Create a new op */
399
400 Op = AcpiPsAllocOp (WalkState->Opcode, WalkState->Aml);
401 if (!Op)
402 {
404 }
405 }
406
407 /* Initialize the op */
408
409#ifdef ACPI_CONSTANT_EVAL_ONLY
410 Op->Named.Path = Path;
411#endif
412
413 if (Node)
414 {
415 /*
416 * Put the Node in the "op" object that the parser uses, so we
417 * can get it again quickly when this scope is closed
418 */
419 Op->Common.Node = Node;
420 Op->Named.Name = Node->Name.Integer;
421 }
422
424 *OutOp = Op;
426}
427
428
429/*******************************************************************************
430 *
431 * FUNCTION: AcpiDsLoad1EndOp
432 *
433 * PARAMETERS: WalkState - Current state of the parse tree walk
434 *
435 * RETURN: Status
436 *
437 * DESCRIPTION: Ascending callback used during the loading of the namespace,
438 * both control methods and everything else.
439 *
440 ******************************************************************************/
441
444 ACPI_WALK_STATE *WalkState)
445{
449#ifdef ACPI_ASL_COMPILER
450 UINT8 ParamCount;
451#endif
452
453
454 ACPI_FUNCTION_TRACE (DsLoad1EndOp);
455
456
457 Op = WalkState->Op;
458 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState));
459
460 /*
461 * Disassembler: handle create field operators here.
462 *
463 * CreateBufferField is a deferred op that is typically processed in load
464 * pass 2. However, disassembly of control method contents walk the parse
465 * tree with ACPI_PARSE_LOAD_PASS1 and AML_CREATE operators are processed
466 * in a later walk. This is a problem when there is a control method that
467 * has the same name as the AML_CREATE object. In this case, any use of the
468 * name segment will be detected as a method call rather than a reference
469 * to a buffer field.
470 *
471 * This earlier creation during disassembly solves this issue by inserting
472 * the named object in the ACPI namespace so that references to this name
473 * would be a name string rather than a method call.
474 */
475 if ((WalkState->ParseFlags & ACPI_PARSE_DISASSEMBLE) &&
476 (WalkState->OpInfo->Flags & AML_CREATE))
477 {
478 Status = AcpiDsCreateBufferField (Op, WalkState);
480 }
481
482 /* We are only interested in opcodes that have an associated name */
483
484 if (!(WalkState->OpInfo->Flags & (AML_NAMED | AML_FIELD)))
485 {
487 }
488
489 /* Get the object type to determine if we should pop the scope */
490
491 ObjectType = WalkState->OpInfo->ObjectType;
492
493 if (WalkState->OpInfo->Flags & AML_FIELD)
494 {
495 /*
496 * If we are executing a method, do not create any namespace objects
497 * during the load phase, only during execution.
498 */
499 if (!WalkState->MethodNode)
500 {
501 if (WalkState->Opcode == AML_FIELD_OP ||
502 WalkState->Opcode == AML_BANK_FIELD_OP ||
503 WalkState->Opcode == AML_INDEX_FIELD_OP)
504 {
505 Status = AcpiDsInitFieldObjects (Op, WalkState);
506 }
507 }
509 }
510
511 /*
512 * If we are executing a method, do not create any namespace objects
513 * during the load phase, only during execution.
514 */
515 if (!WalkState->MethodNode)
516 {
517 if (Op->Common.AmlOpcode == AML_REGION_OP)
518 {
521 ((Op->Common.Value.Arg)->Common.Value.Integer),
522 WalkState);
523 if (ACPI_FAILURE (Status))
524 {
526 }
527 }
528 else if (Op->Common.AmlOpcode == AML_DATA_REGION_OP)
529 {
531 ACPI_ADR_SPACE_DATA_TABLE, WalkState);
532 if (ACPI_FAILURE (Status))
533 {
535 }
536 }
537 }
538
539 if (Op->Common.AmlOpcode == AML_NAME_OP)
540 {
541 /* For Name opcode, get the object type from the argument */
542
543 if (Op->Common.Value.Arg)
544 {
546 (Op->Common.Value.Arg)->Common.AmlOpcode))->ObjectType;
547
548 /* Set node type if we have a namespace node */
549
550 if (Op->Common.Node)
551 {
552 Op->Common.Node->Type = (UINT8) ObjectType;
553 }
554 }
555 }
556
557#ifdef ACPI_ASL_COMPILER
558 /*
559 * For external opcode, get the object type from the argument and
560 * get the parameter count from the argument's next.
561 */
562 if (AcpiGbl_DisasmFlag &&
563 Op->Common.Node &&
564 Op->Common.AmlOpcode == AML_EXTERNAL_OP)
565 {
566 /*
567 * Note, if this external is not a method
568 * Op->Common.Value.Arg->Common.Next->Common.Value.Integer == 0
569 * Therefore, ParamCount will be 0.
570 */
571 ParamCount = (UINT8) Op->Common.Value.Arg->Common.Next->Common.Value.Integer;
572 ObjectType = (UINT8) Op->Common.Value.Arg->Common.Value.Integer;
573 Op->Common.Node->Flags |= ANOBJ_IS_EXTERNAL;
574 Op->Common.Node->Type = (UINT8) ObjectType;
575
577 &Op->Common.Node, ParamCount);
578
579 /*
580 * Add the external to the external list because we may be
581 * emitting code based off of the items within the external list.
582 */
583 AcpiDmAddOpToExternalList (Op, Op->Named.Path, (UINT8)ObjectType, ParamCount,
585 }
586#endif
587
588 /*
589 * If we are executing a method, do not create any namespace objects
590 * during the load phase, only during execution.
591 */
592 if (!WalkState->MethodNode)
593 {
594 if (Op->Common.AmlOpcode == AML_METHOD_OP)
595 {
596 /*
597 * MethodOp PkgLength NameString MethodFlags TermList
598 *
599 * Note: We must create the method node/object pair as soon as we
600 * see the method declaration. This allows later pass1 parsing
601 * of invocations of the method (need to know the number of
602 * arguments.)
603 */
605 "LOADING-Method: State=%p Op=%p NamedObj=%p\n",
606 WalkState, Op, Op->Named.Node));
607
608 if (!AcpiNsGetAttachedObject (Op->Named.Node))
609 {
610 WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node);
611 WalkState->NumOperands = 1;
612
614 WalkState, Op->Common.Value.Arg);
615 if (ACPI_SUCCESS (Status))
616 {
618 Op->Named.Length, WalkState);
619 }
620
621 WalkState->Operands[0] = NULL;
622 WalkState->NumOperands = 0;
623
624 if (ACPI_FAILURE (Status))
625 {
627 }
628 }
629 }
630 }
631
632 /* Pop the scope stack (only if loading a table) */
633
634 if (!WalkState->MethodNode &&
635 Op->Common.AmlOpcode != AML_EXTERNAL_OP &&
637 {
638 ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s): Popping scope for Op %p\n",
640
641 Status = AcpiDsScopeStackPop (WalkState);
642 }
643
645}
unsigned char UINT8
unsigned int UINT32
PRTL_UNICODE_STRING_BUFFER Path
void AcpiDmAddOpToExternalList(ACPI_PARSE_OBJECT *Op, char *Path, UINT8 Type, UINT32 Value, UINT16 Flags)
void AcpiDmCreateSubobjectForExternal(UINT8 Type, ACPI_NAMESPACE_NODE **Node, UINT32 Value)
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
#define AE_BAD_PARAMETER
Definition: acexcep.h:151
#define AE_ALREADY_EXISTS
Definition: acexcep.h:115
#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
#define ANOBJ_IS_EXTERNAL
Definition: aclocal.h:224
@ ACPI_IMODE_LOAD_PASS1
Definition: aclocal.h:167
@ ACPI_IMODE_EXECUTE
Definition: aclocal.h:169
#define ACPI_EXT_RESOLVED_REFERENCE
Definition: aclocal.h:1379
#define ACPI_EXT_ORIGIN_FROM_OPCODE
Definition: aclocal.h:1383
#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
#define ACPI_NS_OVERRIDE_IF_FOUND
Definition: acnamesp.h:70
ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject(ACPI_NAMESPACE_NODE *Node)
Definition: nsobject.c:308
#define ACPI_NS_NO_UPSEARCH
Definition: acnamesp.h:62
#define ACPI_NS_ERROR_IF_FOUND
Definition: acnamesp.h:66
#define ACPI_NS_SEARCH_PARENT
Definition: acnamesp.h:63
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_MODULE_NAME(Name)
Definition: acoutput.h:216
#define ACPI_FUNCTION_TRACE_PTR(a, b)
Definition: acoutput.h:481
#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
#define ACPI_DB_INFO
Definition: acoutput.h:153
#define ACPI_PARSE_EXECUTE
Definition: acparser.h:61
#define ACPI_PARSE_LOAD_PASS1
Definition: acparser.h:59
#define ACPI_PARSE_DISASSEMBLE
Definition: acparser.h:65
#define ACPI_PARSE_DEFERRED_OP
Definition: acparser.h:64
char * AcpiPsGetNextNamestring(ACPI_PARSE_STATE *ParserState)
Definition: psargs.c:172
#define ACPI_PARSE_DELETE_TREE
Definition: acparser.h:55
void AcpiPsAppendArg(ACPI_PARSE_OBJECT *op, ACPI_PARSE_OBJECT *arg)
Definition: pstree.c:138
#define ACPI_PARSE_MODULE_LEVEL
Definition: acparser.h:67
const ACPI_OPCODE_INFO * AcpiPsGetOpcodeInfo(UINT16 Opcode)
Definition: psopinfo.c:72
ACPI_PARSE_OBJECT * AcpiPsGetParentScope(ACPI_PARSE_STATE *state)
Definition: psscope.c:65
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_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
#define AML_REGION_OP
Definition: amlcode.h:180
#define AML_INDEX_FIELD_OP
Definition: amlcode.h:186
#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_FIELD_OP
Definition: amlcode.h:181
#define AML_DATA_REGION_OP
Definition: amlcode.h:188
#define AML_FIELD
Definition: amlcode.h:321
#define AML_METHOD_OP
Definition: amlcode.h:64
#define AML_CREATE
Definition: amlcode.h:320
#define AML_SCOPE_OP
Definition: amlcode.h:60
#define AML_NAMED
Definition: amlcode.h:323
#define NULL
Definition: types.h:112
union node Node
Definition: types.h:1255
ACPI_STATUS AcpiDsCreateBufferField(ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:165
ACPI_STATUS AcpiDsInitFieldObjects(ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState)
Definition: dsfield.c:617
ACPI_STATUS AcpiDsCreateOperands(ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *FirstArg)
Definition: dsutils.c:753
ACPI_STATUS AcpiDsExecEndOp(ACPI_WALK_STATE *WalkState)
Definition: dswexec.c:392
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 AcpiDsLoad1EndOp(ACPI_WALK_STATE *WalkState)
Definition: dswload.c:443
ACPI_STATUS AcpiDsLoad1BeginOp(ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp)
Definition: dswload.c:144
ACPI_STATUS AcpiDsInitCallbacks(ACPI_WALK_STATE *WalkState, UINT32 PassNumber)
Definition: dswload.c:73
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 AcpiExCreateRegion(UINT8 *AmlStart, UINT32 AmlLength, UINT8 SpaceId, ACPI_WALK_STATE *WalkState)
Definition: excreate.c:268
ACPI_STATUS AcpiExCreateMethod(UINT8 *AmlStart, UINT32 AmlLength, ACPI_WALK_STATE *WalkState)
Definition: excreate.c:484
Status
Definition: gdiplustypes.h:25
ObjectType
Definition: metafile.c:81
UINT16 Flags
Definition: aclocal.h:873
UINT8 ObjectType
Definition: aclocal.h:874
ACPI_PARSE_COMMON char * Path
Definition: aclocal.h:1032
UINT8 * Aml
Definition: acstruct.h:91
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
UINT32 ParseFlags
Definition: acstruct.h:95
UINT16 Opcode
Definition: acstruct.h:78
const ACPI_OPCODE_INFO * OpInfo
Definition: acstruct.h:119
UINT8 NumOperands
Definition: acstruct.h:80
struct acpi_namespace_node * DeferredNode
Definition: acstruct.h:111
BOOLEAN NamespaceOverride
Definition: acstruct.h:88
ACPI_PARSE_STATE ParserState
Definition: acstruct.h:97
ACPI_COMMON_STATE Common
Definition: aclocal.h:822
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