// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 /****************************************************************************** * * Module Name: pstree - Parser op tree manipulation/traversal/search * * Copyright (C) 2000 - 2023, Intel Corp. * *****************************************************************************/ #include <acpi/acpi.h> #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acconvert.h" #define _COMPONENT … ACPI_MODULE_NAME("pstree") /* Local prototypes */ #ifdef ACPI_OBSOLETE_FUNCTIONS union acpi_parse_object *acpi_ps_get_child(union acpi_parse_object *op); #endif /******************************************************************************* * * FUNCTION: acpi_ps_get_arg * * PARAMETERS: op - Get an argument for this op * argn - Nth argument to get * * RETURN: The argument (as an Op object). NULL if argument does not exist * * DESCRIPTION: Get the specified op's argument. * ******************************************************************************/ union acpi_parse_object *acpi_ps_get_arg(union acpi_parse_object *op, u32 argn) { … } /******************************************************************************* * * FUNCTION: acpi_ps_append_arg * * PARAMETERS: op - Append an argument to this Op. * arg - Argument Op to append * * RETURN: None. * * DESCRIPTION: Append an argument to an op's argument list (a NULL arg is OK) * ******************************************************************************/ void acpi_ps_append_arg(union acpi_parse_object *op, union acpi_parse_object *arg) { … } /******************************************************************************* * * FUNCTION: acpi_ps_get_depth_next * * PARAMETERS: origin - Root of subtree to search * op - Last (previous) Op that was found * * RETURN: Next Op found in the search. * * DESCRIPTION: Get next op in tree (walking the tree in depth-first order) * Return NULL when reaching "origin" or when walking up from root * ******************************************************************************/ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, union acpi_parse_object *op) { … } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: acpi_ps_get_child * * PARAMETERS: op - Get the child of this Op * * RETURN: Child Op, Null if none is found. * * DESCRIPTION: Get op's children or NULL if none * ******************************************************************************/ union acpi_parse_object *acpi_ps_get_child(union acpi_parse_object *op) { union acpi_parse_object *child = NULL; ACPI_FUNCTION_ENTRY(); switch (op->common.aml_opcode) { case AML_SCOPE_OP: case AML_ELSE_OP: case AML_DEVICE_OP: case AML_THERMAL_ZONE_OP: case AML_INT_METHODCALL_OP: child = acpi_ps_get_arg(op, 0); break; case AML_BUFFER_OP: case AML_PACKAGE_OP: case AML_VARIABLE_PACKAGE_OP: case AML_METHOD_OP: case AML_IF_OP: case AML_WHILE_OP: case AML_FIELD_OP: child = acpi_ps_get_arg(op, 1); break; case AML_POWER_RESOURCE_OP: case AML_INDEX_FIELD_OP: child = acpi_ps_get_arg(op, 2); break; case AML_PROCESSOR_OP: case AML_BANK_FIELD_OP: child = acpi_ps_get_arg(op, 3); break; default: /* All others have no children */ break; } return (child); } #endif