2. move VariableFormat.h into GUID directory and change the “Signature” field of the VARIABLE_STORE_HEADER to gEfiVariableGuid value. 3. merging VARIABLE_INFO_ENTRY structure into the new Include/Guid/VariableFormat.h 4. change gEfiVariableInfoGuid into gEfiVariableGuid. 5. modify FDF files to use new guid value instead of the original signature. 6. all code related to signature is changed to use guid value. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7728 6f19259b-4bc3-4df7-8a09-765794883524
148 lines
4.1 KiB
C
148 lines
4.1 KiB
C
/*++
|
|
|
|
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:
|
|
|
|
FSVariable.h
|
|
|
|
Abstract:
|
|
|
|
--*/
|
|
|
|
#ifndef _FS_VARIABLE_H
|
|
#define _FS_VARIABLE_H
|
|
|
|
//
|
|
// Statements that include other header files
|
|
//
|
|
#include <PiDxe.h>
|
|
|
|
#include <Library/BaseLib.h>
|
|
#include <Library/PcdLib.h>
|
|
#include <Library/BaseMemoryLib.h>
|
|
#include <Library/UefiBootServicesTableLib.h>
|
|
#include <Library/UefiRuntimeLib.h>
|
|
#include <Library/DebugLib.h>
|
|
#include <Library/UefiLib.h>
|
|
#include <Library/HobLib.h>
|
|
#include <Library/DxeServicesTableLib.h>
|
|
#include <Library/DevicePathLib.h>
|
|
|
|
#include <Guid/HobList.h>
|
|
#include <Guid/FlashMapHob.h>
|
|
#include <Guid/VariableFormat.h>
|
|
|
|
#include <Protocol/Variable.h>
|
|
#include <Protocol/VariableWrite.h>
|
|
#include <Protocol/SimpleFileSystem.h>
|
|
#include <Protocol/BlockIo.h>
|
|
|
|
|
|
#include "EfiFlashMap.h"
|
|
#include "VariableStorage.h"
|
|
|
|
#define VOLATILE_VARIABLE_STORE_SIZE (64 * 1024)
|
|
#define VARIABLE_SCRATCH_SIZE (4 * 1024)
|
|
#define VARIABLE_RECLAIM_THRESHOLD (1024)
|
|
|
|
#define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER))
|
|
|
|
typedef enum {
|
|
Physical,
|
|
Virtual
|
|
} VARIABLE_POINTER_TYPE;
|
|
|
|
typedef enum {
|
|
NonVolatile,
|
|
Volatile,
|
|
MaxType
|
|
} VARIABLE_STORAGE_TYPE;
|
|
|
|
typedef struct {
|
|
VARIABLE_HEADER *CurrPtr;
|
|
VARIABLE_HEADER *EndPtr;
|
|
VARIABLE_HEADER *StartPtr;
|
|
VARIABLE_STORAGE_TYPE Type;
|
|
} VARIABLE_POINTER_TRACK;
|
|
|
|
#define VARIABLE_MEMBER_OFFSET(Member, StartOffset) \
|
|
( sizeof (VARIABLE_STORE_HEADER) + (StartOffset) + \
|
|
(UINTN) ((UINT8 *) &((VARIABLE_HEADER*) 0)->Member - (UINT8 *) &((VARIABLE_HEADER*) 0)->StartId) \
|
|
)
|
|
|
|
|
|
typedef struct {
|
|
EFI_EVENT_NOTIFY GoVirtualChildEvent[MaxType];
|
|
VARIABLE_STORAGE *VariableStore[MaxType]; // Instance of VariableStorage
|
|
VOID *VariableBase[MaxType]; // Start address of variable storage
|
|
UINTN LastVariableOffset[MaxType]; // The position to write new variable to (index from VariableBase)
|
|
VOID *Scratch; // Buffer used during reclaim
|
|
} VARIABLE_GLOBAL;
|
|
|
|
//
|
|
// Functions
|
|
//
|
|
|
|
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
|
|
);
|
|
|
|
EFI_STATUS
|
|
EFIAPI
|
|
GetNextVariableName (
|
|
IN OUT UINTN *VariableNameSize,
|
|
IN OUT CHAR16 *VariableName,
|
|
IN OUT EFI_GUID *VendorGuid
|
|
);
|
|
|
|
EFI_STATUS
|
|
EFIAPI
|
|
SetVariable (
|
|
IN CHAR16 *VariableName,
|
|
IN EFI_GUID *VendorGuid,
|
|
IN UINT32 Attributes,
|
|
IN UINTN DataSize,
|
|
IN VOID *Data
|
|
);
|
|
|
|
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
|
|
EFI_STATUS
|
|
EFIAPI
|
|
QueryVariableInfo (
|
|
IN UINT32 Attributes,
|
|
OUT UINT64 *MaximumVariableStorageSize,
|
|
OUT UINT64 *RemainingVariableStorageSize,
|
|
OUT UINT64 *MaximumVariableSize
|
|
);
|
|
#endif // EFI_SPECIFICATION_VERSION >= 0x00020000
|
|
|
|
#endif
|