]> git.proxmox.com Git - mirror_edk2.git/blob - DuetPkg/FSVariable/VariableStorage.h
Update the copyright notice format
[mirror_edk2.git] / DuetPkg / FSVariable / VariableStorage.h
1 /*++
2
3 Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
4 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
8
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.
11
12 Module Name:
13
14 VariableStorage.h
15
16 Abstract:
17
18 handles variable store/reads with memory and file
19
20 Revision History
21
22 --*/
23 #ifndef _VARIABLE_STORAGE_H_
24 #define _VARIABLE_STORAGE_H_
25
26 #define VAR_DEFAULT_VALUE (0xff)
27 #define VAR_DEFAULT_VALUE_16 SIGNATURE_16 (VAR_DEFAULT_VALUE, VAR_DEFAULT_VALUE)
28 #define VAR_DEFAULT_VALUE_32 SIGNATURE_32 (VAR_DEFAULT_VALUE, VAR_DEFAULT_VALUE, \
29 VAR_DEFAULT_VALUE, VAR_DEFAULT_VALUE)
30
31 typedef struct _VARIABLE_STORAGE VARIABLE_STORAGE;
32
33 EFI_STATUS
34 FileStorageConstructor (
35 OUT VARIABLE_STORAGE **VarStore,
36 OUT EFI_EVENT_NOTIFY *GoVirtualEvent,
37 IN EFI_PHYSICAL_ADDRESS NvStorageBase,
38 IN UINTN Size,
39 IN UINT32 VolumeId,
40 IN CHAR16 *FilePath
41 );
42
43 EFI_STATUS
44 MemStorageConstructor (
45 OUT VARIABLE_STORAGE **VarStore,
46 OUT EFI_EVENT_NOTIFY *GoVirtualEvent,
47 IN UINTN Size
48 );
49
50 typedef
51 EFI_STATUS
52 (EFIAPI *ERASE_STORE) (
53 IN VARIABLE_STORAGE *This
54 );
55
56 typedef
57 EFI_STATUS
58 (EFIAPI *WRITE_STORE) (
59 IN VARIABLE_STORAGE *This,
60 IN UINTN Offset,
61 IN UINTN BufferSize,
62 IN VOID *Buffer
63 );
64
65 struct _VARIABLE_STORAGE {
66
67 //
68 // Functions to access the storage
69 //
70 ERASE_STORE Erase;
71 WRITE_STORE Write;
72 };
73
74 typedef struct _VS_FILE_INFO {
75 UINT8 *FileData; // local buffer for reading acceleration
76
77 EFI_DEVICE_PATH_PROTOCOL *DevicePath; // device having storage file
78 UINT32 VolumeId;
79 CHAR16 FilePath[256];
80 } VS_FILE_INFO;
81
82 typedef struct _VS_MEM_INFO {
83 UINT8 *MemData;
84 } VS_MEM_INFO;
85
86 typedef struct _VS_DEV {
87 UINT32 Signature;
88 VARIABLE_STORAGE VarStore;
89 UINTN Size;
90
91 union {
92 //
93 // finally visit FileInfo.FileData or MemInfo.MemData
94 //
95 UINT8 *Data;
96
97 VS_FILE_INFO FileInfo;
98 VS_MEM_INFO MemInfo;
99 } Info;
100
101 } VS_DEV;
102
103 #define VS_DEV_SIGNATURE SIGNATURE_32 ('$', 'V', 'S', 'D')
104 #define DEV_FROM_THIS(a) CR (a, VS_DEV, VarStore, VS_DEV_SIGNATURE)
105
106 #define VAR_DATA_PTR(a) ((a)->Info.Data)
107 #define VAR_FILE_DEVICEPATH(a) ((a)->Info.FileInfo.DevicePath)
108 #define VAR_FILE_VOLUMEID(a) ((a)->Info.FileInfo.VolumeId)
109 #define VAR_FILE_FILEPATH(a) ((a)->Info.FileInfo.FilePath)
110
111
112 #endif