diff options
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/DynamicTablesPkg/Library/Common/AmlLib/Parser/AmlResourceDataParser.h')
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/DynamicTablesPkg/Library/Common/AmlLib/Parser/AmlResourceDataParser.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/DynamicTablesPkg/Library/Common/AmlLib/Parser/AmlResourceDataParser.h b/src/VBox/Devices/EFI/Firmware/DynamicTablesPkg/Library/Common/AmlLib/Parser/AmlResourceDataParser.h new file mode 100644 index 00000000..b0eb7084 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/DynamicTablesPkg/Library/Common/AmlLib/Parser/AmlResourceDataParser.h @@ -0,0 +1,71 @@ +/** @file + AML Resource Data Parser. + + Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.<BR> + + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Glossary: + - Rd or RD - Resource Data + - Rds or RDS - Resource Data Small + - Rdl or RDL - Resource Data Large +**/ + +#ifndef AML_RESOURCE_DATA_PARSER_H_ +#define AML_RESOURCE_DATA_PARSER_H_ + +#include <AmlNodeDefines.h> +#include <Stream/AmlStream.h> +#include <ResourceData/AmlResourceData.h> + +/** Check whether the input stream is pointing to a valid list + of resource data elements. + + The check is based on the size of resource data elements. + This means that a buffer can pass this check with non-existing descriptor Ids + that have a correct size. + + A list of resource data elements can contain one unique resource data + element, without an end tag resource data. This is the case for + a FieldList. + + @param [in] FStream Forward stream ideally pointing to a resource + data element. The stream is not + modified/progressing. + The stream must not be at its end. + + @retval TRUE The buffer is holding a valid list of resource data elements. + @retval FALSE Otherwise. +**/ +BOOLEAN +EFIAPI +AmlRdIsResourceDataBuffer ( + IN CONST AML_STREAM * FStream + ); + +/** Parse a ResourceDataBuffer. + + For each resource data element, create a data node + and add them to the variable list of arguments of the BufferNode. + + The input stream is expected to point to a valid list of resource data + elements. A function is available to check it for the caller. + + @param [in] BufferNode Buffer node. + @param [in] FStream Forward stream pointing to a resource data + element. + The stream must not be at its end. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Could not allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlParseResourceData ( + IN AML_OBJECT_NODE * BufferNode, + IN AML_STREAM * FStream + ); + +#endif // AML_RESOURCE_DATA_PARSER_H_ + |