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