]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h
Added new PCD setting
[mirror_edk2.git] / MdeModulePkg / Universal / Variable / RuntimeDxe / Variable.h
... / ...
CommitLineData
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#include <PiDxe.h>\r
24#include <Protocol/VariableWrite.h>\r
25#include <Protocol/FaultTolerantWriteLite.h>\r
26#include <Protocol/FirmwareVolumeBlock.h>\r
27#include <Protocol/Variable.h>\r
28#include <Library/PcdLib.h>\r
29#include <Library/UefiDriverEntryPoint.h>\r
30#include <Library/DxeServicesTableLib.h>\r
31#include <Library/UefiRuntimeLib.h>\r
32#include <Library/DebugLib.h>\r
33#include <Library/BaseMemoryLib.h>\r
34#include <Library/FvbServiceLib.h>\r
35#include <Library/UefiBootServicesTableLib.h>\r
36#include <Library/UefiLib.h>\r
37#include <Library/BaseLib.h>\r
38#include <Library/MemoryAllocationLib.h>\r
39#include <Library/HobLib.h>\r
40#include <Guid/FlashMapHob.h>\r
41#include <VariableFormat.h>\r
42\r
43#define VARIABLE_RECLAIM_THRESHOLD (1024)\r
44\r
45#define VARIABLE_STORE_SIZE (64 * 1024)\r
46#define SCRATCH_SIZE (4 * 1024)\r
47\r
48//\r
49// Define GET_PAD_SIZE to optimize compiler\r
50//\r
51#if ((ALIGNMENT == 0) || (ALIGNMENT == 1))\r
52#define GET_PAD_SIZE(a) (0)\r
53#else\r
54#define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1))\r
55#endif\r
56\r
57#define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER))\r
58\r
59typedef enum {\r
60 Physical,\r
61 Virtual\r
62} VARIABLE_POINTER_TYPE;\r
63\r
64typedef struct {\r
65 VARIABLE_HEADER *CurrPtr;\r
66 VARIABLE_HEADER *EndPtr;\r
67 VARIABLE_HEADER *StartPtr;\r
68 BOOLEAN Volatile;\r
69} VARIABLE_POINTER_TRACK;\r
70\r
71typedef struct {\r
72 EFI_PHYSICAL_ADDRESS VolatileVariableBase;\r
73 EFI_PHYSICAL_ADDRESS NonVolatileVariableBase;\r
74 EFI_LOCK VariableServicesLock;\r
75} VARIABLE_GLOBAL;\r
76\r
77typedef struct {\r
78 VARIABLE_GLOBAL VariableGlobal[2];\r
79 UINTN VolatileLastVariableOffset;\r
80 UINTN NonVolatileLastVariableOffset;\r
81 UINT32 FvbInstance;\r
82} ESAL_VARIABLE_GLOBAL;\r
83\r
84extern ESAL_VARIABLE_GLOBAL *mVariableModuleGlobal;\r
85\r
86//\r
87// Functions\r
88//\r
89EFI_STATUS\r
90EFIAPI\r
91VariableCommonInitialize (\r
92 IN EFI_HANDLE ImageHandle,\r
93 IN EFI_SYSTEM_TABLE *SystemTable\r
94 );\r
95\r
96EFI_STATUS\r
97EFIAPI\r
98VariableServiceInitialize (\r
99 IN EFI_HANDLE ImageHandle,\r
100 IN EFI_SYSTEM_TABLE *SystemTable\r
101 );\r
102\r
103VOID\r
104EFIAPI\r
105VariableClassAddressChangeEvent (\r
106 IN EFI_EVENT Event,\r
107 IN VOID *Context\r
108 );\r
109\r
110EFI_STATUS\r
111EFIAPI\r
112GetVariable (\r
113 IN CHAR16 *VariableName,\r
114 IN EFI_GUID * VendorGuid,\r
115 OUT UINT32 *Attributes OPTIONAL,\r
116 IN OUT UINTN *DataSize,\r
117 OUT VOID *Data,\r
118 IN VARIABLE_GLOBAL * Global,\r
119 IN UINT32 Instance\r
120 );\r
121\r
122EFI_STATUS\r
123EFIAPI\r
124GetNextVariableName (\r
125 IN OUT UINTN *VariableNameSize,\r
126 IN OUT CHAR16 *VariableName,\r
127 IN OUT EFI_GUID *VendorGuid,\r
128 IN VARIABLE_GLOBAL *Global,\r
129 IN UINT32 Instance\r
130 );\r
131\r
132EFI_STATUS\r
133EFIAPI\r
134SetVariable (\r
135 IN CHAR16 *VariableName,\r
136 IN EFI_GUID *VendorGuid,\r
137 IN UINT32 Attributes,\r
138 IN UINTN DataSize,\r
139 IN VOID *Data,\r
140 IN VARIABLE_GLOBAL *Global,\r
141 IN UINTN *VolatileOffset,\r
142 IN UINTN *NonVolatileOffset,\r
143 IN UINT32 Instance\r
144 );\r
145\r
146EFI_STATUS\r
147EFIAPI\r
148QueryVariableInfo (\r
149 IN UINT32 Attributes,\r
150 OUT UINT64 *MaximumVariableStorageSize,\r
151 OUT UINT64 *RemainingVariableStorageSize,\r
152 OUT UINT64 *MaximumVariableSize,\r
153 IN VARIABLE_GLOBAL *Global,\r
154 IN UINT32 Instance\r
155 );\r
156\r
157EFI_STATUS\r
158GetFvbHandleByAddress (\r
159 IN EFI_PHYSICAL_ADDRESS VariableStoreBase,\r
160 OUT EFI_HANDLE *FvbHandle\r
161 );\r
162\r
163EFI_STATUS\r
164FtwVariableSpace (\r
165 IN EFI_PHYSICAL_ADDRESS VariableBaseAddress,\r
166 IN UINT8 *Buffer,\r
167 IN UINTN BufferSize\r
168 );\r
169\r
170#endif\r