| /*++ | |
| Copyright (c) 2006 - 2007, Intel Corporation | |
| All rights reserved. This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| Module Name: | |
| Variable.h | |
| Abstract: | |
| --*/ | |
| #ifndef _VARIABLE_H | |
| #define _VARIABLE_H | |
| #include <PiDxe.h> | |
| #include <Protocol/VariableWrite.h> | |
| #include <Protocol/FaultTolerantWriteLite.h> | |
| #include <Protocol/FirmwareVolumeBlock.h> | |
| #include <Protocol/Variable.h> | |
| #include <Library/PcdLib.h> | |
| #include <Library/UefiDriverEntryPoint.h> | |
| #include <Library/DxeServicesTableLib.h> | |
| #include <Library/UefiRuntimeLib.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/FvbServiceLib.h> | |
| #include <Library/UefiBootServicesTableLib.h> | |
| #include <Library/UefiLib.h> | |
| #include <Library/BaseLib.h> | |
| #include <Library/MemoryAllocationLib.h> | |
| #include <Library/HobLib.h> | |
| #include <Guid/VariableInfo.h> | |
| #include <Guid/GlobalVariable.h> | |
| #include <VariableFormat.h> | |
| #define VARIABLE_RECLAIM_THRESHOLD (1024) | |
| #define VARIABLE_STORE_SIZE FixedPcdGet32(PcdVariableStoreSize) | |
| #define SCRATCH_SIZE FixedPcdGet32(PcdMaxVariableSize) | |
| // | |
| // Define GET_PAD_SIZE to optimize compiler | |
| // | |
| #if ((ALIGNMENT == 0) || (ALIGNMENT == 1)) | |
| #define GET_PAD_SIZE(a) (0) | |
| #else | |
| #define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1)) | |
| #endif | |
| #define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER)) | |
| typedef struct { | |
| VARIABLE_HEADER *CurrPtr; | |
| VARIABLE_HEADER *EndPtr; | |
| VARIABLE_HEADER *StartPtr; | |
| BOOLEAN Volatile; | |
| } VARIABLE_POINTER_TRACK; | |
| typedef struct { | |
| EFI_PHYSICAL_ADDRESS VolatileVariableBase; | |
| EFI_PHYSICAL_ADDRESS NonVolatileVariableBase; | |
| EFI_LOCK VariableServicesLock; | |
| } VARIABLE_GLOBAL; | |
| typedef struct { | |
| VARIABLE_GLOBAL VariableGlobal; | |
| UINTN VolatileLastVariableOffset; | |
| UINTN NonVolatileLastVariableOffset; | |
| UINT32 FvbInstance; | |
| } VARIABLE_MODULE_GLOBAL; | |
| typedef struct { | |
| EFI_GUID *Guid; | |
| CHAR16 *Name; | |
| UINT32 Attributes; | |
| UINTN DataSize; | |
| VOID *Data; | |
| } VARIABLE_CACHE_ENTRY; | |
| // | |
| // Functions | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| VariableServiceInitialize ( | |
| IN EFI_HANDLE ImageHandle, | |
| IN EFI_SYSTEM_TABLE *SystemTable | |
| ); | |
| EFI_STATUS | |
| FtwVariableSpace ( | |
| IN EFI_PHYSICAL_ADDRESS VariableBaseAddress, | |
| IN UINT8 *Buffer, | |
| IN UINTN BufferSize | |
| ); | |
| #endif |