Import PCD dxe and PCD pei modules.
[people/mcb30/edk2.git] / edk2 / MdeModulePkg / Universal / PCD / Dxe / Service.h
1 /** @file\r
2 Private functions used by PCD DXE driver.\r
3 \r
4 Copyright (c) 2006 - 2007, 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_DXE_DRIVER_VERSION      2\r
31 \r
32 //\r
33 // PCD_DXE_DATABASE_GENTOOL_VERSION is defined in Autogen.h\r
34 // and generated by PCD Database generation tool.\r
35 //\r
36 #if (PCD_SERVICE_DXE_DRIVER_VERSION != PCD_DXE_SERVICE_DRIVER_AUTOGEN_VERSION)\r
37   #error "Please make sure the version of PCD Service DXE Driver and PCD DXE Database Generation Tool matches"\r
38 #endif\r
39 \r
40 //\r
41 // Protocol Interface function declaration.\r
42 //\r
43 VOID\r
44 EFIAPI\r
45 DxePcdSetSku (\r
46   IN  UINTN                  SkuId\r
47   )\r
48 ;\r
49 \r
50 \r
51 UINT8\r
52 EFIAPI\r
53 DxePcdGet8 (\r
54   IN UINTN             TokenNumber\r
55   )\r
56 ;\r
57 \r
58 \r
59 UINT16\r
60 EFIAPI\r
61 DxePcdGet16 (\r
62   IN UINTN             TokenNumber\r
63   )\r
64 ;\r
65 \r
66 \r
67 UINT32\r
68 EFIAPI\r
69 DxePcdGet32 (\r
70   IN UINTN             TokenNumber\r
71   )\r
72 ;\r
73 \r
74 \r
75 UINT64\r
76 EFIAPI\r
77 DxePcdGet64 (\r
78   IN UINTN             TokenNumber\r
79   )\r
80 ;\r
81 \r
82 \r
83 VOID *\r
84 EFIAPI\r
85 DxePcdGetPtr (\r
86   IN UINTN             TokenNumber\r
87   )\r
88 ;\r
89 \r
90 \r
91 BOOLEAN\r
92 EFIAPI\r
93 DxePcdGetBool (\r
94   IN UINTN             TokenNumber\r
95   )\r
96 ;\r
97 \r
98 \r
99 UINTN\r
100 EFIAPI\r
101 DxePcdGetSize (\r
102   IN UINTN             TokenNumber\r
103   )\r
104 ;\r
105 \r
106 \r
107 UINT8\r
108 EFIAPI\r
109 DxePcdGet8Ex (\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 DxePcdGet16Ex (\r
119   IN CONST EFI_GUID        *Guid,\r
120   IN UINTN             TokenNumber\r
121   )\r
122 ;\r
123 \r
124 \r
125 UINT32\r
126 EFIAPI\r
127 DxePcdGet32Ex (\r
128   IN CONST EFI_GUID        *Guid,\r
129   IN UINTN             TokenNumber\r
130   )\r
131 ;\r
132 \r
133 \r
134 \r
135 UINT64\r
136 EFIAPI\r
137 DxePcdGet64Ex (\r
138   IN CONST EFI_GUID        *Guid,\r
139   IN UINTN             TokenNumber\r
140   )\r
141 ;\r
142 \r
143 \r
144 \r
145 VOID *\r
146 EFIAPI\r
147 DxePcdGetPtrEx (\r
148   IN CONST EFI_GUID        *Guid,\r
149   IN UINTN             TokenNumber\r
150   )\r
151 ;\r
152 \r
153 \r
154 BOOLEAN\r
155 EFIAPI\r
156 DxePcdGetBoolEx (\r
157   IN CONST EFI_GUID        *Guid,\r
158   IN UINTN             TokenNumber\r
159   )\r
160 ;\r
161 \r
162 \r
163 UINTN\r
164 EFIAPI\r
165 DxePcdGetSizeEx (\r
166   IN CONST EFI_GUID        *Guid,\r
167   IN UINTN             TokenNumber\r
168   )\r
169 ;\r
170 \r
171 \r
172 EFI_STATUS\r
173 EFIAPI\r
174 DxePcdSet8 (\r
175   IN UINTN             TokenNumber,\r
176   IN UINT8             Value\r
177   )\r
178 ;\r
179 \r
180 \r
181 EFI_STATUS\r
182 EFIAPI\r
183 DxePcdSet16 (\r
184   IN UINTN             TokenNumber,\r
185   IN UINT16             Value\r
186   )\r
187 ;\r
188 \r
189 \r
190 EFI_STATUS\r
191 EFIAPI\r
192 DxePcdSet32 (\r
193   IN UINTN             TokenNumber,\r
194   IN UINT32             Value\r
195   )\r
196 ;\r
197 \r
198 \r
199 EFI_STATUS\r
200 EFIAPI\r
201 DxePcdSet64 (\r
202   IN UINTN             TokenNumber,\r
203   IN UINT64            Value\r
204   )\r
205 ;\r
206 \r
207 \r
208 EFI_STATUS\r
209 EFIAPI\r
210 DxePcdSetPtr (\r
211   IN        UINTN             TokenNumber,\r
212   IN        UINTN             *SizeOfBuffer,\r
213   IN        VOID              *Buffer\r
214   )\r
215 ;\r
216 \r
217 \r
218 EFI_STATUS\r
219 EFIAPI\r
220 DxePcdSetBool (\r
221   IN UINTN             TokenNumber,\r
222   IN BOOLEAN           Value\r
223   )\r
224 ;\r
225 \r
226 \r
227 EFI_STATUS\r
228 EFIAPI\r
229 DxePcdSet8Ex (\r
230   IN CONST EFI_GUID        *Guid,\r
231   IN UINTN             TokenNumber,\r
232   IN UINT8             Value\r
233   )\r
234 ;\r
235 \r
236 \r
237 EFI_STATUS\r
238 EFIAPI\r
239 DxePcdSet16Ex (\r
240   IN CONST EFI_GUID        *Guid,\r
241   IN UINTN             TokenNumber,\r
242   IN UINT16            Value\r
243   )\r
244 ;\r
245 \r
246 \r
247 EFI_STATUS\r
248 EFIAPI\r
249 DxePcdSet32Ex (\r
250   IN CONST EFI_GUID        *Guid,\r
251   IN UINTN             TokenNumber,\r
252   IN UINT32             Value\r
253   )\r
254 ;\r
255 \r
256 \r
257 EFI_STATUS\r
258 EFIAPI\r
259 DxePcdSet64Ex (\r
260   IN CONST EFI_GUID        *Guid,\r
261   IN UINTN             TokenNumber,\r
262   IN UINT64            Value\r
263   )\r
264 ;\r
265 \r
266 \r
267 EFI_STATUS\r
268 EFIAPI\r
269 DxePcdSetPtrEx (\r
270   IN        CONST EFI_GUID    *Guid,\r
271   IN        UINTN             TokenNumber,\r
272   IN OUT    UINTN             *SizeOfBuffer,\r
273   IN        VOID              *Buffer\r
274   )\r
275 ;\r
276 \r
277 \r
278 EFI_STATUS\r
279 EFIAPI\r
280 DxePcdSetBoolEx (\r
281   IN CONST EFI_GUID    *Guid,\r
282   IN UINTN             TokenNumber,\r
283   IN BOOLEAN           Value\r
284   )\r
285 ;\r
286 \r
287 \r
288 \r
289 EFI_STATUS\r
290 EFIAPI\r
291 DxeRegisterCallBackOnSet (\r
292   IN  CONST EFI_GUID          *Guid, OPTIONAL\r
293   IN  UINTN                   TokenNumber,\r
294   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
295   )\r
296 ;\r
297 \r
298 \r
299 EFI_STATUS\r
300 EFIAPI\r
301 DxeUnRegisterCallBackOnSet (\r
302   IN  CONST EFI_GUID          *Guid, OPTIONAL\r
303   IN  UINTN                   TokenNumber,\r
304   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
305   )\r
306 ;\r
307 \r
308 \r
309 EFI_STATUS\r
310 EFIAPI\r
311 DxePcdGetNextToken (\r
312   IN CONST EFI_GUID               *Guid, OPTIONAL\r
313   IN OUT   UINTN                  *TokenNumber\r
314   )\r
315 ;\r
316 \r
317 \r
318 \r
319 EFI_STATUS\r
320 EFIAPI\r
321 DxePcdGetNextTokenSpace (\r
322   IN OUT CONST EFI_GUID               **Guid\r
323   )\r
324 ;\r
325 \r
326 \r
327 typedef struct {\r
328   LIST_ENTRY              Node;\r
329   PCD_PROTOCOL_CALLBACK   CallbackFn;\r
330 } CALLBACK_FN_ENTRY;\r
331 \r
332 #define CR_FNENTRY_FROM_LISTNODE(Record, Type, Field) _CR(Record, Type, Field)\r
333 \r
334 //\r
335 // Internal Functions\r
336 //\r
337 \r
338 EFI_STATUS\r
339 SetValueWorker (\r
340   IN UINTN                   TokenNumber,\r
341   IN VOID                    *Data,\r
342   IN UINTN                   Size\r
343   )\r
344 ;\r
345 \r
346 EFI_STATUS\r
347 SetWorker (\r
348   IN          UINTN                     TokenNumber,\r
349   IN          VOID                      *Data,\r
350   IN OUT      UINTN                     *Size,\r
351   IN          BOOLEAN                   PtrType\r
352   )\r
353 ;\r
354 \r
355 \r
356 EFI_STATUS\r
357 ExSetValueWorker (\r
358   IN          UINTN                ExTokenNumber,\r
359   IN          CONST EFI_GUID       *Guid,\r
360   IN          VOID                 *Data,\r
361   IN          UINTN                SetSize\r
362   )\r
363 ;\r
364 \r
365 \r
366 \r
367 EFI_STATUS\r
368 ExSetWorker (\r
369   IN      UINTN                ExTokenNumber,\r
370   IN      CONST EFI_GUID       *Guid,\r
371   IN      VOID                 *Data,\r
372   IN OUT  UINTN                *Size,\r
373   IN      BOOLEAN              PtrType\r
374   )\r
375 ;\r
376 \r
377 \r
378 VOID *\r
379 GetWorker (\r
380   IN UINTN             TokenNumber,\r
381   IN UINTN             GetSize\r
382   )\r
383 ;\r
384 \r
385 VOID *\r
386 ExGetWorker (\r
387   IN CONST EFI_GUID         *Guid,\r
388   IN UINTN                  ExTokenNumber,\r
389   IN UINTN                  GetSize\r
390   ) \r
391 ;\r
392 \r
393 UINT32\r
394 GetSkuEnabledTokenNumber (\r
395   UINT32 LocalTokenNumber,\r
396   UINTN  Size,\r
397   BOOLEAN IsPeiDb\r
398   ) \r
399 ;\r
400 \r
401 EFI_STATUS\r
402 GetHiiVariable (\r
403   IN  EFI_GUID      *VariableGuid,\r
404   IN  UINT16        *VariableName,\r
405   OUT UINT8          **VariableData,\r
406   OUT UINTN         *VariableSize\r
407   )\r
408 ;\r
409 \r
410 EFI_STATUS\r
411 SetHiiVariable (\r
412   IN  EFI_GUID     *VariableGuid,\r
413   IN  UINT16       *VariableName,\r
414   IN  CONST VOID   *Data,\r
415   IN  UINTN        DataSize,\r
416   IN  UINTN        Offset\r
417   )\r
418 ;\r
419 \r
420 EFI_STATUS\r
421 DxeRegisterCallBackWorker (\r
422   IN  UINTN                   TokenNumber,\r
423   IN  CONST EFI_GUID          *Guid, OPTIONAL\r
424   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
425 );\r
426 \r
427 EFI_STATUS\r
428 DxeUnRegisterCallBackWorker (\r
429   IN  UINTN                   TokenNumber,\r
430   IN  CONST EFI_GUID          *Guid, OPTIONAL\r
431   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
432 );\r
433 \r
434 VOID\r
435 BuildPcdDxeDataBase (\r
436   VOID\r
437 );\r
438 \r
439 \r
440 UINTN           \r
441 GetExPcdTokenNumber (\r
442   IN CONST EFI_GUID             *Guid,\r
443   IN UINT32                     ExTokenNumber\r
444   )\r
445 ;\r
446 \r
447 \r
448 \r
449 EFI_STATUS           \r
450 ExGetNextTokeNumber (\r
451   IN      CONST EFI_GUID    *Guid,\r
452   IN OUT  UINTN             *TokenNumber,\r
453   IN      EFI_GUID          *GuidTable,\r
454   IN      UINTN             SizeOfGuidTable,\r
455   IN      DYNAMICEX_MAPPING *ExMapTable,\r
456   IN      UINTN             SizeOfExMapTable\r
457   )\r
458 ;\r
459 \r
460 \r
461 UINTN\r
462 GetPtrTypeSize (\r
463   IN    UINTN             LocalTokenNumberTableIdx,\r
464   OUT   UINTN             *MaxSize\r
465   )\r
466 ;\r
467 \r
468 \r
469 \r
470 BOOLEAN\r
471 SetPtrTypeSize (\r
472   IN          UINTN             LocalTokenNumberTableIdx,\r
473   IN    OUT   UINTN             *CurrentSize\r
474   )\r
475 ;\r
476 \r
477 extern EFI_GUID gPcdDataBaseHobGuid;\r
478 \r
479 extern PCD_DATABASE * mPcdDatabase;\r
480 \r
481 extern DXE_PCD_DATABASE_INIT gDXEPcdDbInit;\r
482 \r
483 extern EFI_LOCK mPcdDatabaseLock;\r
484 \r
485 #endif\r