]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Ppi/Pcd.h
Add in support for MaxSize and CurrentSize for PCD entry.
[mirror_edk2.git] / MdePkg / Include / Ppi / Pcd.h
CommitLineData
878ddf1f 1/** @file\r
2 Platform Configuration Database (PCD) Protocol\r
3\r
4 Copyright (c) 2006, Intel Corporation \r
5 All rights reserved. This program and the accompanying materials \r
6 are licensed and made available under the terms and conditions of the BSD License \r
7 which accompanies this distribution. The full text of the license may be found at \r
8 http://opensource.org/licenses/bsd-license.php \r
9\r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
12\r
13 Module Name: Pcd.h\r
14\r
15**/\r
16\r
17#ifndef __PCD_H__\r
18#define __PCD_H__\r
19\r
20extern EFI_GUID gPcdPpiGuid;\r
21\r
22#define PCD_PPI_GUID \\r
2a505eac 23 { 0x6e81c58, 0x4ad7, 0x44bc, { 0x83, 0x90, 0xf1, 0x2, 0x65, 0xf7, 0x24, 0x80 } }\r
878ddf1f 24\r
58f1099f 25#define PCD_INVALID_TOKEN_NUMBER ((UINTN) 0)\r
8a43e8dd 26\r
878ddf1f 27typedef \r
b16ef805 28VOID\r
878ddf1f 29(EFIAPI *PCD_PPI_SET_SKU) (\r
8a43e8dd 30 IN UINTN SkuId\r
878ddf1f 31 );\r
32\r
33typedef\r
34UINT8\r
35(EFIAPI *PCD_PPI_GET8) (\r
8a43e8dd 36 IN UINTN TokenNumber\r
878ddf1f 37 );\r
38\r
39typedef\r
40UINT16\r
41(EFIAPI *PCD_PPI_GET16) (\r
8a43e8dd 42 IN UINTN TokenNumber\r
878ddf1f 43 );\r
44\r
45typedef\r
46UINT32\r
47(EFIAPI *PCD_PPI_GET32) (\r
8a43e8dd 48 IN UINTN TokenNumber\r
878ddf1f 49 );\r
50\r
51typedef\r
52UINT64\r
53(EFIAPI *PCD_PPI_GET64) (\r
8a43e8dd 54 IN UINTN TokenNumber\r
878ddf1f 55 );\r
56\r
57typedef\r
58VOID *\r
59(EFIAPI *PCD_PPI_GET_POINTER) (\r
8a43e8dd 60 IN UINTN TokenNumber\r
878ddf1f 61 );\r
62\r
63typedef\r
64BOOLEAN\r
65(EFIAPI *PCD_PPI_GET_BOOLEAN) (\r
8a43e8dd 66 IN UINTN TokenNumber\r
878ddf1f 67 );\r
68\r
69typedef\r
70UINTN\r
71(EFIAPI *PCD_PPI_GET_SIZE) (\r
8a43e8dd 72 IN UINTN TokenNumber\r
878ddf1f 73 );\r
74\r
75typedef\r
76UINT8\r
77(EFIAPI *PCD_PPI_GET_EX_8) (\r
78 IN CONST EFI_GUID *Guid,\r
8a43e8dd 79 IN UINTN TokenNumber\r
878ddf1f 80 );\r
81\r
82typedef\r
83UINT16\r
84(EFIAPI *PCD_PPI_GET_EX_16) (\r
85 IN CONST EFI_GUID *Guid,\r
8a43e8dd 86 IN UINTN TokenNumber\r
878ddf1f 87 );\r
88\r
89typedef\r
90UINT32\r
91(EFIAPI *PCD_PPI_GET_EX_32) (\r
92 IN CONST EFI_GUID *Guid,\r
8a43e8dd 93 IN UINTN TokenNumber\r
878ddf1f 94 );\r
95\r
96typedef\r
97UINT64\r
98(EFIAPI *PCD_PPI_GET_EX_64) (\r
99 IN CONST EFI_GUID *Guid,\r
8a43e8dd 100 IN UINTN TokenNumber\r
878ddf1f 101 );\r
102\r
103typedef\r
104VOID *\r
105(EFIAPI *PCD_PPI_GET_EX_POINTER) (\r
106 IN CONST EFI_GUID *Guid,\r
8a43e8dd 107 IN UINTN TokenNumber\r
878ddf1f 108 );\r
109\r
110typedef\r
111BOOLEAN\r
112(EFIAPI *PCD_PPI_GET_EX_BOOLEAN) (\r
113 IN CONST EFI_GUID *Guid,\r
8a43e8dd 114 IN UINTN TokenNumber\r
878ddf1f 115 );\r
116\r
117typedef\r
118UINTN\r
119(EFIAPI *PCD_PPI_GET_EX_SIZE) (\r
120 IN CONST EFI_GUID *Guid,\r
8a43e8dd 121 IN UINTN TokenNumber\r
878ddf1f 122 );\r
123\r
124typedef\r
125EFI_STATUS\r
126(EFIAPI *PCD_PPI_SET8) (\r
8a43e8dd 127 IN UINTN TokenNumber,\r
878ddf1f 128 IN UINT8 Value\r
129 );\r
130\r
131typedef\r
132EFI_STATUS\r
133(EFIAPI *PCD_PPI_SET16) (\r
8a43e8dd 134 IN UINTN TokenNumber,\r
878ddf1f 135 IN UINT16 Value\r
136 );\r
137\r
138typedef\r
139EFI_STATUS\r
140(EFIAPI *PCD_PPI_SET32) (\r
8a43e8dd 141 IN UINTN TokenNumber,\r
878ddf1f 142 IN UINT32 Value\r
143 );\r
144\r
145typedef\r
146EFI_STATUS\r
147(EFIAPI *PCD_PPI_SET64) (\r
8a43e8dd 148 IN UINTN TokenNumber,\r
878ddf1f 149 IN UINT64 Value\r
150 );\r
151\r
152typedef\r
153EFI_STATUS\r
154(EFIAPI *PCD_PPI_SET_POINTER) (\r
1de04b4f 155 IN UINTN TokenNumber,\r
156 IN OUT UINTN *SizeOfBuffer,\r
157 IN VOID *Buffer\r
878ddf1f 158 );\r
159\r
160typedef\r
161EFI_STATUS\r
162(EFIAPI *PCD_PPI_SET_BOOLEAN) (\r
8a43e8dd 163 IN UINTN TokenNumber,\r
878ddf1f 164 IN BOOLEAN Value\r
165 );\r
166\r
167typedef\r
168EFI_STATUS\r
169(EFIAPI *PCD_PPI_SET_EX_8) (\r
170 IN CONST EFI_GUID *Guid,\r
8a43e8dd 171 IN UINTN TokenNumber,\r
878ddf1f 172 IN UINT8 Value\r
173 );\r
174\r
175typedef\r
176EFI_STATUS\r
177(EFIAPI *PCD_PPI_SET_EX_16) (\r
178 IN CONST EFI_GUID *Guid,\r
8a43e8dd 179 IN UINTN TokenNumber,\r
878ddf1f 180 IN UINT16 Value\r
181 );\r
182\r
183typedef\r
184EFI_STATUS\r
185(EFIAPI *PCD_PPI_SET_EX_32) (\r
186 IN CONST EFI_GUID *Guid,\r
8a43e8dd 187 IN UINTN TokenNumber,\r
878ddf1f 188 IN UINT32 Value\r
189 );\r
190\r
191typedef\r
192EFI_STATUS\r
193(EFIAPI *PCD_PPI_SET_EX_64) (\r
194 IN CONST EFI_GUID *Guid,\r
8a43e8dd 195 IN UINTN TokenNumber,\r
878ddf1f 196 IN UINT64 Value\r
197 );\r
198\r
199typedef\r
200EFI_STATUS\r
201(EFIAPI *PCD_PPI_SET_EX_POINTER) (\r
1de04b4f 202 IN CONST EFI_GUID *Guid,\r
203 IN UINTN TokenNumber,\r
204 IN OUT UINTN *SizeOfBuffer,\r
205 IN VOID *Buffer\r
878ddf1f 206 );\r
207\r
208typedef\r
209EFI_STATUS\r
210(EFIAPI *PCD_PPI_SET_EX_BOOLEAN) (\r
211 IN CONST EFI_GUID *Guid,\r
8a43e8dd 212 IN UINTN TokenNumber,\r
878ddf1f 213 IN BOOLEAN Value\r
214 );\r
215\r
216/**\r
217 Callback on SET function prototype definition.\r
218\r
219 @param[in] CallBackGuid The PCD token GUID being set.\r
220 @param[in] CallBackToken The PCD token number being set.\r
221 @param[in] TokenData A pointer to the token data being set.\r
222 @param[in] TokenDataSize The size, in bytes, of the data being set.\r
223\r
224 @retval VOID\r
225\r
226--*/\r
227typedef\r
228VOID\r
229(EFIAPI *PCD_PPI_CALLBACK) (\r
b16ef805 230 IN CONST EFI_GUID *CallBackGuid, OPTIONAL\r
8a43e8dd 231 IN UINTN CallBackToken,\r
b16ef805 232 IN OUT VOID *TokenData,\r
233 IN UINTN TokenDataSize\r
878ddf1f 234 );\r
235\r
236typedef\r
237EFI_STATUS\r
238(EFIAPI *PCD_PPI_CALLBACK_ONSET) (\r
8a43e8dd 239 IN UINTN TokenNumber,\r
878ddf1f 240 IN CONST EFI_GUID *Guid, OPTIONAL\r
241 IN PCD_PPI_CALLBACK CallBackFunction\r
242 );\r
243\r
244typedef\r
245EFI_STATUS\r
246(EFIAPI *PCD_PPI_CANCEL_CALLBACK) (\r
8a43e8dd 247 IN UINTN TokenNumber,\r
878ddf1f 248 IN CONST EFI_GUID *Guid, OPTIONAL\r
249 IN PCD_PPI_CALLBACK CallBackFunction\r
250 );\r
251\r
252typedef \r
253EFI_STATUS\r
254(EFIAPI *PCD_PPI_GET_NEXT_TOKEN) (\r
255 IN CONST EFI_GUID *Guid, OPTIONAL\r
8a43e8dd 256 IN OUT UINTN *TokenNumber\r
878ddf1f 257 );\r
258\r
4276d5da 259typedef\r
260EFI_STATUS\r
261(EFIAPI *PCD_PPI_GET_NEXT_TOKENSPACE) (\r
262 IN OUT CONST EFI_GUID **Guid\r
263 );\r
264\r
878ddf1f 265typedef struct {\r
266 PCD_PPI_SET_SKU SetSku;\r
267\r
268 PCD_PPI_GET8 Get8;\r
269 PCD_PPI_GET16 Get16;\r
270 PCD_PPI_GET32 Get32;\r
271 PCD_PPI_GET64 Get64;\r
272 PCD_PPI_GET_POINTER GetPtr;\r
273 PCD_PPI_GET_BOOLEAN GetBool;\r
274 PCD_PPI_GET_SIZE GetSize;\r
275\r
276 PCD_PPI_GET_EX_8 Get8Ex;\r
277 PCD_PPI_GET_EX_16 Get16Ex;\r
278 PCD_PPI_GET_EX_32 Get32Ex;\r
279 PCD_PPI_GET_EX_64 Get64Ex;\r
280 PCD_PPI_GET_EX_POINTER GetPtrEx;\r
281 PCD_PPI_GET_EX_BOOLEAN GetBoolEx;\r
282 PCD_PPI_GET_EX_SIZE GetSizeEx;\r
283\r
284 PCD_PPI_SET8 Set8;\r
285 PCD_PPI_SET16 Set16;\r
286 PCD_PPI_SET32 Set32;\r
287 PCD_PPI_SET64 Set64;\r
288 PCD_PPI_SET_POINTER SetPtr;\r
289 PCD_PPI_SET_BOOLEAN SetBool;\r
290\r
291 PCD_PPI_SET_EX_8 Set8Ex;\r
292 PCD_PPI_SET_EX_16 Set16Ex;\r
293 PCD_PPI_SET_EX_32 Set32Ex;\r
294 PCD_PPI_SET_EX_64 Set64Ex;\r
295 PCD_PPI_SET_EX_POINTER SetPtrEx;\r
296 PCD_PPI_SET_EX_BOOLEAN SetBoolEx;\r
297\r
298 PCD_PPI_CALLBACK_ONSET CallbackOnSet;\r
299 PCD_PPI_CANCEL_CALLBACK CancelCallback;\r
300 PCD_PPI_GET_NEXT_TOKEN GetNextToken;\r
4276d5da 301 PCD_PPI_GET_NEXT_TOKENSPACE GetNextTokenSpace;\r
878ddf1f 302} PCD_PPI;\r
303\r
304\r
305#endif\r