]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Protocol/Pcd.h
Sync up Pcd Library Instances and PCD Driver/PEIM with Pcd spec 0.51 and Mde 0.51
[mirror_edk2.git] / MdePkg / Include / Protocol / 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
b16ef805 20#include <Common/Pcd.h>\r
21\r
878ddf1f 22extern EFI_GUID gPcdProtocolGuid;\r
23\r
24#define PCD_PROTOCOL_GUID \\r
25 { 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7 } }\r
26\r
27typedef \r
b16ef805 28VOID\r
878ddf1f 29(EFIAPI *PCD_PROTOCOL_SET_SKU) (\r
b16ef805 30 IN SKU_ID SkuId\r
878ddf1f 31 );\r
32\r
33typedef\r
34UINT8\r
35(EFIAPI *PCD_PROTOCOL_GET8) (\r
b16ef805 36 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 37 );\r
38\r
39typedef\r
40UINT16\r
41(EFIAPI *PCD_PROTOCOL_GET16) (\r
b16ef805 42 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 43 );\r
44\r
45typedef\r
46UINT32\r
47(EFIAPI *PCD_PROTOCOL_GET32) (\r
b16ef805 48 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 49 );\r
50\r
51typedef\r
52UINT64\r
53(EFIAPI *PCD_PROTOCOL_GET64) (\r
b16ef805 54 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 55 );\r
56\r
57typedef\r
58VOID *\r
59(EFIAPI *PCD_PROTOCOL_GET_POINTER) (\r
b16ef805 60 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 61 );\r
62\r
63typedef\r
64BOOLEAN\r
65(EFIAPI *PCD_PROTOCOL_GET_BOOLEAN) (\r
b16ef805 66 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 67 );\r
68\r
69typedef\r
70UINTN\r
71(EFIAPI *PCD_PROTOCOL_GET_SIZE) (\r
b16ef805 72 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 73 );\r
74\r
75typedef\r
76UINT8\r
77(EFIAPI *PCD_PROTOCOL_GET_EX_8) (\r
78 IN CONST EFI_GUID *Guid,\r
b16ef805 79 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 80 );\r
81\r
82typedef\r
83UINT16\r
84(EFIAPI *PCD_PROTOCOL_GET_EX_16) (\r
85 IN CONST EFI_GUID *Guid,\r
b16ef805 86 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 87 );\r
88\r
89typedef\r
90UINT32\r
91(EFIAPI *PCD_PROTOCOL_GET_EX_32) (\r
92 IN CONST EFI_GUID *Guid,\r
b16ef805 93 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 94 );\r
95\r
96typedef\r
97UINT64\r
98(EFIAPI *PCD_PROTOCOL_GET_EX_64) (\r
99 IN CONST EFI_GUID *Guid,\r
b16ef805 100 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 101 );\r
102\r
103typedef\r
104VOID *\r
105(EFIAPI *PCD_PROTOCOL_GET_EX_POINTER) (\r
106 IN CONST EFI_GUID *Guid,\r
b16ef805 107 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 108 );\r
109\r
110typedef\r
111BOOLEAN\r
112(EFIAPI *PCD_PROTOCOL_GET_EX_BOOLEAN) (\r
113 IN CONST EFI_GUID *Guid,\r
b16ef805 114 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 115 );\r
116\r
117typedef\r
118UINTN\r
119(EFIAPI *PCD_PROTOCOL_GET_EX_SIZE) (\r
120 IN CONST EFI_GUID *Guid,\r
b16ef805 121 IN PCD_TOKEN_NUMBER TokenNumber\r
878ddf1f 122 );\r
123\r
124typedef\r
125EFI_STATUS\r
126(EFIAPI *PCD_PROTOCOL_SET8) (\r
b16ef805 127 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 128 IN UINT8 Value\r
129 );\r
130\r
131typedef\r
132EFI_STATUS\r
133(EFIAPI *PCD_PROTOCOL_SET16) (\r
b16ef805 134 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 135 IN UINT16 Value\r
136 );\r
137\r
138typedef\r
139EFI_STATUS\r
140(EFIAPI *PCD_PROTOCOL_SET32) (\r
b16ef805 141 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 142 IN UINT32 Value\r
143 );\r
144\r
145typedef\r
146EFI_STATUS\r
147(EFIAPI *PCD_PROTOCOL_SET64) (\r
b16ef805 148 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 149 IN UINT64 Value\r
150 );\r
151\r
152typedef\r
153EFI_STATUS\r
154(EFIAPI *PCD_PROTOCOL_SET_POINTER) (\r
b16ef805 155 IN PCD_TOKEN_NUMBER TokenNumber,\r
156 IN UINTN SizeOfBuffer,\r
157 IN VOID *Buffer\r
878ddf1f 158 );\r
159\r
160typedef\r
161EFI_STATUS\r
162(EFIAPI *PCD_PROTOCOL_SET_BOOLEAN) (\r
b16ef805 163 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 164 IN BOOLEAN Value\r
165 );\r
166\r
167typedef\r
168EFI_STATUS\r
169(EFIAPI *PCD_PROTOCOL_SET_EX_8) (\r
170 IN CONST EFI_GUID *Guid,\r
b16ef805 171 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 172 IN UINT8 Value\r
173 );\r
174\r
175typedef\r
176EFI_STATUS\r
177(EFIAPI *PCD_PROTOCOL_SET_EX_16) (\r
178 IN CONST EFI_GUID *Guid,\r
b16ef805 179 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 180 IN UINT16 Value\r
181 );\r
182\r
183typedef\r
184EFI_STATUS\r
185(EFIAPI *PCD_PROTOCOL_SET_EX_32) (\r
186 IN CONST EFI_GUID *Guid,\r
b16ef805 187 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 188 IN UINT32 Value\r
189 );\r
190\r
191typedef\r
192EFI_STATUS\r
193(EFIAPI *PCD_PROTOCOL_SET_EX_64) (\r
194 IN CONST EFI_GUID *Guid,\r
b16ef805 195 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 196 IN UINT64 Value\r
197 );\r
198\r
199typedef\r
200EFI_STATUS\r
201(EFIAPI *PCD_PROTOCOL_SET_EX_POINTER) (\r
202 IN CONST EFI_GUID *Guid,\r
b16ef805 203 IN PCD_TOKEN_NUMBER TokenNumber,\r
204 IN UINTN SizeOfBuffer,\r
205 IN VOID *Buffer\r
878ddf1f 206 );\r
207\r
208typedef\r
209EFI_STATUS\r
210(EFIAPI *PCD_PROTOCOL_SET_EX_BOOLEAN) (\r
211 IN CONST EFI_GUID *Guid,\r
b16ef805 212 IN PCD_TOKEN_NUMBER 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_PROTOCOL_CALLBACK) (\r
b16ef805 230 IN CONST EFI_GUID *CallBackGuid, OPTIONAL\r
231 IN PCD_TOKEN_NUMBER CallBackToken,\r
232 IN OUT VOID *TokenData,\r
233 IN UINTN TokenDataSize\r
878ddf1f 234 );\r
235\r
236typedef\r
237EFI_STATUS\r
238(EFIAPI *PCD_PROTOCOL_CALLBACK_ONSET) (\r
b16ef805 239 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 240 IN CONST EFI_GUID *Guid, OPTIONAL\r
241 IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
242 );\r
243\r
244typedef\r
245EFI_STATUS\r
246(EFIAPI *PCD_PROTOCOL_CANCEL_CALLBACK) (\r
b16ef805 247 IN PCD_TOKEN_NUMBER TokenNumber,\r
878ddf1f 248 IN CONST EFI_GUID *Guid, OPTIONAL\r
249 IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
250 );\r
251\r
252typedef \r
253EFI_STATUS\r
254(EFIAPI *PCD_PROTOCOL_GET_NEXT_TOKEN) (\r
255 IN CONST EFI_GUID *Guid, OPTIONAL\r
b16ef805 256 IN OUT PCD_TOKEN_NUMBER *TokenNumber\r
878ddf1f 257 );\r
258\r
259typedef struct {\r
260 PCD_PROTOCOL_SET_SKU SetSku;\r
261\r
262 PCD_PROTOCOL_GET8 Get8;\r
263 PCD_PROTOCOL_GET16 Get16;\r
264 PCD_PROTOCOL_GET32 Get32;\r
265 PCD_PROTOCOL_GET64 Get64;\r
266 PCD_PROTOCOL_GET_POINTER GetPtr;\r
267 PCD_PROTOCOL_GET_BOOLEAN GetBool;\r
268 PCD_PROTOCOL_GET_SIZE GetSize;\r
269\r
270 PCD_PROTOCOL_GET_EX_8 Get8Ex;\r
271 PCD_PROTOCOL_GET_EX_16 Get16Ex;\r
272 PCD_PROTOCOL_GET_EX_32 Get32Ex;\r
273 PCD_PROTOCOL_GET_EX_64 Get64Ex;\r
274 PCD_PROTOCOL_GET_EX_POINTER GetPtrEx;\r
275 PCD_PROTOCOL_GET_EX_BOOLEAN GetBoolEx;\r
276 PCD_PROTOCOL_GET_EX_SIZE GetSizeEx;\r
277\r
278 PCD_PROTOCOL_SET8 Set8;\r
279 PCD_PROTOCOL_SET16 Set16;\r
280 PCD_PROTOCOL_SET32 Set32;\r
281 PCD_PROTOCOL_SET64 Set64;\r
282 PCD_PROTOCOL_SET_POINTER SetPtr;\r
283 PCD_PROTOCOL_SET_BOOLEAN SetBool;\r
284\r
285 PCD_PROTOCOL_SET_EX_8 Set8Ex;\r
286 PCD_PROTOCOL_SET_EX_16 Set16Ex;\r
287 PCD_PROTOCOL_SET_EX_32 Set32Ex;\r
288 PCD_PROTOCOL_SET_EX_64 Set64Ex;\r
289 PCD_PROTOCOL_SET_EX_POINTER SetPtrEx;\r
290 PCD_PROTOCOL_SET_EX_BOOLEAN SetBoolEx;\r
291\r
292 PCD_PROTOCOL_CALLBACK_ONSET CallbackOnSet;\r
293 PCD_PROTOCOL_CANCEL_CALLBACK CancelCallback;\r
294 PCD_PROTOCOL_GET_NEXT_TOKEN GetNextToken;\r
295} PCD_PROTOCOL;\r
296\r
297#endif\r