/** @file | |
Header file for ACPI table parser | |
Copyright (c) 2016 - 2020, Arm Limited. All rights reserved. | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef ACPITABLEPARSER_H_ | |
#define ACPITABLEPARSER_H_ | |
/** | |
The maximum number of ACPI table parsers. | |
*/ | |
#define MAX_ACPI_TABLE_PARSERS 32 | |
/** An invalid/NULL signature value. | |
*/ | |
#define ACPI_PARSER_SIGNATURE_NULL 0 | |
/** | |
A function that parses the ACPI table. | |
@param [in] Trace If TRUE, trace the ACPI fields. | |
@param [in] Ptr Pointer to the start of the buffer. | |
@param [in] AcpiTableLength Length of the ACPI table. | |
@param [in] AcpiTableRevision Revision of the ACPI table. | |
**/ | |
typedef | |
VOID | |
(EFIAPI * PARSE_ACPI_TABLE_PROC) ( | |
IN BOOLEAN Trace, | |
IN UINT8* Ptr, | |
IN UINT32 AcpiTableLength, | |
IN UINT8 AcpiTableRevision | |
); | |
/** | |
The ACPI table parser information | |
**/ | |
typedef struct AcpiTableParser { | |
/// ACPI table signature | |
UINT32 Signature; | |
/// The ACPI table parser function. | |
PARSE_ACPI_TABLE_PROC Parser; | |
} ACPI_TABLE_PARSER; | |
/** | |
Register the ACPI table Parser | |
This function registers the ACPI table parser. | |
@param [in] Signature The ACPI table signature. | |
@param [in] ParserProc The ACPI table parser. | |
@retval EFI_SUCCESS The parser is registered. | |
@retval EFI_INVALID_PARAMETER A parameter is invalid. | |
@retval EFI_ALREADY_STARTED The parser for the Table | |
was already registered. | |
@retval EFI_OUT_OF_RESOURCES No space to register the | |
parser. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
RegisterParser ( | |
IN UINT32 Signature, | |
IN PARSE_ACPI_TABLE_PROC ParserProc | |
); | |
/** | |
Deregister the ACPI table Parser | |
This function deregisters the ACPI table parser. | |
@param [in] Signature The ACPI table signature. | |
@retval EFI_SUCCESS The parser was deregistered. | |
@retval EFI_INVALID_PARAMETER A parameter is invalid. | |
@retval EFI_NOT_FOUND A registered parser was not found. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
DeregisterParser ( | |
IN UINT32 Signature | |
); | |
/** | |
This function processes the ACPI tables. | |
This function calls ProcessTableReportOptions() to list the ACPI | |
tables, perform binary dump of the tables and determine if the | |
ACPI fields should be traced. | |
This function also invokes the parser for the ACPI tables. | |
This function also performs a RAW dump of the ACPI table including | |
the unknown/unparsed ACPI tables and validates the checksum. | |
@param [in] Ptr Pointer to the start of the ACPI | |
table data buffer. | |
**/ | |
VOID | |
EFIAPI | |
ProcessAcpiTable ( | |
IN UINT8* Ptr | |
); | |
/** | |
Get the ACPI table Parser | |
This function returns the ACPI table parser proc from the list of | |
registered parsers. | |
@param [in] Signature The ACPI table signature. | |
@param [out] ParserProc Pointer to a ACPI table parser proc. | |
@retval EFI_SUCCESS The parser was returned successfully. | |
@retval EFI_INVALID_PARAMETER A parameter is invalid. | |
@retval EFI_NOT_FOUND A registered parser was not found. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
GetParser ( | |
IN UINT32 Signature, | |
OUT PARSE_ACPI_TABLE_PROC * ParserProc | |
); | |
#endif // ACPITABLEPARSER_H_ |