]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/VariablePei/Variable.h
Add variablePei module into MdeModulePkg.
[mirror_edk2.git] / MdeModulePkg / Universal / VariablePei / Variable.h
1 /*++
2
3 Copyright (c) 2006 - 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 Variable.h
15
16 Abstract:
17
18 Tiano PEIM to provide the variable functionality
19
20 --*/
21
22 #ifndef _PEI_VARIABLE_H
23 #define _PEI_VARIABLE_H
24
25 //
26 // BugBug: We need relcate the head file.
27 //
28 #include <Common/Variable.h>
29 #include <VarMachine.h>
30
31 //
32 // Define GET_PAD_SIZE to optimize compiler
33 //
34 #if ((ALIGNMENT == 0) || (ALIGNMENT == 1))
35 #define GET_PAD_SIZE(a) (0)
36 #else
37 #define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1))
38 #endif
39
40 #define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER))
41
42 #define GET_VARIABLE_DATA_PTR(a) \
43 (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (a) + (a)->NameSize + GET_PAD_SIZE ((a)->NameSize))
44
45 typedef struct {
46 VARIABLE_HEADER *CurrPtr;
47 VARIABLE_HEADER *EndPtr;
48 VARIABLE_HEADER *StartPtr;
49 } VARIABLE_POINTER_TRACK;
50
51 #define VARIABLE_INDEX_TABLE_VOLUME 122
52
53 #define EFI_VARIABLE_INDEX_TABLE_GUID \
54 { 0x8cfdb8c8, 0xd6b2, 0x40f3, { 0x8e, 0x97, 0x02, 0x30, 0x7c, 0xc9, 0x8b, 0x7c } }
55
56 typedef struct {
57 UINT16 Length;
58 UINT16 GoneThrough;
59 VARIABLE_HEADER *EndPtr;
60 VARIABLE_HEADER *StartPtr;
61 UINT16 Index[VARIABLE_INDEX_TABLE_VOLUME];
62 } VARIABLE_INDEX_TABLE;
63
64
65 //
66 // Functions
67 //
68 EFI_STATUS
69 EFIAPI
70 PeimInitializeVariableServices (
71 IN EFI_FFS_FILE_HEADER *FfsHeader,
72 IN EFI_PEI_SERVICES **PeiServices
73 )
74 /*++
75
76 Routine Description:
77
78 TODO: Add function description
79
80 Arguments:
81
82 FfsHeader - TODO: add argument description
83 PeiServices - TODO: add argument description
84
85 Returns:
86
87 TODO: add return values
88
89 --*/
90 ;
91
92 EFI_STATUS
93 EFIAPI
94 PeiGetVariable (
95 IN EFI_PEI_SERVICES **PeiServices,
96 IN CHAR16 *VariableName,
97 IN EFI_GUID * VendorGuid,
98 OUT UINT32 *Attributes OPTIONAL,
99 IN OUT UINTN *DataSize,
100 OUT VOID *Data
101 )
102 /*++
103
104 Routine Description:
105
106 TODO: Add function description
107
108 Arguments:
109
110 PeiServices - TODO: add argument description
111 VariableName - TODO: add argument description
112 VendorGuid - TODO: add argument description
113 Attributes - TODO: add argument description
114 DataSize - TODO: add argument description
115 Data - TODO: add argument description
116
117 Returns:
118
119 TODO: add return values
120
121 --*/
122 ;
123
124 EFI_STATUS
125 EFIAPI
126 PeiGetNextVariableName (
127 IN EFI_PEI_SERVICES **PeiServices,
128 IN OUT UINTN *VariableNameSize,
129 IN OUT CHAR16 *VariableName,
130 IN OUT EFI_GUID *VendorGuid
131 )
132 /*++
133
134 Routine Description:
135
136 TODO: Add function description
137
138 Arguments:
139
140 PeiServices - TODO: add argument description
141 VariableNameSize - TODO: add argument description
142 VariableName - TODO: add argument description
143 VendorGuid - TODO: add argument description
144
145 Returns:
146
147 TODO: add return values
148
149 --*/
150 ;
151
152 /**
153 Get one variable by the index count.
154
155 @param IndexTable The pointer to variable index table.
156 @param Count The index count of variable in index table.
157
158 @return The pointer to variable header indexed by count.
159
160 **/
161 VARIABLE_HEADER *
162 GetVariableByIndex (
163 IN VARIABLE_INDEX_TABLE *IndexTable,
164 IN UINT32 Count
165 );
166
167 /**
168 Record Variable in VariableIndex HOB.
169
170 Record Variable in VariableIndex HOB and update the length of variable index table.
171
172 @param IndexTable The pointer to variable index table.
173 @param Variable The pointer to the variable that will be recorded.
174
175 @retval VOID
176
177 **/
178 VOID
179 VariableIndexTableUpdate (
180 IN OUT VARIABLE_INDEX_TABLE *IndexTable,
181 IN VARIABLE_HEADER *Variable
182 );
183
184 #endif // _PEI_VARIABLE_H