+++ /dev/null
-/*++\r
-\r
-Caution: This file is used for Duet platform only, do not use them in real platform.\r
-All variable code, variable metadata, and variable data used by Duet platform are on \r
-disk. They can be changed by user. BIOS is not able to protoect those.\r
-Duet trusts all meta data from disk. If variable code, variable metadata and variable\r
-data is modified in inproper way, the behavior is undefined.\r
-\r
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- VariableStorage.h\r
-\r
-Abstract:\r
-\r
- handles variable store/reads with memory and file\r
-\r
-Revision History\r
-\r
---*/\r
-#ifndef _VARIABLE_STORAGE_H_\r
-#define _VARIABLE_STORAGE_H_\r
-\r
-#define VAR_DEFAULT_VALUE (0xff)\r
-#define VAR_DEFAULT_VALUE_16 SIGNATURE_16 (VAR_DEFAULT_VALUE, VAR_DEFAULT_VALUE)\r
-#define VAR_DEFAULT_VALUE_32 SIGNATURE_32 (VAR_DEFAULT_VALUE, VAR_DEFAULT_VALUE, \\r
- VAR_DEFAULT_VALUE, VAR_DEFAULT_VALUE)\r
-\r
-typedef struct _VARIABLE_STORAGE VARIABLE_STORAGE;\r
-\r
-EFI_STATUS\r
-FileStorageConstructor (\r
- OUT VARIABLE_STORAGE **VarStore,\r
- OUT EFI_EVENT_NOTIFY *GoVirtualEvent,\r
- IN EFI_PHYSICAL_ADDRESS NvStorageBase,\r
- IN UINTN Size,\r
- IN UINT32 VolumeId,\r
- IN CHAR16 *FilePath\r
- );\r
-\r
-EFI_STATUS\r
-MemStorageConstructor (\r
- OUT VARIABLE_STORAGE **VarStore,\r
- OUT EFI_EVENT_NOTIFY *GoVirtualEvent,\r
- IN UINTN Size\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *ERASE_STORE) (\r
- IN VARIABLE_STORAGE *This\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *WRITE_STORE) (\r
- IN VARIABLE_STORAGE *This,\r
- IN UINTN Offset,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer\r
- );\r
-\r
-struct _VARIABLE_STORAGE {\r
-\r
- //\r
- // Functions to access the storage\r
- //\r
- ERASE_STORE Erase;\r
- WRITE_STORE Write;\r
-};\r
-\r
-typedef struct _VS_FILE_INFO {\r
- UINT8 *FileData; // local buffer for reading acceleration\r
-\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath; // device having storage file\r
- UINT32 VolumeId;\r
- CHAR16 FilePath[256];\r
-} VS_FILE_INFO;\r
-\r
-typedef struct _VS_MEM_INFO {\r
- UINT8 *MemData;\r
-} VS_MEM_INFO;\r
-\r
-typedef struct _VS_DEV {\r
- UINT32 Signature;\r
- VARIABLE_STORAGE VarStore;\r
- UINTN Size;\r
- \r
- union {\r
- //\r
- // finally visit FileInfo.FileData or MemInfo.MemData\r
- //\r
- UINT8 *Data;\r
- \r
- VS_FILE_INFO FileInfo;\r
- VS_MEM_INFO MemInfo;\r
- } Info;\r
-\r
-} VS_DEV;\r
-\r
-#define VS_DEV_SIGNATURE SIGNATURE_32 ('$', 'V', 'S', 'D')\r
-#define DEV_FROM_THIS(a) CR (a, VS_DEV, VarStore, VS_DEV_SIGNATURE)\r
-\r
-#define VAR_DATA_PTR(a) ((a)->Info.Data)\r
-#define VAR_FILE_DEVICEPATH(a) ((a)->Info.FileInfo.DevicePath)\r
-#define VAR_FILE_VOLUMEID(a) ((a)->Info.FileInfo.VolumeId)\r
-#define VAR_FILE_FILEPATH(a) ((a)->Info.FileInfo.FilePath)\r
-\r
-\r
-#endif\r