/** @file
Dynamic Platform Info Repository
Copyright (c) 2021, Arm Limited. All rights reserved.
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
/** 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_