| /** @file | |
| AML Parser. | |
| Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef AML_PARSER_H_ | |
| #define AML_PARSER_H_ | |
| #include <AmlNodeDefines.h> | |
| #include <Stream/AmlStream.h> | |
| /** Parse the list of fixed arguments of the input ObjectNode. | |
| For each argument, create a node and add it to the fixed argument list | |
| of the Node. | |
| If a fixed argument has children, parse them. | |
| @param [in] ObjectNode Object node to parse the fixed arguments | |
| from. | |
| @param [in] FStream Forward stream containing the AML | |
| bytecode to parse. | |
| The stream must not be at its end. | |
| @param [in] NameSpaceRefList List of namespace reference nodes. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_BUFFER_TOO_SMALL No space left in the buffer. | |
| @retval EFI_INVALID_PARAMETER Invalid parameter. | |
| @retval EFI_OUT_OF_RESOURCES Could not allocate memory. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| AmlParseFixedArguments ( | |
| IN AML_OBJECT_NODE *ObjectNode, | |
| IN AML_STREAM *FStream, | |
| IN LIST_ENTRY *NameSpaceRefList | |
| ); | |
| /** Parse the variable list of arguments of the input ObjectNode. | |
| For each variable argument, create a node and add it to the variable list of | |
| arguments of the Node. | |
| If a variable argument has children, parse them recursively. | |
| The arguments of method invocation nodes are added to the variable list of | |
| arguments of the method invocation node. It is necessary to first get | |
| the number of arguments to parse for this kind of node. A method invocation | |
| can have at most 7 fixed arguments. | |
| @param [in] Node Node to parse the variable arguments | |
| from. | |
| @param [in] FStream Forward stream containing the AML | |
| bytecode to parse. | |
| The stream must not be at its end. | |
| @param [in] NameSpaceRefList List of namespace reference nodes. | |
| @retval EFI_SUCCESS The function completed successfully. | |
| @retval EFI_BUFFER_TOO_SMALL No space left in the buffer. | |
| @retval EFI_INVALID_PARAMETER Invalid parameter. | |
| @retval EFI_OUT_OF_RESOURCES Could not allocate memory. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| AmlParseVariableArguments ( | |
| IN AML_NODE_HEADER *Node, | |
| IN AML_STREAM *FStream, | |
| IN LIST_ENTRY *NameSpaceRefList | |
| ); | |
| #endif // AML_PARSER_H_ |