]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.h
1) Change the alignment from 1 to 2 for IA32 and X64 arch.
[mirror_edk2.git] / EdkModulePkg / 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//\r
24// Statements that include other header files\r
25//\r
26\r
27//\r
28// BugBug: We need relcate the head file.\r
29//\r
30#include <Common/Variable.h>\r
31\r
32#define VARIABLE_RECLAIM_THRESHOLD (1024)\r
33\r
34#define VARIABLE_STORE_SIZE (64 * 1024)\r
35#define SCRATCH_SIZE (4 * 1024)\r
36\r
37//\r
38// Define GET_PAD_SIZE to optimize compiler\r
39//\r
40#if ((ALIGNMENT == 0) || (ALIGNMENT == 1))\r
41#define GET_PAD_SIZE(a) (0)\r
42#else\r
43#define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1))\r
44#endif\r
45\r
46#define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER))\r
47\r
48typedef enum {\r
49 Physical,\r
50 Virtual\r
51} VARIABLE_POINTER_TYPE;\r
52\r
53typedef struct {\r
54 VARIABLE_HEADER *CurrPtr;\r
55 VARIABLE_HEADER *EndPtr;\r
56 VARIABLE_HEADER *StartPtr;\r
57 BOOLEAN Volatile;\r
58} VARIABLE_POINTER_TRACK;\r
59\r
60typedef struct {\r
61 EFI_PHYSICAL_ADDRESS VolatileVariableBase;\r
62 EFI_PHYSICAL_ADDRESS NonVolatileVariableBase;\r
63 EFI_LOCK VariableServicesLock;\r
64} VARIABLE_GLOBAL;\r
65\r
66typedef struct {\r
67 VARIABLE_GLOBAL VariableGlobal[2];\r
68 UINTN VolatileLastVariableOffset;\r
69 UINTN NonVolatileLastVariableOffset;\r
70 UINT32 FvbInstance;\r
71} ESAL_VARIABLE_GLOBAL;\r
72\r
73extern ESAL_VARIABLE_GLOBAL *mVariableModuleGlobal;\r
74\r
75//\r
76// Functions\r
77//\r
78EFI_STATUS\r
79EFIAPI\r
80VariableCommonInitialize (\r
81 IN EFI_HANDLE ImageHandle,\r
82 IN EFI_SYSTEM_TABLE *SystemTable\r
83 )\r
84;\r
85\r
86EFI_STATUS\r
87EFIAPI\r
88VariableServiceInitialize (\r
89 IN EFI_HANDLE ImageHandle,\r
90 IN EFI_SYSTEM_TABLE *SystemTable\r
91 )\r
92;\r
93\r
94VOID\r
95EFIAPI\r
96VariableClassAddressChangeEvent (\r
97 IN EFI_EVENT Event,\r
98 IN VOID *Context\r
99 )\r
100;\r
101\r
102EFI_STATUS\r
103EFIAPI\r
104GetVariable (\r
105 IN CHAR16 *VariableName,\r
106 IN EFI_GUID * VendorGuid,\r
107 OUT UINT32 *Attributes OPTIONAL,\r
108 IN OUT UINTN *DataSize,\r
109 OUT VOID *Data,\r
110 IN VARIABLE_GLOBAL * Global,\r
111 IN UINT32 Instance\r
112 )\r
113;\r
114\r
115EFI_STATUS\r
116EFIAPI\r
117GetNextVariableName (\r
118 IN OUT UINTN *VariableNameSize,\r
119 IN OUT CHAR16 *VariableName,\r
120 IN OUT EFI_GUID *VendorGuid,\r
121 IN VARIABLE_GLOBAL *Global,\r
122 IN UINT32 Instance\r
123 )\r
124;\r
125\r
126EFI_STATUS\r
127EFIAPI\r
128SetVariable (\r
129 IN CHAR16 *VariableName,\r
130 IN EFI_GUID *VendorGuid,\r
131 IN UINT32 Attributes,\r
132 IN UINTN DataSize,\r
133 IN VOID *Data,\r
134 IN VARIABLE_GLOBAL *Global,\r
135 IN UINTN *VolatileOffset,\r
136 IN UINTN *NonVolatileOffset,\r
137 IN UINT32 Instance\r
138 )\r
139;\r
140\r
141EFI_STATUS\r
142EFIAPI\r
143QueryVariableInfo (\r
144 IN UINT32 Attributes,\r
145 OUT UINT64 *MaximumVariableStorageSize,\r
146 OUT UINT64 *RemainingVariableStorageSize,\r
147 OUT UINT64 *MaximumVariableSize,\r
148 IN VARIABLE_GLOBAL *Global,\r
149 IN UINT32 Instance\r
150 )\r
151;\r
152\r
153#endif\r