/** @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_