]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/EmuVariableRuntimeDxe/Variable.h
Use EdkFatBinPkg binary fat module in Nt32Pkg.fdf, becuase the binary fat module...
[mirror_edk2.git] / MdeModulePkg / Universal / EmuVariableRuntimeDxe / Variable.h
CommitLineData
f80315c3 1/*++\r
2\r
3Copyright (c) 2006 - 2007, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
12Module Name:\r
13\r
14 Variable.h\r
15\r
16Abstract:\r
17\r
18--*/\r
19\r
20#ifndef _VARIABLE_H\r
21#define _VARIABLE_H\r
22\r
23//\r
24// Statements that include other header files\r
25//\r
26//\r
27// The package level header files this module uses\r
28//\r
29#include <PiDxe.h>\r
30//\r
31// The protocols, PPI and GUID defintions for this module\r
32//\r
33#include <Protocol/VariableWrite.h>\r
34#include <Protocol/Variable.h>\r
35//\r
36// The Library classes this module consumes\r
37//\r
38#include <Library/BaseMemoryLib.h>\r
39#include <Library/MemoryAllocationLib.h>\r
40#include <Library/DebugLib.h>\r
41#include <Library/UefiRuntimeLib.h>\r
42#include <Library/UefiDriverEntryPoint.h>\r
43#include <Library/UefiBootServicesTableLib.h>\r
44#include <Library/UefiLib.h>\r
45#include <Library/BaseLib.h>\r
46\r
47//\r
48// BugBug: We need relcate the head file.\r
49//\r
50#include <Common/Variable.h>\r
51\r
52#define VARIABLE_STORE_SIZE (64 * 1024)\r
53#define SCRATCH_SIZE (4 * 1024)\r
54\r
55//\r
56// Define GET_PAD_SIZE to optimize compiler\r
57//\r
58#if ((ALIGNMENT == 0) || (ALIGNMENT == 1))\r
59#define GET_PAD_SIZE(a) (0)\r
60#else\r
61#define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1))\r
62#endif\r
63\r
64#define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER))\r
65\r
66typedef enum {\r
67 Physical,\r
68 Virtual\r
69} VARIABLE_POINTER_TYPE;\r
70\r
71typedef struct {\r
72 VARIABLE_HEADER *CurrPtr;\r
73 VARIABLE_HEADER *EndPtr;\r
74 VARIABLE_HEADER *StartPtr;\r
75 BOOLEAN Volatile;\r
76} VARIABLE_POINTER_TRACK;\r
77\r
78typedef struct {\r
79 EFI_PHYSICAL_ADDRESS VolatileVariableBase;\r
80 EFI_PHYSICAL_ADDRESS NonVolatileVariableBase;\r
81 EFI_LOCK VariableServicesLock;\r
82} VARIABLE_GLOBAL;\r
83\r
84typedef struct {\r
85 VARIABLE_GLOBAL VariableGlobal[2];\r
86 UINTN VolatileLastVariableOffset;\r
87 UINTN NonVolatileLastVariableOffset;\r
88 UINT32 FvbInstance;\r
89} ESAL_VARIABLE_GLOBAL;\r
90\r
91extern ESAL_VARIABLE_GLOBAL *mVariableModuleGlobal;\r
92\r
93//\r
94// Functions\r
95//\r
96EFI_STATUS\r
97EFIAPI\r
98VariableCommonInitialize (\r
99 IN EFI_HANDLE ImageHandle,\r
100 IN EFI_SYSTEM_TABLE *SystemTable\r
101 )\r
102;\r
103\r
104EFI_STATUS\r
105EFIAPI\r
106VariableServiceInitialize (\r
107 IN EFI_HANDLE ImageHandle,\r
108 IN EFI_SYSTEM_TABLE *SystemTable\r
109 )\r
110;\r
111\r
112VOID\r
113EFIAPI\r
114VariableClassAddressChangeEvent (\r
115 IN EFI_EVENT Event,\r
116 IN VOID *Context\r
117 )\r
118;\r
119\r
120EFI_STATUS\r
121EFIAPI\r
122GetVariable (\r
123 IN CHAR16 *VariableName,\r
124 IN EFI_GUID * VendorGuid,\r
125 OUT UINT32 *Attributes OPTIONAL,\r
126 IN OUT UINTN *DataSize,\r
127 OUT VOID *Data,\r
128 IN VARIABLE_GLOBAL * Global,\r
129 IN UINT32 Instance\r
130 )\r
131;\r
132\r
133EFI_STATUS\r
134EFIAPI\r
135GetNextVariableName (\r
136 IN OUT UINTN *VariableNameSize,\r
137 IN OUT CHAR16 *VariableName,\r
138 IN OUT EFI_GUID *VendorGuid,\r
139 IN VARIABLE_GLOBAL *Global,\r
140 IN UINT32 Instance\r
141 )\r
142;\r
143\r
144EFI_STATUS\r
145EFIAPI\r
146SetVariable (\r
147 IN CHAR16 *VariableName,\r
148 IN EFI_GUID *VendorGuid,\r
149 IN UINT32 Attributes,\r
150 IN UINTN DataSize,\r
151 IN VOID *Data,\r
152 IN VARIABLE_GLOBAL *Global,\r
153 IN UINTN *VolatileOffset,\r
154 IN UINTN *NonVolatileOffset,\r
155 IN UINT32 Instance\r
156 )\r
157;\r
158\r
159EFI_STATUS\r
160EFIAPI\r
161QueryVariableInfo (\r
162 IN UINT32 Attributes,\r
163 OUT UINT64 *MaximumVariableStorageSize,\r
164 OUT UINT64 *RemainingVariableStorageSize,\r
165 OUT UINT64 *MaximumVariableSize,\r
166 IN VARIABLE_GLOBAL *Global,\r
167 IN UINT32 Instance\r
168 )\r
169;\r
170\r
171#endif\r