]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/EmuVariable/RuntimeDxe/InitVariable.c
1. Removed #ifdef EDK_RELEASE_VERSION from all c files for all modules
[mirror_edk2.git] / EdkModulePkg / Universal / EmuVariable / RuntimeDxe / InitVariable.c
CommitLineData
878ddf1f 1/*++\r
2\r
ce8bd86e 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
878ddf1f 11\r
12Module Name:\r
13\r
14 InitVariable.c\r
15\r
16Abstract:\r
17\r
18Revision History\r
19\r
20--*/\r
21\r
22#include "Variable.h"\r
23\r
24//\r
25// Don't use module globals after the SetVirtualAddress map is signaled\r
26//\r
27extern ESAL_VARIABLE_GLOBAL *mVariableModuleGlobal;\r
28\r
29EFI_STATUS\r
30EFIAPI\r
31RuntimeServiceGetVariable (\r
32 IN CHAR16 *VariableName,\r
33 IN EFI_GUID * VendorGuid,\r
34 OUT UINT32 *Attributes OPTIONAL,\r
35 IN OUT UINTN *DataSize,\r
36 OUT VOID *Data\r
37 )\r
38/*++\r
39\r
40Routine Description:\r
41\r
42Arguments:\r
43\r
44Returns:\r
45\r
46--*/\r
47{\r
48 return GetVariable (\r
49 VariableName,\r
50 VendorGuid,\r
51 Attributes OPTIONAL,\r
52 DataSize,\r
53 Data,\r
6ed71dcc 54 &mVariableModuleGlobal->VariableGlobal[Physical],\r
878ddf1f 55 mVariableModuleGlobal->FvbInstance\r
56 );\r
57}\r
58\r
59EFI_STATUS\r
60EFIAPI\r
61RuntimeServiceGetNextVariableName (\r
62 IN OUT UINTN *VariableNameSize,\r
63 IN OUT CHAR16 *VariableName,\r
64 IN OUT EFI_GUID *VendorGuid\r
65 )\r
66/*++\r
67\r
68Routine Description:\r
69\r
70Arguments:\r
71\r
72Returns:\r
73\r
74--*/\r
75{\r
76 return GetNextVariableName (\r
77 VariableNameSize,\r
78 VariableName,\r
79 VendorGuid,\r
6ed71dcc 80 &mVariableModuleGlobal->VariableGlobal[Physical],\r
878ddf1f 81 mVariableModuleGlobal->FvbInstance\r
82 );\r
83}\r
84\r
85EFI_STATUS\r
86EFIAPI\r
87RuntimeServiceSetVariable (\r
88 IN CHAR16 *VariableName,\r
89 IN EFI_GUID *VendorGuid,\r
90 IN UINT32 Attributes,\r
91 IN UINTN DataSize,\r
92 IN VOID *Data\r
93 )\r
94/*++\r
95\r
96Routine Description:\r
97\r
98Arguments:\r
99\r
100Returns:\r
101\r
102--*/\r
103{\r
104 return SetVariable (\r
105 VariableName,\r
106 VendorGuid,\r
107 Attributes,\r
108 DataSize,\r
109 Data,\r
6ed71dcc 110 &mVariableModuleGlobal->VariableGlobal[Physical],\r
878ddf1f 111 &mVariableModuleGlobal->VolatileLastVariableOffset,\r
112 &mVariableModuleGlobal->NonVolatileLastVariableOffset,\r
113 mVariableModuleGlobal->FvbInstance\r
114 );\r
115}\r
116\r
045f4521 117EFI_STATUS\r
118EFIAPI\r
119RuntimeServiceQueryVariableInfo (\r
120 IN UINT32 Attributes,\r
121 OUT UINT64 *MaximumVariableStorageSize,\r
122 OUT UINT64 *RemainingVariableStorageSize,\r
123 OUT UINT64 *MaximumVariableSize\r
124 )\r
125/*++\r
126\r
127Routine Description:\r
128\r
129Arguments:\r
130\r
131Returns:\r
132\r
133--*/\r
134{\r
135 return QueryVariableInfo (\r
136 Attributes,\r
137 MaximumVariableStorageSize,\r
138 RemainingVariableStorageSize,\r
139 MaximumVariableSize,\r
6ed71dcc 140 &mVariableModuleGlobal->VariableGlobal[Physical],\r
045f4521 141 mVariableModuleGlobal->FvbInstance\r
142 );\r
143}\r
045f4521 144\r
878ddf1f 145VOID\r
146EFIAPI\r
147VariableClassAddressChangeEvent (\r
148 IN EFI_EVENT Event,\r
149 IN VOID *Context\r
150 )\r
151/*++\r
152\r
153Routine Description:\r
154\r
155Arguments:\r
156\r
157Returns:\r
158\r
159--*/\r
160{\r
161 EfiConvertPointer (\r
162 0x0,\r
6ed71dcc 163 (VOID **) &mVariableModuleGlobal->VariableGlobal[Physical].NonVolatileVariableBase\r
878ddf1f 164 );\r
165 EfiConvertPointer (\r
166 0x0,\r
6ed71dcc 167 (VOID **) &mVariableModuleGlobal->VariableGlobal[Physical].VolatileVariableBase\r
878ddf1f 168 );\r
169 EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal);\r
170}\r
171\r
172EFI_STATUS\r
173EFIAPI\r
174VariableServiceInitialize (\r
175 IN EFI_HANDLE ImageHandle,\r
176 IN EFI_SYSTEM_TABLE *SystemTable\r
177 )\r
178/*++\r
179\r
180Routine Description:\r
181\r
182Arguments:\r
183\r
184Returns:\r
185\r
186--*/\r
187{\r
188 EFI_HANDLE NewHandle;\r
189 EFI_STATUS Status;\r
190\r
191 Status = VariableCommonInitialize (ImageHandle, SystemTable);\r
192 ASSERT_EFI_ERROR (Status);\r
193\r
194 SystemTable->RuntimeServices->GetVariable = RuntimeServiceGetVariable;\r
195 SystemTable->RuntimeServices->GetNextVariableName = RuntimeServiceGetNextVariableName;\r
196 SystemTable->RuntimeServices->SetVariable = RuntimeServiceSetVariable;\r
045f4521 197 SystemTable->RuntimeServices->QueryVariableInfo = RuntimeServiceQueryVariableInfo;\r
878ddf1f 198\r
199 //\r
200 // Now install the Variable Runtime Architectural Protocol on a new handle\r
201 //\r
202 NewHandle = NULL;\r
203 Status = gBS->InstallMultipleProtocolInterfaces (\r
204 &NewHandle,\r
205 &gEfiVariableArchProtocolGuid,\r
206 NULL,\r
207 &gEfiVariableWriteArchProtocolGuid,\r
208 NULL,\r
209 NULL\r
210 );\r
211 ASSERT_EFI_ERROR (Status);\r
212\r
213 return EFI_SUCCESS;\r
214}\r