#include <Guid/AuthenticatedVariableFormat.h>\r
#include <Guid/ImageAuthentication.h>\r
#include <Guid/SystemNvDataGuid.h>\r
+#include <Guid/FaultTolerantWrite.h>\r
#include <Guid/HardwareErrorVariable.h>\r
\r
-#define VARIABLE_RECLAIM_THRESHOLD (1024)\r
#define EFI_VARIABLE_ATTRIBUTES_MASK (EFI_VARIABLE_NON_VOLATILE | \\r
EFI_VARIABLE_BOOTSERVICE_ACCESS | \\r
EFI_VARIABLE_RUNTIME_ACCESS | \\r
EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS | \\r
EFI_VARIABLE_APPEND_WRITE)\r
\r
+#define VARIABLE_ATTRIBUTE_BS_RT (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS)\r
+#define VARIABLE_ATTRIBUTE_NV_BS_RT (VARIABLE_ATTRIBUTE_BS_RT | EFI_VARIABLE_NON_VOLATILE)\r
+#define VARIABLE_ATTRIBUTE_NV_BS_RT_AT (VARIABLE_ATTRIBUTE_NV_BS_RT | EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS)\r
+\r
+typedef struct {\r
+ CHAR16 *Name;\r
+ UINT32 Attributes;\r
+} GLOBAL_VARIABLE_ENTRY;\r
+\r
///\r
/// The size of a 3 character ISO639 language code.\r
///\r
@param[in] IsVolatile The variable store is volatile or not;\r
if it is non-volatile, need FTW.\r
@param[in, out] UpdatingPtrTrack Pointer to updating variable pointer track structure.\r
+ @param[in] NewVariable Pointer to new variable.\r
+ @param[in] NewVariableSize New variable size.\r
@param[in] ReclaimPubKeyStore Reclaim for public key database or not.\r
- @param[in] ReclaimAnyway If TRUE, do reclaim anyway.\r
\r
@return EFI_SUCCESS Reclaim operation has finished successfully.\r
- @return EFI_OUT_OF_RESOURCES No enough memory resources.\r
+ @return EFI_OUT_OF_RESOURCES No enough memory resources or variable space.\r
@return EFI_DEVICE_ERROR The public key database doesn't exist.\r
@return Others Unexpect error happened during reclaim operation.\r
\r
OUT UINTN *LastVariableOffset,\r
IN BOOLEAN IsVolatile,\r
IN OUT VARIABLE_POINTER_TRACK *UpdatingPtrTrack,\r
- IN BOOLEAN ReclaimPubKeyStore,\r
- IN BOOLEAN ReclaimAnyway\r
+ IN VARIABLE_HEADER *NewVariable,\r
+ IN UINTN NewVariableSize,\r
+ IN BOOLEAN ReclaimPubKeyStore\r
);\r
\r
/**\r