summaryrefslogtreecommitdiff
path: root/DynamicTablesPkg/Include/Library/MetadataHandlerLib.h
diff options
context:
space:
mode:
Diffstat (limited to 'DynamicTablesPkg/Include/Library/MetadataHandlerLib.h')
-rw-r--r--DynamicTablesPkg/Include/Library/MetadataHandlerLib.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/DynamicTablesPkg/Include/Library/MetadataHandlerLib.h b/DynamicTablesPkg/Include/Library/MetadataHandlerLib.h
new file mode 100644
index 0000000..db21041
--- /dev/null
+++ b/DynamicTablesPkg/Include/Library/MetadataHandlerLib.h
@@ -0,0 +1,57 @@
+/** @file
+ Metadata Handler Library.
+
+ Copyright (c) 2025, Arm Limited. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#ifndef METADATA_HANDLER_LIB_H_
+#define METADATA_HANDLER_LIB_H_
+
+#include <Library/MetadataObjLib.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.
+**/
+EFI_STATUS
+EFIAPI
+MetadataHandlerGenerate (
+ 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
+MetadataHandlerValidate (
+ IN METADATA_ROOT_HANDLE Root
+ );
+
+#endif // METADATA_HANDLER_LIB_H_