#include <Library/BaseLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
#include <Library/HobLib.h>\r
-#include <Common/FlashMap.h>\r
-#include <Guid/FlashMapHob.h>\r
+#include <Guid/VariableInfo.h>\r
+#include <Guid/GlobalVariable.h>\r
+#include <VariableFormat.h>\r
+\r
\r
-//\r
-// BugBug: We need relcate the head file.\r
-//\r
-#include <Common/Variable.h>\r
\r
#define VARIABLE_RECLAIM_THRESHOLD (1024)\r
\r
-#define VARIABLE_STORE_SIZE (64 * 1024)\r
-#define SCRATCH_SIZE (4 * 1024)\r
+#define VARIABLE_STORE_SIZE FixedPcdGet32(PcdVariableStoreSize)\r
+#define SCRATCH_SIZE FixedPcdGet32(PcdMaxVariableSize)\r
\r
//\r
// Define GET_PAD_SIZE to optimize compiler\r
#define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1))\r
#endif\r
\r
-#define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER))\r
+#define HEADER_ALIGN(Header) (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1)))\r
\r
-typedef enum {\r
- Physical,\r
- Virtual\r
-} VARIABLE_POINTER_TYPE;\r
\r
typedef struct {\r
VARIABLE_HEADER *CurrPtr;\r
EFI_PHYSICAL_ADDRESS VolatileVariableBase;\r
EFI_PHYSICAL_ADDRESS NonVolatileVariableBase;\r
EFI_LOCK VariableServicesLock;\r
+ UINT32 ReentrantState;\r
} VARIABLE_GLOBAL;\r
\r
typedef struct {\r
- VARIABLE_GLOBAL VariableGlobal[2];\r
+ VARIABLE_GLOBAL VariableGlobal;\r
UINTN VolatileLastVariableOffset;\r
UINTN NonVolatileLastVariableOffset;\r
UINT32 FvbInstance;\r
-} ESAL_VARIABLE_GLOBAL;\r
+} VARIABLE_MODULE_GLOBAL;\r
+\r
+typedef struct {\r
+ EFI_GUID *Guid;\r
+ CHAR16 *Name;\r
+ UINT32 Attributes;\r
+ UINTN DataSize;\r
+ VOID *Data;\r
+} VARIABLE_CACHE_ENTRY;\r
\r
-extern ESAL_VARIABLE_GLOBAL *mVariableModuleGlobal;\r
\r
//\r
// Functions\r
//\r
-EFI_STATUS\r
-EFIAPI\r
-VariableCommonInitialize (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- );\r
\r
EFI_STATUS\r
EFIAPI\r
IN EFI_SYSTEM_TABLE *SystemTable\r
);\r
\r
-VOID\r
-EFIAPI\r
-VariableClassAddressChangeEvent (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-GetVariable (\r
- IN CHAR16 *VariableName,\r
- IN EFI_GUID * VendorGuid,\r
- OUT UINT32 *Attributes OPTIONAL,\r
- IN OUT UINTN *DataSize,\r
- OUT VOID *Data,\r
- IN VARIABLE_GLOBAL * Global,\r
- IN UINT32 Instance\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-GetNextVariableName (\r
- IN OUT UINTN *VariableNameSize,\r
- IN OUT CHAR16 *VariableName,\r
- IN OUT EFI_GUID *VendorGuid,\r
- IN VARIABLE_GLOBAL *Global,\r
- IN UINT32 Instance\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-SetVariable (\r
- IN CHAR16 *VariableName,\r
- IN EFI_GUID *VendorGuid,\r
- IN UINT32 Attributes,\r
- IN UINTN DataSize,\r
- IN VOID *Data,\r
- IN VARIABLE_GLOBAL *Global,\r
- IN UINTN *VolatileOffset,\r
- IN UINTN *NonVolatileOffset,\r
- IN UINT32 Instance\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-QueryVariableInfo (\r
- IN UINT32 Attributes,\r
- OUT UINT64 *MaximumVariableStorageSize,\r
- OUT UINT64 *RemainingVariableStorageSize,\r
- OUT UINT64 *MaximumVariableSize,\r
- IN VARIABLE_GLOBAL *Global,\r
- IN UINT32 Instance\r
- );\r
-\r
-EFI_STATUS\r
-GetFvbHandleByAddress (\r
- IN EFI_PHYSICAL_ADDRESS VariableStoreBase,\r
- OUT EFI_HANDLE *FvbHandle\r
- );\r
\r
EFI_STATUS\r
FtwVariableSpace (\r