mirror of https://github.com/acidanthera/audk.git
115 lines
3.6 KiB
C
115 lines
3.6 KiB
C
/** @file
|
|
Dynamic Platform Info Repository
|
|
|
|
Copyright (c) 2021, Arm Limited. All rights reserved.<BR>
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
@par Glossary:
|
|
- Cm or CM - Configuration Manager
|
|
- Obj or OBJ - Object
|
|
**/
|
|
|
|
#ifndef DYNAMIC_PLAT_REPO_H_
|
|
#define DYNAMIC_PLAT_REPO_H_
|
|
|
|
#include <Protocol/ConfigurationManagerProtocol.h>
|
|
|
|
/** A structure describing the platform configuration
|
|
manager repository information
|
|
*/
|
|
typedef VOID *DYNAMIC_PLATFORM_REPOSITORY_INFO;
|
|
|
|
/** Add an object to the dynamic platform repository.
|
|
|
|
@param [in] This This dynamic platform repository.
|
|
@param [in] CmObjDesc CmObj to add. The data is copied.
|
|
@param [out] Token If not NULL, token allocated to this CmObj.
|
|
|
|
@retval EFI_SUCCESS Success.
|
|
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
@retval EFI_OUT_OF_RESOURCES An allocation has failed.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
DynPlatRepoAddObject (
|
|
IN DYNAMIC_PLATFORM_REPOSITORY_INFO *This,
|
|
IN CONST CM_OBJ_DESCRIPTOR *CmObjDesc,
|
|
OUT CM_OBJECT_TOKEN *Token OPTIONAL
|
|
);
|
|
|
|
/** Finalise the dynamic repository.
|
|
|
|
Finalising means:
|
|
- Preventing any further objects from being added.
|
|
- Allowing to get objects from the dynamic repository
|
|
(not possible before a call to this function).
|
|
|
|
@param [in] This This dynamic platform repository.
|
|
|
|
@retval EFI_SUCCESS Success.
|
|
@retval EFI_ALREADY_STARTED Instance already initialised.
|
|
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
@retval EFI_BUFFER_TOO_SMALL Buffer too small.
|
|
@retval EFI_OUT_OF_RESOURCES An allocation has failed.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
DynamicPlatRepoFinalise (
|
|
IN DYNAMIC_PLATFORM_REPOSITORY_INFO *This
|
|
);
|
|
|
|
/** Get a CmObj from the dynamic repository.
|
|
|
|
@param [in] This Pointer to the Dynamic Platform Repository.
|
|
@param [in] CmObjectId The Configuration Manager Object ID.
|
|
@param [in] Token An optional token identifying the object. If
|
|
unused this must be CM_NULL_TOKEN.
|
|
@param [in, out] CmObjDesc Pointer to the Configuration Manager Object
|
|
descriptor describing the requested Object.
|
|
|
|
@retval EFI_SUCCESS Success.
|
|
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
@retval EFI_NOT_FOUND The required object information is not found.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
DynamicPlatRepoGetObject (
|
|
IN DYNAMIC_PLATFORM_REPOSITORY_INFO *This,
|
|
IN CM_OBJECT_ID CmObjectId,
|
|
IN CM_OBJECT_TOKEN Token OPTIONAL,
|
|
IN OUT CM_OBJ_DESCRIPTOR *CmObjDesc
|
|
);
|
|
|
|
/** Initialize the dynamic platform repository.
|
|
|
|
@param [out] DynPlatRepo If success, contains the initialised dynamic
|
|
platform repository.
|
|
|
|
@retval EFI_SUCCESS Success.
|
|
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
@retval EFI_OUT_OF_RESOURCES An allocation has failed.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
DynamicPlatRepoInit (
|
|
OUT DYNAMIC_PLATFORM_REPOSITORY_INFO **DynPlatRepo
|
|
);
|
|
|
|
/** Shutdown the dynamic platform repository.
|
|
|
|
Free all the memory allocated for the dynamic platform repository.
|
|
|
|
@param [in] DynPlatRepo The dynamic platform repository.
|
|
|
|
@retval EFI_INVALID_PARAMETER A parameter is invalid.
|
|
@retval EFI_SUCCESS Success.
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
DynamicPlatRepoShutdown (
|
|
IN DYNAMIC_PLATFORM_REPOSITORY_INFO *DynPlatRepo
|
|
);
|
|
|
|
#endif // DYNAMIC_PLAT_REPO_H_
|