2 Private functions used by PCD DXE driver.
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 Module Name: Service.h
25 // The following definition will be generated by build tool
31 #define PCD_TYPE_SHIFT 24
34 #define PCD_TYPE_DATA (0x00 << PCD_TYPE_SHIFT)
35 #define PCD_TYPE_HII (0x80 << PCD_TYPE_SHIFT)
36 #define PCD_TYPE_VPD (0x40 << PCD_TYPE_SHIFT)
37 #define PCD_TYPE_SKU_ENABLED (0x20 << PCD_TYPE_SHIFT)
40 #define PCD_DATABASE_OFFSET_MASK (~(PCD_TYPE_HII | PCD_TYPE_VPD | PCD_TYPE_SKU_ENABLED))
44 UINT32 LocalTokenNumber
; // PCD Number of this particular platform build
45 UINT16 ExGuidIndex
; // Index of GuidTable
50 UINT32 SkuDataStartOffset
; //We have to use offsetof MACRO as we don't know padding done by compiler
51 UINT32 SkuIdTableOffset
; //Offset from the PCD_DB
56 UINT16 GuidTableIndex
; // Offset in Guid Table in units of GUID.
57 UINT16 StringIndex
; // Offset in String Table in units of UINT16.
58 UINT16 Offset
; // Offset in Variable
67 UINT32 LocalTokenNumber
;
72 #define offsetof(s,m) (UINT32)&(((s *)0)->m)
77 // C Structure generate for PEI PCD Database
79 #define PEI_EXMAPPING_TABLE_SIZE 1
80 #define PEI_GUID_TABLE_SIZE 1
81 #define PEI_LOCAL_TOKEN_NUMBER 1
82 #define PEI_EXTOKEN_NUMBER 1
83 #define PEI_STRING_TABLE_SIZE 2
84 #define PEI_SKUID_TABLE_SIZE 3
85 #define PEI_SIZE_TABLE_SIZE 1
87 #define PEI_DATABASE_EMPTRY FALSE
88 #define PEI_DYNAMICEX_MAPPING_EMPTY FALSE
89 #define PEI_GUID_TABLE_EMPTY FALSE
90 #define PEI_STRINGTABLE_EMPTY FALSE
91 #define PEI_SIZETABLE_EMPTY FALSE
92 #define PEI_SKUID_TABLE_EMPTY FALSE
97 DYNAMICEX_MAPPING ExMapTable
[PEI_EXMAPPING_TABLE_SIZE
];
98 EFI_GUID GuidTable
[PEI_GUID_TABLE_SIZE
];
100 UINT32 LocalTokenNumberTable
[PEI_LOCAL_TOKEN_NUMBER
];
103 UINT16 StringTable
[PEI_STRING_TABLE_SIZE
];
104 UINT16 SizeTable
[PEI_LOCAL_TOKEN_NUMBER
];
106 SKU_ID SkuIdTable
[PEI_SKUID_TABLE_SIZE
];
110 } PEI_PCD_DATABASE_INIT
;
114 } PEI_PCD_DATABASE_UNINIT
;
117 // Following code should be generated for PCD DXE driver
120 #define DXE_EXMAPPING_TABLE_SIZE 1
121 #define DXE_GUID_TABLE_SIZE 1
122 #define DXE_TOKEN_NUMBER 1
123 #define DXE_EXTOKEN_NUMBER 1
124 #define DXE_STRING_TABLE_SIZE 2
125 #define DXE_SKUID_TABLE_SIZE 3
126 #define DXE_SIZE_TABLE_SIZE 1
128 #define DXE_DATABASE_EMPTRY FALSE
129 #define DXE_DYNAMICEX_MAPPING_EMPTY FALSE
130 #define DXE_GUID_TABLE_EMPTY FALSE
131 #define DXE_STRINGTABLE_EMPTY FALSE
132 #define DXE_SIZETABLE_EMPTY FALSE
133 #define DXE_SKUID_TABLE_EMPTY FALSE
136 DYNAMICEX_MAPPING ExMapTable
[DXE_EXMAPPING_TABLE_SIZE
];
137 EFI_GUID GuidTable
[DXE_GUID_TABLE_SIZE
];
139 UINT32 LocalTokenNumberTable
[DXE_TOKEN_NUMBER
];
142 UINT16 StringTable
[DXE_STRING_TABLE_SIZE
];
143 UINT16 SizeTable
[DXE_TOKEN_NUMBER
];
145 SKU_ID SkuIdTable
[DXE_SKUID_TABLE_SIZE
];
147 } DXE_PCD_DATABASE_INIT
;
151 } DXE_PCD_DATABASE_UNINIT
;
154 #define DXE_PCD_DB_INIT_VALUE \
157 { /* ExTokenNumber */ 0x00000001, /* LocalTokenNumberIndex */ 0, /* ExGuidIndex */ 0} \
162 { 0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD }} \
165 /* LocalTokenNumberTable */ \
182 /*MaxSku*/ 2, /*SkuId*/ 100, /*SkuId*/200 \
187 // End of Autogen Code
193 PEI_PCD_DATABASE_INIT Init;
194 PEI_PCD_DATABASE_UNINIT Uninit;
200 DXE_PCD_DATABASE_INIT Init;
201 DXE_PCD_DATABASE_UNINIT Uninit;
206 PEI_PCD_DATABASE PeiDb;
207 DXE_PCD_DATABASE DxeDb;
213 // Internal Functions
227 IN UINT32 ExTokenNumber
,
228 IN CONST EFI_GUID
*Guid
,
244 IN CONST EFI_GUID
*Guid
,
245 IN UINTN ExTokenNumber
,
251 GetSkuEnabledTokenNumber (
252 UINT32 LocalTokenNumber
,
260 IN EFI_GUID
*VariableGuid
,
261 IN UINT16
*VariableName
,
262 OUT VOID
** VariableData
,
263 OUT UINTN
*VariableSize
268 DxeRegisterCallBackWorker (
269 IN UINTN TokenNumber
,
270 IN CONST EFI_GUID
*Guid
, OPTIONAL
271 IN PCD_PROTOCOL_CALLBACK CallBackFunction
,
276 DxeGetNextTokenWorker (
278 IN CONST EFI_GUID
*Guid OPTIONAL
282 BuildPcdDxeDataBase (
290 UINT32 LocalTokenNumberAlias
;
292 } EX_PCD_ENTRY_ATTRIBUTE
;
295 GetExPcdTokenAttributes (
296 IN CONST EFI_GUID
*Guid
,
297 IN UINT32 ExTokenNumber
,
298 OUT EX_PCD_ENTRY_ATTRIBUTE
*ExAttr
303 // Protocol Interface function declaration.
372 IN CONST EFI_GUID
*Guid
,
381 IN CONST EFI_GUID
*Guid
,
390 IN CONST EFI_GUID
*Guid
,
400 IN CONST EFI_GUID
*Guid
,
410 IN CONST EFI_GUID
*Guid
,
419 IN CONST EFI_GUID
*Guid
,
428 IN CONST EFI_GUID
*Guid
,
437 IN UINTN TokenNumber
,
446 IN UINTN TokenNumber
,
455 IN UINTN TokenNumber
,
464 IN UINTN TokenNumber
,
473 IN UINTN TokenNumber
,
482 IN UINTN TokenNumber
,
491 IN CONST EFI_GUID
*Guid
,
492 IN UINTN TokenNumber
,
501 IN CONST EFI_GUID
*Guid
,
502 IN UINTN TokenNumber
,
511 IN CONST EFI_GUID
*Guid
,
512 IN UINTN TokenNumber
,
521 IN CONST EFI_GUID
*Guid
,
522 IN UINTN TokenNumber
,
531 IN CONST EFI_GUID
*Guid
,
532 IN UINTN TokenNumber
,
541 IN CONST EFI_GUID
*Guid
,
542 IN UINTN TokenNumber
,
551 PcdRegisterCallBackOnSet (
552 IN UINTN TokenNumber
,
553 IN CONST EFI_GUID
*Guid
, OPTIONAL
554 IN PCD_PROTOCOL_CALLBACK CallBackFunction
561 PcdUnRegisterCallBackOnSet (
562 IN UINTN TokenNumber
,
563 IN CONST EFI_GUID
*Guid
, OPTIONAL
564 IN PCD_PROTOCOL_CALLBACK CallBackFunction
572 IN CONST EFI_GUID
*Guid
, OPTIONAL
573 IN OUT UINTN
*TokenNumber
578 SetWorkerByLocalTokenNumber (
579 UINT32 LocalTokenNumber
,
587 extern EFI_GUID gPcdDataBaseHobGuid
;
589 extern PCD_DATABASE
* gPcdDatabase
;
591 extern DXE_PCD_DATABASE_INIT gDXEPcdDbInit
;