| /** @file | |
| Metadata Handler Library. | |
| Copyright (c) 2025, Arm Limited. All rights reserved. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef METADATA_HANDLER_H_ | |
| #define METADATA_HANDLER_H_ | |
| /** Query the MetadataObjLib for metadata matching the input (Type/Token). | |
| If the metadata exists, return it. | |
| Otherwise: | |
| - Generate a new metadata object | |
| - Add it to the MetadataObjLib | |
| - return it | |
| @param[in] Root Root of the Metadata information. | |
| @param[in] Type METADATA_TYPE of the entry to generate. | |
| @param[in] Token Token uniquely identifying an entry among other | |
| objects with the input METADATA_TYPE. | |
| @param[in] Context Optional context to use during the Metadata generation. | |
| @param[in, out] Metadata On input, can contain METADATA_TYPE-specific information. | |
| On output and if success, contains the generated | |
| Metadata object. | |
| @param[in] MetadataSize Size of the input Metadata. | |
| @retval EFI_SUCCESS Success. | |
| @retval EFI_INVALID_PARAMETER A parameter is invalid. | |
| **/ | |
| typedef EFI_STATUS (EFIAPI *METADATA_GENERATOR)( | |
| IN METADATA_ROOT_HANDLE Root, | |
| IN METADATA_TYPE Type, | |
| IN CM_OBJECT_TOKEN Token, | |
| IN VOID *Context, | |
| IN OUT VOID *Metadata, | |
| IN UINT32 MetadataSize | |
| ); | |
| /** Validate the Metadata. | |
| @retval EFI_SUCCESS Success. | |
| @retval EFI_INVALID_PARAMETER A parameter is invalid. | |
| **/ | |
| typedef EFI_STATUS (EFIAPI *METADATA_VALIDATOR)( | |
| IN METADATA_ROOT_HANDLE Root | |
| ); | |
| /** Metadata Handlers. | |
| */ | |
| typedef struct MetadataHandlers { | |
| METADATA_GENERATOR Generate; | |
| METADATA_VALIDATOR Validate; | |
| } METADATA_HANDLERS; | |
| /** Query the MetadataObjLib for metadata matching the input (Type/Token). | |
| If the metadata exists, return it. | |
| Otherwise: | |
| - Generate a new metadata object | |
| - Add it to the MetadataObjLib | |
| - return it | |
| @param[in] Root Root of the Metadata information. | |
| @param[in] Type METADATA_TYPE of the entry to generate. | |
| @param[in] Token Token uniquely identifying an entry among other | |
| objects with the input METADATA_TYPE. | |
| @param[in] Context Optional context to use during the Metadata generation. | |
| @param[in, out] Metadata On input, can contain METADATA_TYPE-specific information. | |
| On output and if success, contains the generated | |
| Metadata object. | |
| @param[in] MetadataSize Size of the input Metadata. | |
| @retval EFI_SUCCESS Success. | |
| @retval EFI_INVALID_PARAMETER A parameter is invalid. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| MetadataGenerateUid ( | |
| IN METADATA_ROOT_HANDLE Root, | |
| IN METADATA_TYPE Type, | |
| IN CM_OBJECT_TOKEN Token, | |
| IN VOID *Context, | |
| IN OUT VOID *Metadata, | |
| IN UINT32 MetadataSize | |
| ); | |
| /** Validate the Metadata. | |
| @param[in] Root Root of the Metadata information. | |
| @retval EFI_SUCCESS Success. | |
| @retval EFI_INVALID_PARAMETER A parameter is invalid. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| MetadataValidateUid ( | |
| IN METADATA_ROOT_HANDLE Root | |
| ); | |
| /** Query the MetadataObjLib for metadata matching the input (Type/Token). | |
| If the metadata exists, return it. | |
| Otherwise: | |
| - Generate a new metadata object | |
| - Add it to the MetadataObjLib | |
| - return it | |
| @param[in] Root Root of the Metadata information. | |
| @param[in] Type METADATA_TYPE of the entry to generate. | |
| @param[in] Token Token uniquely identifying an entry among other | |
| objects with the input METADATA_TYPE. | |
| @param[in] Context Optional context to use during the Metadata generation. | |
| @param[in, out] Metadata On input, can contain METADATA_TYPE-specific information. | |
| On output and if success, contains the generated | |
| Metadata object. | |
| @param[in] MetadataSize Size of the input Metadata. | |
| @retval EFI_SUCCESS Success. | |
| @retval EFI_INVALID_PARAMETER A parameter is invalid. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| MetadataGenerateProximityDomain ( | |
| IN METADATA_ROOT_HANDLE Root, | |
| IN METADATA_TYPE Type, | |
| IN CM_OBJECT_TOKEN Token, | |
| IN VOID *Context, | |
| IN OUT VOID *Metadata, | |
| IN UINT32 MetadataSize | |
| ); | |
| /** Validate the Metadata. | |
| @param[in] Root Root of the Metadata information. | |
| @retval EFI_SUCCESS Success. | |
| @retval EFI_INVALID_PARAMETER A parameter is invalid. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| MetadataValidateProximityDomain ( | |
| IN METADATA_ROOT_HANDLE Root | |
| ); | |
| #endif // METADATA_HANDLER_H_ |