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