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
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.
18 Tiano PEIM to provide the variable functionality
22 #ifndef _PEI_VARIABLE_H
23 #define _PEI_VARIABLE_H
26 #include <Ppi/ReadOnlyVariable2.h>
27 #include <Library/DebugLib.h>
28 #include <Library/PeimEntryPoint.h>
29 #include <Library/HobLib.h>
30 #include <Library/PcdLib.h>
31 #include <Library/BaseMemoryLib.h>
32 #include <Library/PeiServicesTablePointerLib.h>
33 #include <VariableFormat.h>
36 // Define GET_PAD_SIZE to optimize compiler
38 #if ((ALIGNMENT == 0) || (ALIGNMENT == 1))
39 #define GET_PAD_SIZE(a) (0)
41 #define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1))
44 #define HEADER_ALIGN(Header) (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1)))
46 #define NAMESIZE_OF_VARIABLE(Variable) \
47 ((((Variable)->DataSize == (UINT32) -1) || \
48 ((Variable)->Attributes == (UINT32) -1) || \
49 ((Variable)->NameSize == (UINT32) -1)) ? \
51 (Variable)->NameSize \
54 #define DATASIZE_OF_VARIABLE(Variable) \
55 ((((Variable)->DataSize == (UINT32) -1) || \
56 ((Variable)->Attributes == (UINT32) -1) || \
57 ((Variable)->NameSize == (UINT32) -1)) ? \
59 (Variable)->DataSize \
62 #define GET_VARIABLE_NAME_PTR(a) (CHAR16 *) ((UINTN) (a) + sizeof (VARIABLE_HEADER))
64 #define GET_VARIABLE_DATA_PTR(a) \
65 (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (a) + NAMESIZE_OF_VARIABLE(a) + GET_PAD_SIZE (NAMESIZE_OF_VARIABLE(a)))
68 VARIABLE_HEADER
*CurrPtr
;
69 VARIABLE_HEADER
*EndPtr
;
70 VARIABLE_HEADER
*StartPtr
;
71 } VARIABLE_POINTER_TRACK
;
73 #define VARIABLE_INDEX_TABLE_VOLUME 122
75 #define EFI_VARIABLE_INDEX_TABLE_GUID \
76 { 0x8cfdb8c8, 0xd6b2, 0x40f3, { 0x8e, 0x97, 0x02, 0x30, 0x7c, 0xc9, 0x8b, 0x7c } }
81 VARIABLE_HEADER
*EndPtr
;
82 VARIABLE_HEADER
*StartPtr
;
83 UINT16 Index
[VARIABLE_INDEX_TABLE_VOLUME
];
84 } VARIABLE_INDEX_TABLE
;
92 PeimInitializeVariableServices (
93 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
94 IN EFI_PEI_SERVICES
**PeiServices
100 TODO: Add function description
104 FfsHeader - TODO: add argument description
105 PeiServices - TODO: add argument description
109 TODO: add return values
117 IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI
*This
,
118 IN CONST CHAR16
*VariableName
,
119 IN CONST EFI_GUID
*VariableGuid
,
120 OUT UINT32
*Attributes
,
121 IN OUT UINTN
*DataSize
,
128 TODO: Add function description
132 PeiServices - TODO: add argument description
133 VariableName - TODO: add argument description
134 VendorGuid - TODO: add argument description
135 Attributes - TODO: add argument description
136 DataSize - TODO: add argument description
137 Data - TODO: add argument description
141 TODO: add return values
148 PeiGetNextVariableName (
149 IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI
*This
,
150 IN OUT UINTN
*VariableNameSize
,
151 IN OUT CHAR16
*VariableName
,
152 IN OUT EFI_GUID
*VariableGuid
158 TODO: Add function description
162 PeiServices - TODO: add argument description
163 VariableNameSize - TODO: add argument description
164 VariableName - TODO: add argument description
165 VendorGuid - TODO: add argument description
169 TODO: add return values
175 Get one variable by the index count.
177 @param IndexTable The pointer to variable index table.
178 @param Count The index count of variable in index table.
180 @return The pointer to variable header indexed by count.
185 IN VARIABLE_INDEX_TABLE
*IndexTable
,
190 Record Variable in VariableIndex HOB.
192 Record Variable in VariableIndex HOB and update the length of variable index table.
194 @param IndexTable The pointer to variable index table.
195 @param Variable The pointer to the variable that will be recorded.
201 VariableIndexTableUpdate (
202 IN OUT VARIABLE_INDEX_TABLE
*IndexTable
,
203 IN VARIABLE_HEADER
*Variable
206 #endif // _PEI_VARIABLE_H