ac7c579029422e767aab7ddbd5cbd01f0ca44f62
[mirror_edk2.git] / EdkModulePkg / Universal / Variable / Pei / Variable.h
1 /*++
2
3 Copyright (c) 2006, 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 extern EFI_GUID gEfiVariableIndexTableGuid;
65
66 //
67 // Functions
68 //
69 EFI_STATUS
70 EFIAPI
71 PeimInitializeVariableServices (
72 IN EFI_FFS_FILE_HEADER *FfsHeader,
73 IN EFI_PEI_SERVICES **PeiServices
74 )
75 /*++
76
77 Routine Description:
78
79 TODO: Add function description
80
81 Arguments:
82
83 FfsHeader - TODO: add argument description
84 PeiServices - TODO: add argument description
85
86 Returns:
87
88 TODO: add return values
89
90 --*/
91 ;
92
93 EFI_STATUS
94 EFIAPI
95 PeiGetVariable (
96 IN EFI_PEI_SERVICES **PeiServices,
97 IN CHAR16 *VariableName,
98 IN EFI_GUID * VendorGuid,
99 OUT UINT32 *Attributes OPTIONAL,
100 IN OUT UINTN *DataSize,
101 OUT VOID *Data
102 )
103 /*++
104
105 Routine Description:
106
107 TODO: Add function description
108
109 Arguments:
110
111 PeiServices - TODO: add argument description
112 VariableName - TODO: add argument description
113 VendorGuid - TODO: add argument description
114 Attributes - TODO: add argument description
115 DataSize - TODO: add argument description
116 Data - TODO: add argument description
117
118 Returns:
119
120 TODO: add return values
121
122 --*/
123 ;
124
125 EFI_STATUS
126 EFIAPI
127 PeiGetNextVariableName (
128 IN EFI_PEI_SERVICES **PeiServices,
129 IN OUT UINTN *VariableNameSize,
130 IN OUT CHAR16 *VariableName,
131 IN OUT EFI_GUID *VendorGuid
132 )
133 /*++
134
135 Routine Description:
136
137 TODO: Add function description
138
139 Arguments:
140
141 PeiServices - TODO: add argument description
142 VariableNameSize - TODO: add argument description
143 VariableName - TODO: add argument description
144 VendorGuid - TODO: add argument description
145
146 Returns:
147
148 TODO: add return values
149
150 --*/
151 ;
152
153 #endif // _PEI_VARIABLE_H