Import PCD dxe and PCD pei modules.
[people/mcb30/edk2.git] / edk2 / MdeModulePkg / Universal / PCD / Pei / Service.h
1 /** @file\r
2 Private functions used by PCD PEIM.\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 \r
14 Module Name: Service.h\r
15 \r
16 **/\r
17 \r
18 #ifndef _SERVICE_H\r
19 #define _SERVICE_H\r
20 \r
21 //\r
22 // Include common header file for this module.\r
23 //\r
24 #include "CommonHeader.h"\r
25 \r
26 //\r
27 // Please make sure the PCD Serivce PEIM Version is consistent with\r
28 // the version of PCD Database generation tool\r
29 //\r
30 #define PCD_SERVICE_PEIM_VERSION      2\r
31 \r
32 //\r
33 // PCD_PEI_DATABASE_GENTOOL_VERSION is defined in Autogen.h\r
34 // and generated by PCD Database generation tool.\r
35 //\r
36 #if (PCD_SERVICE_PEIM_VERSION != PCD_PEI_SERVICE_DRIVER_AUTOGEN_VERSION )\r
37   #error "Please make sure the version of PCD Service PEIM and PCD PEI Database Generation Tool matches"\r
38 #endif\r
39 \r
40 //\r
41 // PPI Interface Implementation Declaration.\r
42 //\r
43 VOID\r
44 EFIAPI\r
45 PeiPcdSetSku (\r
46   IN  UINTN                  SkuId\r
47   )\r
48 ;\r
49 \r
50 \r
51 UINT8\r
52 EFIAPI\r
53 PeiPcdGet8 (\r
54   IN UINTN             TokenNumber\r
55   )\r
56 ;\r
57 \r
58 \r
59 UINT16\r
60 EFIAPI\r
61 PeiPcdGet16 (\r
62   IN UINTN             TokenNumber\r
63   )\r
64 ;\r
65 \r
66 \r
67 UINT32\r
68 EFIAPI\r
69 PeiPcdGet32 (\r
70   IN UINTN             TokenNumber\r
71   )\r
72 ;\r
73 \r
74 \r
75 UINT64\r
76 EFIAPI\r
77 PeiPcdGet64 (\r
78   IN UINTN             TokenNumber\r
79   )\r
80 ;\r
81 \r
82 \r
83 VOID *\r
84 EFIAPI\r
85 PeiPcdGetPtr (\r
86   IN UINTN             TokenNumber\r
87   )\r
88 ;\r
89 \r
90 \r
91 BOOLEAN\r
92 EFIAPI\r
93 PeiPcdGetBool (\r
94   IN UINTN             TokenNumber\r
95   )\r
96 ;\r
97 \r
98 \r
99 UINTN\r
100 EFIAPI\r
101 PeiPcdGetSize (\r
102   IN UINTN             TokenNumber\r
103   )\r
104 ;\r
105 \r
106 \r
107 UINT8\r
108 EFIAPI\r
109 PeiPcdGet8Ex (\r
110   IN CONST EFI_GUID    *Guid,\r
111   IN UINTN             TokenNumber\r
112   )\r
113 ;\r
114 \r
115 \r
116 UINT16\r
117 EFIAPI\r
118 PeiPcdGet16Ex (\r
119   IN CONST EFI_GUID    *Guid,\r
120   IN UINTN             TokenNumber\r
121   )\r
122 ;\r
123 \r
124 UINT32\r
125 EFIAPI\r
126 PeiPcdGet32Ex (\r
127   IN CONST EFI_GUID    *Guid,\r
128   IN UINTN             TokenNumber\r
129   )\r
130 ;\r
131 \r
132 \r
133 UINT64\r
134 EFIAPI\r
135 PeiPcdGet64Ex (\r
136   IN CONST EFI_GUID    *Guid,\r
137   IN UINTN             TokenNumber\r
138   )\r
139 ;\r
140 \r
141 \r
142 VOID *\r
143 EFIAPI\r
144 PeiPcdGetPtrEx (\r
145   IN CONST EFI_GUID    *Guid,\r
146   IN UINTN             TokenNumber\r
147   )\r
148 ;\r
149 \r
150 \r
151 BOOLEAN\r
152 EFIAPI\r
153 PeiPcdGetBoolEx (\r
154   IN CONST EFI_GUID    *Guid,\r
155   IN UINTN             TokenNumber\r
156   )\r
157 ;\r
158 \r
159 \r
160 UINTN\r
161 EFIAPI\r
162 PeiPcdGetSizeEx (\r
163   IN CONST EFI_GUID    *Guid,\r
164   IN UINTN             TokenNumber\r
165   )\r
166 ;\r
167 \r
168 \r
169 EFI_STATUS\r
170 EFIAPI\r
171 PeiPcdSet8 (\r
172   IN UINTN             TokenNumber,\r
173   IN UINT8             Value\r
174   )\r
175 ;\r
176 \r
177 \r
178 EFI_STATUS\r
179 EFIAPI\r
180 PeiPcdSet16 (\r
181   IN UINTN             TokenNumber,\r
182   IN UINT16            Value\r
183   )\r
184 ;\r
185 \r
186 \r
187 EFI_STATUS\r
188 EFIAPI\r
189 PeiPcdSet32 (\r
190   IN UINTN             TokenNumber,\r
191   IN UINT32            Value\r
192   )\r
193 ;\r
194 \r
195 \r
196 EFI_STATUS\r
197 EFIAPI\r
198 PeiPcdSet64 (\r
199   IN UINTN             TokenNumber,\r
200   IN UINT64            Value\r
201   )\r
202 ;\r
203 \r
204 EFI_STATUS\r
205 EFIAPI\r
206 PeiPcdSetPtr (\r
207   IN        UINTN             TokenNumber,\r
208   IN OUT    UINTN             *SizeOfBuffer,\r
209   IN        VOID              *Buffer\r
210   )\r
211 ;\r
212 \r
213 \r
214 EFI_STATUS\r
215 EFIAPI\r
216 PeiPcdSetBool (\r
217   IN UINTN             TokenNumber,\r
218   IN BOOLEAN           Value\r
219   )\r
220 ;\r
221 \r
222 \r
223 EFI_STATUS\r
224 EFIAPI\r
225 PeiPcdSet8Ex (\r
226   IN CONST EFI_GUID    *Guid,\r
227   IN UINTN             TokenNumber,\r
228   IN UINT8             Value\r
229   )\r
230 ;\r
231 \r
232 EFI_STATUS\r
233 EFIAPI\r
234 PeiPcdSet16Ex (\r
235   IN CONST EFI_GUID    *Guid,\r
236   IN UINTN             TokenNumber,\r
237   IN UINT16            Value\r
238   )\r
239 ;\r
240 \r
241 \r
242 EFI_STATUS\r
243 EFIAPI\r
244 PeiPcdSet32Ex (\r
245   IN CONST EFI_GUID    *Guid,\r
246   IN UINTN             TokenNumber,\r
247   IN UINT32            Value\r
248   )\r
249 ;\r
250 \r
251 \r
252 EFI_STATUS\r
253 EFIAPI\r
254 PeiPcdSet64Ex (\r
255   IN CONST EFI_GUID    *Guid,\r
256   IN UINTN             TokenNumber,\r
257   IN UINT64            Value\r
258   )\r
259 ;\r
260 \r
261 \r
262 EFI_STATUS\r
263 EFIAPI\r
264 PeiPcdSetPtrEx (\r
265   IN        CONST EFI_GUID    *Guid,\r
266   IN        UINTN             TokenNumber,\r
267   IN OUT    UINTN             *SizeOfBuffer,\r
268   IN        VOID              *Buffer\r
269   )\r
270 ;\r
271 \r
272 \r
273 EFI_STATUS\r
274 EFIAPI\r
275 PeiPcdSetBoolEx (\r
276   IN CONST EFI_GUID    *Guid,\r
277   IN UINTN             TokenNumber,\r
278   IN BOOLEAN           Value\r
279   )\r
280 ;\r
281 \r
282 \r
283 \r
284 EFI_STATUS\r
285 EFIAPI\r
286 PeiRegisterCallBackOnSet (\r
287   IN  CONST EFI_GUID          *Guid, OPTIONAL\r
288   IN  UINTN                   TokenNumber,\r
289   IN  PCD_PPI_CALLBACK        CallBackFunction\r
290   )\r
291 ;\r
292 \r
293 \r
294 EFI_STATUS\r
295 EFIAPI\r
296 PcdUnRegisterCallBackOnSet (\r
297   IN  CONST EFI_GUID          *Guid, OPTIONAL\r
298   IN  UINTN                   TokenNumber,\r
299   IN  PCD_PPI_CALLBACK        CallBackFunction\r
300   )\r
301 ;\r
302 \r
303 \r
304 EFI_STATUS\r
305 EFIAPI\r
306 PeiPcdGetNextToken (\r
307   IN CONST EFI_GUID           *Guid, OPTIONAL\r
308   IN OUT  UINTN               *TokenNumber\r
309   )\r
310 ;\r
311 \r
312 \r
313 EFI_STATUS\r
314 EFIAPI\r
315 PeiPcdGetNextTokenSpace (\r
316   IN CONST EFI_GUID           **Guid\r
317   )\r
318 ;\r
319 \r
320 \r
321 /* Internal Function definitions */\r
322 \r
323 PEI_PCD_DATABASE *\r
324 GetPcdDatabase (\r
325   VOID\r
326   )\r
327 ;\r
328 \r
329 \r
330 EFI_STATUS\r
331 SetValueWorker (\r
332   IN          UINTN              TokenNumber,\r
333   IN          VOID               *Data,\r
334   IN          UINTN              Size\r
335   )\r
336 ;\r
337 \r
338 \r
339 EFI_STATUS\r
340 SetWorker (\r
341   IN          UINTN              TokenNumber,\r
342   IN          VOID               *Data,\r
343   IN OUT      UINTN              *Size,\r
344   IN          BOOLEAN            PtrType\r
345   )\r
346 ;\r
347 \r
348 \r
349 EFI_STATUS\r
350 ExSetValueWorker (\r
351   IN          UINTN                ExTokenNumber,\r
352   IN          CONST EFI_GUID       *Guid,\r
353   IN          VOID                 *Data,\r
354   IN          UINTN                Size\r
355   )\r
356 ;\r
357 \r
358 \r
359 \r
360 EFI_STATUS\r
361 ExSetWorker (\r
362   IN      UINTN                ExTokenNumber,\r
363   IN      CONST EFI_GUID       *Guid,\r
364   IN      VOID                 *Data,\r
365   IN OUT  UINTN                *Size,\r
366   IN      BOOLEAN              PtrType\r
367   )\r
368 ;\r
369 \r
370 \r
371 \r
372 VOID *\r
373 GetWorker (\r
374   IN UINTN                TokenNumber,\r
375   IN UINTN                GetSize\r
376   )\r
377 ;\r
378 \r
379 \r
380 \r
381 VOID *\r
382 ExGetWorker (\r
383   IN CONST EFI_GUID   *Guid,\r
384   IN UINTN            ExTokenNumber,\r
385   IN UINTN            GetSize\r
386   )\r
387 ;\r
388 \r
389 typedef struct {\r
390   UINTN   TokenNumber;\r
391   UINTN   Size;\r
392   UINT32  LocalTokenNumberAlias;\r
393 } EX_PCD_ENTRY_ATTRIBUTE;\r
394 \r
395 \r
396 UINTN           \r
397 GetExPcdTokenNumber (\r
398   IN CONST EFI_GUID             *Guid,\r
399   IN UINTN                      ExTokenNumber\r
400   )\r
401 ;\r
402 \r
403 \r
404 \r
405 \r
406 EFI_STATUS\r
407 PeiRegisterCallBackWorker (\r
408   IN  UINTN              TokenNumber,\r
409   IN  CONST GUID         *Guid, OPTIONAL\r
410   IN  PCD_PPI_CALLBACK   CallBackFunction,\r
411   IN  BOOLEAN            Register\r
412 );\r
413 \r
414 \r
415 \r
416 \r
417 VOID\r
418 BuildPcdDatabase (\r
419   VOID\r
420   )\r
421 ;\r
422 \r
423 SKU_ID *\r
424 GetSkuIdArray (\r
425   IN    UINTN             LocalTokenNumberTableIdx,\r
426   IN    PEI_PCD_DATABASE  *Database\r
427   )\r
428 ;\r
429 \r
430 UINTN\r
431 GetSizeTableIndex (\r
432   IN    UINTN             LocalTokenNumberTableIdx,\r
433   IN    PEI_PCD_DATABASE  *Database\r
434   )\r
435 ;\r
436 \r
437 UINTN\r
438 GetPtrTypeSize (\r
439   IN    UINTN             LocalTokenNumberTableIdx,\r
440   OUT   UINTN             *MaxSize,\r
441   IN    PEI_PCD_DATABASE  *Database\r
442   )\r
443 ;\r
444 \r
445 \r
446 \r
447 BOOLEAN\r
448 SetPtrTypeSize (\r
449   IN          UINTN             LocalTokenNumberTableIdx,\r
450   IN    OUT   UINTN             *CurrentSize,\r
451   IN          PEI_PCD_DATABASE  *Database\r
452   )\r
453 ;\r
454 \r
455 \r
456 extern EFI_GUID gPcdDataBaseHobGuid;\r
457 \r
458 extern EFI_GUID gPcdPeiCallbackFnTableHobGuid;\r
459 \r
460 extern PEI_PCD_DATABASE_INIT gPEIPcdDbInit;\r
461 \r
462 #endif\r