mirror of https://github.com/acidanthera/audk.git
100 lines
3.4 KiB
C
100 lines
3.4 KiB
C
/** @file
|
|
Hardware information parser library.
|
|
|
|
Copyright (c) 2021, ARM Limited. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
**/
|
|
|
|
#ifndef HW_INFO_PARSER_LIB_H_
|
|
#define HW_INFO_PARSER_LIB_H_
|
|
|
|
#include <ConfigurationManagerObject.h>
|
|
|
|
/** A handle to the HwInfoParser instance.
|
|
*/
|
|
typedef VOID *HW_INFO_PARSER_HANDLE;
|
|
|
|
/** Function pointer called by the parser to add information.
|
|
|
|
Callback function that the parser can use to add new
|
|
CmObj. This function must copy the CmObj data and not rely on
|
|
the parser preserving the CmObj memory.
|
|
This function is responsible of the Token allocation.
|
|
|
|
@param [in] ParserHandle A handle to the parser instance.
|
|
@param [in] Context A pointer to the caller's context provided in
|
|
HwInfoParserInit ().
|
|
@param [in] CmObjDesc CM_OBJ_DESCRIPTOR containing the CmObj(s) to add.
|
|
@param [out] Token If provided and success, contain the token
|
|
generated for the CmObj.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *HW_INFO_ADD_OBJECT)(
|
|
IN HW_INFO_PARSER_HANDLE ParserHandle,
|
|
IN VOID *Context,
|
|
IN CONST CM_OBJ_DESCRIPTOR *CmObjDesc,
|
|
OUT CM_OBJECT_TOKEN *Token OPTIONAL
|
|
);
|
|
|
|
/** Initialise the HwInfoParser.
|
|
|
|
The HwInfoParser shall use the information provided by the HwDataSource
|
|
to initialise the internal state of the parser or to index the data. This
|
|
internal state shall be linked to the ParserHandle using an implementation
|
|
defined mechanism.
|
|
|
|
@param [in] HwDataSource Pointer to the blob containing the hardware
|
|
information. It can be a pointer to a Device
|
|
Tree, an XML file, etc. or any other data
|
|
structure defined by the HwInfoParser.
|
|
@param [in] Context A pointer to the caller's context.
|
|
@param [in] HwInfoAdd Function pointer called by the parser when
|
|
adding information.
|
|
@param [out] ParserHandle A handle to the parser instance.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
HwInfoParserInit (
|
|
IN VOID *HwDataSource,
|
|
IN VOID *Context,
|
|
IN HW_INFO_ADD_OBJECT HwInfoAdd,
|
|
OUT HW_INFO_PARSER_HANDLE *ParserHandle
|
|
);
|
|
|
|
/** Parse the data provided by the HwDataSource.
|
|
|
|
@param [in] ParserHandle A handle to the parser instance.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
|
@retval EFI_OUT_OF_RESOURCES An allocation has failed.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
HwInfoParse (
|
|
IN HW_INFO_PARSER_HANDLE ParserHandle
|
|
);
|
|
|
|
/** Cleanup any internal state and resources that were allocated
|
|
by the HwInfoParser.
|
|
|
|
@param [in] ParserHandle A handle to the parser instance.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_INVALID_PARAMETER Invalid parameter.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
HwInfoParserShutdown (
|
|
IN HW_INFO_PARSER_HANDLE ParserHandle
|
|
);
|
|
|
|
#endif // HW_INFO_PARSER_LIB_H_
|