ReactOS  0.4.15-dev-1018-g0695ecb
pswalk.c File Reference
#include "acpi.h"
#include "accommon.h"
#include "acparser.h"
#include "amlcode.h"
Include dependency graph for pswalk.c:

Go to the source code of this file.

Macros

#define _COMPONENT   ACPI_PARSER
 

Functions

void AcpiPsDeleteParseTree (ACPI_PARSE_OBJECT *SubtreeRoot)
 

Macro Definition Documentation

◆ _COMPONENT

#define _COMPONENT   ACPI_PARSER

Definition at line 48 of file pswalk.c.

Function Documentation

◆ AcpiPsDeleteParseTree()

void AcpiPsDeleteParseTree ( ACPI_PARSE_OBJECT SubtreeRoot)

Definition at line 67 of file pswalk.c.

69 {
70  ACPI_PARSE_OBJECT *Op = SubtreeRoot;
71  ACPI_PARSE_OBJECT *Next = NULL;
73  UINT32 Level = 0;
74 
75 
76  ACPI_FUNCTION_TRACE_PTR (PsDeleteParseTree, SubtreeRoot);
77 
79  " root %p\n", SubtreeRoot));
80 
81  /* Visit all nodes in the subtree */
82 
83  while (Op)
84  {
85  if (Op != Parent)
86  {
87  /* This is the descending case */
88 
90  {
91  /* This debug option will print the entire parse tree */
92 
93  AcpiOsPrintf (" %*.s%s %p", (Level * 4), " ",
94  AcpiPsGetOpcodeName (Op->Common.AmlOpcode), Op);
95 
96  if (Op->Named.AmlOpcode == AML_INT_NAMEPATH_OP)
97  {
98  AcpiOsPrintf (" %4.4s", Op->Common.Value.String);
99  }
100  if (Op->Named.AmlOpcode == AML_STRING_OP)
101  {
102  AcpiOsPrintf (" %s", Op->Common.Value.String);
103  }
104  AcpiOsPrintf ("\n");
105  }
106 
107  /* Look for an argument or child of the current op */
108 
109  Next = AcpiPsGetArg (Op, 0);
110  if (Next)
111  {
112  /* Still going downward in tree (Op is not completed yet) */
113 
114  Op = Next;
115  Level++;
116  continue;
117  }
118  }
119 
120  /* No more children, this Op is complete. */
121 
122  Next = Op->Common.Next;
123  Parent = Op->Common.Parent;
124 
125  AcpiPsFreeOp (Op);
126 
127  /* If we are back to the starting point, the walk is complete. */
128 
129  if (Op == SubtreeRoot)
130  {
131  return_VOID;
132  }
133 
134  if (Next)
135  {
136  Op = Next;
137  }
138  else
139  {
140  Level--;
141  Op = Parent;
142  }
143  }
144 
145  return_VOID;
146 }
ACPI_PARSE_OBJ_COMMON Common
Definition: aclocal.h:1078
const char * AcpiPsGetOpcodeName(UINT16 Opcode)
Definition: psopinfo.c:169
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
Definition: wmitypes.h:55
#define _COMPONENT
Definition: pswalk.c:48
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
Definition: acpixf.h:728
#define AML_INT_NAMEPATH_OP
Definition: amlcode.h:205
#define AML_STRING_OP
Definition: amlcode.h:58
unsigned int UINT32
smooth NULL
Definition: ftsmooth.c:416
#define ACPI_FUNCTION_TRACE_PTR(a, b)
Definition: acoutput.h:481
ACPI_PARSE_OBJ_NAMED Named
Definition: aclocal.h:1079
#define ACPI_DB_PARSE_TREES
Definition: acoutput.h:172
#define ACPI_DEBUG_PRINT(pl)
Definition: acoutput.h:475
#define ACPI_LV_PARSE_TREES
Definition: acoutput.h:119
#define return_VOID
Definition: acoutput.h:495
void ACPI_INTERNAL_VAR_XFACE AcpiOsPrintf(const char *Format,...)
Definition: osl.c:851
ACPI_PARSE_OBJECT * AcpiPsGetArg(ACPI_PARSE_OBJECT *op, UINT32 argn)
Definition: pstree.c:76
void AcpiPsFreeOp(ACPI_PARSE_OBJECT *Op)
Definition: psutils.c:212
#define ACPI_IS_DEBUG_ENABLED(Level, Component)
Definition: acoutput.h:490

Referenced by AcpiDsAutoSerializeMethod(), AcpiDsExecuteArguments(), AcpiNsOneCompleteParse(), AcpiPsCompleteOp(), AcpiPsCompleteThisOp(), AcpiPsExecuteMethod(), and AcpiPsExecuteTable().