#ifndef _SERVICE_H\r
#define _SERVICE_H\r
\r
-VOID \r
-DxeGetPcdEntryWorker (\r
- IN UINTN Token,\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
- IN PCD_DATA_TYPE Type,\r
- OUT VOID *Data\r
- );\r
-\r
-EFI_STATUS \r
-DxeSetPcdEntryWorker (\r
- IN UINTN Token,\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
- IN PCD_DATA_TYPE Type,\r
- IN CONST VOID *Data\r
- );\r
+//\r
+// Please make sure the PCD Serivce PEIM Version is consistent with\r
+// the version of PCD Database generation tool\r
+//\r
+#define PCD_DXE_SERVICE_DRIVER_VERSION 1\r
\r
-UINTN\r
-DxeGetPcdEntrySizeWorker (\r
- IN UINTN Token,\r
- IN CONST EFI_GUID *Guid OPTIONAL\r
- );\r
+//\r
+// PCD_DXE_DATABASE_GENTOOL_VERSION is defined in Autogen.h\r
+// and generated by PCD Database generation tool.\r
+//\r
+#if (PCD_DXE_SERVICE_PEIM_VERSION != PCD_DXE_DATABASE_GENTOOL_VERSION)\r
+ #error "Please make sure the version of PCD Service DXE Driver and PCD DXE Database Generation Tool matches"\r
+#endif\r
+\r
+\r
+typedef struct {\r
+ LIST_ENTRY Node;\r
+ PCD_PROTOCOL_CALLBACK CallbackFn;\r
+} CALLBACK_FN_ENTRY;\r
+\r
+#define CR_FNENTRY_FROM_LISTNODE(Record, Type, Field) _CR(Record, Type, Field)\r
+\r
+//\r
+// Internal Functions\r
+//\r
\r
EFI_STATUS\r
-DxeRegisterCallBackWorker (\r
- IN UINTN TokenNumber,\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
- IN PCD_PROTOCOL_CALLBACK CallBackFunction,\r
- IN BOOLEAN Reigster\r
-);\r
+SetWorker (\r
+ IN UINTN TokenNumber,\r
+ IN VOID *Data,\r
+ IN UINTN Size,\r
+ IN BOOLEAN PtrType\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+ExSetWorker (\r
+ IN UINTN ExTokenNumber,\r
+ IN CONST EFI_GUID *Guid,\r
+ VOID *Data,\r
+ UINTN Size,\r
+ BOOLEAN PtrType\r
+ )\r
+;\r
+\r
+\r
+VOID *\r
+GetWorker (\r
+ UINTN TokenNumber,\r
+ UINTN GetSize\r
+ )\r
+;\r
+\r
+VOID *\r
+ExGetWorker (\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber,\r
+ IN UINTN GetSize\r
+ ) \r
+;\r
+\r
+UINT32\r
+GetSkuEnabledTokenNumber (\r
+ UINT32 LocalTokenNumber,\r
+ UINTN Size,\r
+ BOOLEAN IsPeiDb\r
+ ) \r
+;\r
+\r
+EFI_STATUS\r
+GetHiiVariable (\r
+ IN EFI_GUID *VariableGuid,\r
+ IN UINT16 *VariableName,\r
+ OUT VOID **VariableData,\r
+ OUT UINTN *VariableSize\r
+ )\r
+;\r
\r
EFI_STATUS\r
-DxeSetSku (\r
- UINTN Id\r
+DxeRegisterCallBackWorker (\r
+ IN UINTN TokenNumber,\r
+ IN CONST EFI_GUID *Guid, OPTIONAL\r
+ IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
);\r
\r
EFI_STATUS\r
-DxeGetNextTokenWorker (\r
- IN OUT UINTN *Token,\r
- IN CONST EFI_GUID *Guid OPTIONAL\r
- );\r
+DxeUnRegisterCallBackWorker (\r
+ IN UINTN TokenNumber,\r
+ IN CONST EFI_GUID *Guid, OPTIONAL\r
+ IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
+);\r
\r
VOID\r
-InitPcdDxeDataBase (\r
+BuildPcdDxeDataBase (\r
VOID\r
);\r
\r
+\r
+UINTN \r
+GetExPcdTokenNumber (\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINT32 ExTokenNumber\r
+ )\r
+;\r
//\r
// Protocol Interface function declaration.\r
//\r
-EFI_STATUS\r
+VOID\r
EFIAPI\r
DxePcdSetSku (\r
IN UINTN SkuId\r
UINT8\r
EFIAPI\r
DxePcdGet8 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
UINT16\r
EFIAPI\r
DxePcdGet16 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
UINT32\r
EFIAPI\r
DxePcdGet32 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
UINT64\r
EFIAPI\r
DxePcdGet64 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
VOID *\r
EFIAPI\r
DxePcdGetPtr (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
BOOLEAN\r
EFIAPI\r
DxePcdGetBool (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
UINTN\r
EFIAPI\r
DxePcdGetSize (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
EFIAPI\r
DxePcdGet8Ex (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
EFIAPI\r
DxePcdGet16Ex (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
EFIAPI\r
DxePcdGet32Ex (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
EFIAPI\r
DxePcdGet64Ex (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
EFIAPI\r
DxePcdGetPtrEx (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
EFIAPI\r
DxePcdGetBoolEx (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
EFIAPI\r
DxePcdGetSizeEx (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
;\r
\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet8 (\r
- IN UINTN TokenNumber,\r
+ IN UINTN TokenNumber,\r
IN UINT8 Value\r
)\r
;\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet16 (\r
- IN UINTN TokenNumber,\r
+ IN UINTN TokenNumber,\r
IN UINT16 Value\r
)\r
;\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet32 (\r
- IN UINTN TokenNumber,\r
+ IN UINTN TokenNumber,\r
IN UINT32 Value\r
)\r
;\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet64 (\r
- IN UINTN TokenNumber,\r
+ IN UINTN TokenNumber,\r
IN UINT64 Value\r
)\r
;\r
EFI_STATUS\r
EFIAPI\r
DxePcdSetPtr (\r
- IN UINTN TokenNumber,\r
- IN CONST VOID *Value\r
+ IN UINTN TokenNumber,\r
+ IN UINTN SizeOfBuffer,\r
+ IN VOID *Buffer\r
)\r
;\r
\r
EFI_STATUS\r
EFIAPI\r
DxePcdSetBool (\r
- IN UINTN TokenNumber,\r
+ IN UINTN TokenNumber,\r
IN BOOLEAN Value\r
)\r
;\r
EFIAPI\r
DxePcdSet8Ex (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber,\r
+ IN UINTN TokenNumber,\r
IN UINT8 Value\r
)\r
;\r
EFIAPI\r
DxePcdSet16Ex (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber,\r
+ IN UINTN TokenNumber,\r
IN UINT16 Value\r
)\r
;\r
EFIAPI\r
DxePcdSet32Ex (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber,\r
+ IN UINTN TokenNumber,\r
IN UINT32 Value\r
)\r
;\r
EFIAPI\r
DxePcdSet64Ex (\r
IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber,\r
+ IN UINTN TokenNumber,\r
IN UINT64 Value\r
)\r
;\r
EFI_STATUS\r
EFIAPI\r
DxePcdSetPtrEx (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber,\r
- IN CONST VOID *Value\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN TokenNumber,\r
+ IN UINTN SizeOfBuffer,\r
+ IN VOID *Buffer\r
)\r
;\r
\r
EFI_STATUS\r
EFIAPI\r
DxePcdSetBoolEx (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN TokenNumber,\r
IN BOOLEAN Value\r
)\r
;\r
\r
EFI_STATUS\r
EFIAPI\r
-PcdRegisterCallBackOnSet (\r
- IN UINTN TokenNumber,\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
+DxeRegisterCallBackOnSet (\r
+ IN UINTN TokenNumber,\r
+ IN CONST EFI_GUID *Guid, OPTIONAL\r
IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
)\r
;\r
\r
EFI_STATUS\r
EFIAPI\r
-PcdUnRegisterCallBackOnSet (\r
- IN UINTN TokenNumber,\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
+DxeUnRegisterCallBackOnSet (\r
+ IN UINTN TokenNumber,\r
+ IN CONST EFI_GUID *Guid, OPTIONAL\r
IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
)\r
;\r
EFIAPI\r
DxePcdGetNextToken (\r
IN CONST EFI_GUID *Guid, OPTIONAL\r
- IN OUT UINTN *TokenNumber\r
+ IN OUT UINTN *TokenNumber\r
)\r
;\r
\r
+UINTN \r
+ExGetNextTokeNumber (\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN TokenNumber,\r
+ IN EFI_GUID *GuidTable,\r
+ IN UINTN SizeOfGuidTable,\r
+ IN DYNAMICEX_MAPPING *ExMapTable,\r
+ IN UINTN SizeOfExMapTable\r
+ )\r
+;\r
\r
-/*\r
- This DXE_PCD_DATABASE layout. The difference of DXE_PCD_DATABASE\r
- and PEI_PCD_DATABASE is as follows:\r
-\r
- 1) No PCD_CALL_BACK_TABLE; DXE_PCD_DATABASE maintain a LinkList for the\r
- callback function registered.\r
-\r
- ---------------------------\r
- | LIST_ENTRY GuidSpaceHead|\r
- ---------------------------\r
- | PCD_DATABASE_HEADER |\r
- ---------------------------\r
- | GUID_TABLE | Aligned on GUID (128 bits)\r
- ---------------------------\r
- | PCD_INDEX_TABLE | Aligned on PCD_INDEX (see PCD_INDEX's declaration)\r
- ---------------------------\r
- | IMAGE_STRING_TABLE | Aligned on 16 Bits\r
- ---------------------------\r
- | IMAGE_PCD_INDEX | Unaligned\r
- ---------------------------\r
- | Data Defaults | Unaligned\r
- ---------------------------\r
- | Data Buffer |\r
- | for entries without |\r
- | defaults |\r
- ---------------------------\r
-\r
-*/\r
-\r
-\r
-typedef struct {\r
- LIST_ENTRY ListNode;\r
- LIST_ENTRY TokenSpaceHead;\r
- CONST EFI_GUID *GuidSpace;\r
-} PCD_GUID_SPACE;\r
-\r
-typedef struct {\r
- LIST_ENTRY ListNode;\r
- LIST_ENTRY CallbackListHead;\r
- UINTN TokeNumber;\r
-} PCD_TOKEN_SPACE;\r
-\r
-typedef struct {\r
- LIST_ENTRY ListNode;\r
- PCD_PROTOCOL_CALLBACK CallbackFunction;\r
-} PCD_CALLBACK_ENTRY;\r
-\r
-#define PCD_GUID_SPACE_FROM_LISTNODE(a) \\r
- _CR(a, PCD_GUID_SPACE, ListNode)\r
+extern EFI_GUID gPcdDataBaseHobGuid;\r
\r
-#define PCD_TOKEN_SPACE_FROM_LISTNODE(a) \\r
- _CR(a, PCD_TOKEN_SPACE, ListNode)\r
+extern PCD_DATABASE * mPcdDatabase;\r
\r
-#define PCD_CALLBACK_ENTRY_FROM_LISTNODE(a) \\r
- _CR(a, PCD_CALLBACK_ENTRY, ListNode)\r
+extern DXE_PCD_DATABASE_INIT gDXEPcdDbInit;\r
\r
#endif\r