/** @file AML Resource Data Parser. Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.
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 #include #include /** 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_