/*++ | |
Copyright (c) 2006, 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> | |
#if defined (MDE_CPU_IPF) | |
#define ALIGNMENT 8 | |
#else | |
#define ALIGNMENT 1 | |
#endif | |
#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; | |
} VARIABLE_GLOBAL; | |
typedef struct { | |
VARIABLE_GLOBAL VariableBase[2]; | |
UINTN VolatileLastVariableOffset; | |
UINTN NonVolatileLastVariableOffset; | |
UINT32 FvbInstance; | |
} ESAL_VARIABLE_GLOBAL; | |
// | |
// 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 | |
) | |
; | |
#if (EFI_SPECIFICATION_VERSION >= 0x00020000) | |
EFI_STATUS | |
EFIAPI | |
QueryVariableInfo ( | |
IN UINT32 Attributes, | |
OUT UINT64 *MaximumVariableStorageSize, | |
OUT UINT64 *RemainingVariableStorageSize, | |
OUT UINT64 *MaximumVariableSize, | |
IN VARIABLE_GLOBAL *Global, | |
IN UINT32 Instance | |
) | |
; | |
#endif | |
#endif |