| /*++ | |
| 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 | |
| // | |
| // Statements that include other header files | |
| // | |
| // | |
| // BugBug: We need relcate the head file. | |
| // | |
| #include <Common/Variable.h> | |
| #define VARIABLE_STORE_SIZE (64 * 1024) | |
| #define SCRATCH_SIZE (4 * 1024) | |
| // | |
| // 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 enum { | |
| Physical, | |
| Virtual | |
| } VARIABLE_POINTER_TYPE; | |
| 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[2]; | |
| UINTN VolatileLastVariableOffset; | |
| UINTN NonVolatileLastVariableOffset; | |
| UINT32 FvbInstance; | |
| } ESAL_VARIABLE_GLOBAL; | |
| extern ESAL_VARIABLE_GLOBAL *mVariableModuleGlobal; | |
| // | |
| // Functions | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| VariableCommonInitialize ( | |
| IN EFI_HANDLE ImageHandle, | |
| IN EFI_SYSTEM_TABLE *SystemTable | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| VariableServiceInitialize ( | |
| IN EFI_HANDLE ImageHandle, | |
| IN EFI_SYSTEM_TABLE *SystemTable | |
| ) | |
| ; | |
| VOID | |
| EFIAPI | |
| VariableClassAddressChangeEvent ( | |
| IN EFI_EVENT Event, | |
| IN VOID *Context | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| GetVariable ( | |
| IN CHAR16 *VariableName, | |
| IN EFI_GUID * VendorGuid, | |
| OUT UINT32 *Attributes OPTIONAL, | |
| IN OUT UINTN *DataSize, | |
| OUT VOID *Data, | |
| IN VARIABLE_GLOBAL * Global, | |
| IN UINT32 Instance | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| GetNextVariableName ( | |
| IN OUT UINTN *VariableNameSize, | |
| IN OUT CHAR16 *VariableName, | |
| IN OUT EFI_GUID *VendorGuid, | |
| IN VARIABLE_GLOBAL *Global, | |
| IN UINT32 Instance | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| SetVariable ( | |
| IN CHAR16 *VariableName, | |
| IN EFI_GUID *VendorGuid, | |
| IN UINT32 Attributes, | |
| IN UINTN DataSize, | |
| IN VOID *Data, | |
| IN VARIABLE_GLOBAL *Global, | |
| IN UINTN *VolatileOffset, | |
| IN UINTN *NonVolatileOffset, | |
| IN UINT32 Instance | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| QueryVariableInfo ( | |
| IN UINT32 Attributes, | |
| OUT UINT64 *MaximumVariableStorageSize, | |
| OUT UINT64 *RemainingVariableStorageSize, | |
| OUT UINT64 *MaximumVariableSize, | |
| IN VARIABLE_GLOBAL *Global, | |
| IN UINT32 Instance | |
| ) | |
| ; | |
| #endif |