3 Copyright (c) 2006 - 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 handles variable store/reads with memory and file
23 #ifndef _VARIABLE_STORAGE_H_
24 #define _VARIABLE_STORAGE_H_
26 #define VAR_DEFAULT_VALUE (0xff)
27 #define VAR_DEFAULT_VALUE_16 EFI_SIGNATURE_16 (VAR_DEFAULT_VALUE, VAR_DEFAULT_VALUE)
28 #define VAR_DEFAULT_VALUE_32 EFI_SIGNATURE_32 (VAR_DEFAULT_VALUE, VAR_DEFAULT_VALUE, \
29 VAR_DEFAULT_VALUE, VAR_DEFAULT_VALUE)
31 typedef struct _VARIABLE_STORAGE VARIABLE_STORAGE
;
34 FileStorageConstructor (
35 OUT VARIABLE_STORAGE
**VarStore
,
36 OUT EFI_EVENT_NOTIFY
*GoVirtualEvent
,
37 IN EFI_PHYSICAL_ADDRESS NvStorageBase
,
44 MemStorageConstructor (
45 OUT VARIABLE_STORAGE
**VarStore
,
46 OUT EFI_EVENT_NOTIFY
*GoVirtualEvent
,
52 (EFIAPI
*ERASE_STORE
) (
53 IN VARIABLE_STORAGE
*This
58 (EFIAPI
*WRITE_STORE
) (
59 IN VARIABLE_STORAGE
*This
,
65 struct _VARIABLE_STORAGE
{
68 // Functions to access the storage
74 typedef struct _VS_FILE_INFO
{
75 UINT8
*FileData
; // local buffer for reading acceleration
77 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
; // device having storage file
82 typedef struct _VS_MEM_INFO
{
86 typedef struct _VS_DEV
{
88 VARIABLE_STORAGE VarStore
;
93 // finally visit FileInfo.FileData or MemInfo.MemData
97 VS_FILE_INFO FileInfo
;
103 #define DEV_FROM_THIS(a) CR (a, VS_DEV, VarStore, VARIABLE_STORE_SIGNATURE)
105 #define VAR_DATA_PTR(a) ((a)->Info.Data)
106 #define VAR_FILE_DEVICEPATH(a) ((a)->Info.FileInfo.DevicePath)
107 #define VAR_FILE_VOLUMEID(a) ((a)->Info.FileInfo.VolumeId)
108 #define VAR_FILE_FILEPATH(a) ((a)->Info.FileInfo.FilePath)