/** @file\r
Private functions used by PCD DXE driver.\r
\r
-Copyright (c) 2006, Intel Corporation \r
+Copyright (c) 2006 - 2007, Intel Corporation \r
All rights reserved. This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
#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
-UINTN\r
-DxeGetPcdEntrySizeWorker (\r
- IN UINTN Token,\r
- IN CONST EFI_GUID *Guid OPTIONAL\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
-\r
-EFI_STATUS\r
-DxeSetSku (\r
- UINTN Id\r
-);\r
-\r
-EFI_STATUS\r
-DxeGetNextTokenWorker (\r
- IN OUT UINTN *Token,\r
- IN CONST EFI_GUID *Guid OPTIONAL\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_SERVICE_DXE_DRIVER_VERSION 2\r
\r
-VOID\r
-InitPcdDxeDataBase (\r
- VOID\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_SERVICE_DXE_DRIVER_VERSION != PCD_DXE_SERVICE_DRIVER_AUTOGEN_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
// 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 OUT 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 CONST EFI_GUID *Guid, OPTIONAL\r
+ IN UINTN TokenNumber,\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 CONST EFI_GUID *Guid, OPTIONAL\r
+ IN UINTN TokenNumber,\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
+\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DxePcdGetNextTokenSpace (\r
+ IN OUT CONST EFI_GUID **Guid\r
)\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
+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
+SetValueWorker (\r
+ IN UINTN TokenNumber,\r
+ IN VOID *Data,\r
+ IN UINTN Size\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+SetWorker (\r
+ IN UINTN TokenNumber,\r
+ IN VOID *Data,\r
+ IN OUT UINTN *Size,\r
+ IN BOOLEAN PtrType\r
+ )\r
+;\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
+EFI_STATUS\r
+ExSetValueWorker (\r
+ IN UINTN ExTokenNumber,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Data,\r
+ IN UINTN SetSize\r
+ )\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
+EFI_STATUS\r
+ExSetWorker (\r
+ IN UINTN ExTokenNumber,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Data,\r
+ IN OUT UINTN *Size,\r
+ IN BOOLEAN PtrType\r
+ )\r
+;\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
+VOID *\r
+GetWorker (\r
+ IN UINTN TokenNumber,\r
+ IN 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 UINT8 **VariableData,\r
+ OUT UINTN *VariableSize\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+SetHiiVariable (\r
+ IN EFI_GUID *VariableGuid,\r
+ IN UINT16 *VariableName,\r
+ IN CONST VOID *Data,\r
+ IN UINTN DataSize,\r
+ IN UINTN Offset\r
+ )\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
+);\r
+\r
+EFI_STATUS\r
+DxeUnRegisterCallBackWorker (\r
+ IN UINTN TokenNumber,\r
+ IN CONST EFI_GUID *Guid, OPTIONAL\r
+ IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
+);\r
+\r
+VOID\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
+\r
+\r
+EFI_STATUS \r
+ExGetNextTokeNumber (\r
+ IN CONST EFI_GUID *Guid,\r
+ IN OUT 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
+UINTN\r
+GetPtrTypeSize (\r
+ IN UINTN LocalTokenNumberTableIdx,\r
+ OUT UINTN *MaxSize\r
+ )\r
+;\r
+\r
+\r
+\r
+BOOLEAN\r
+SetPtrTypeSize (\r
+ IN UINTN LocalTokenNumberTableIdx,\r
+ IN OUT UINTN *CurrentSize\r
+ )\r
+;\r
+\r
+extern EFI_GUID gPcdDataBaseHobGuid;\r
\r
-#define PCD_GUID_SPACE_FROM_LISTNODE(a) \\r
- _CR(a, PCD_GUID_SPACE, ListNode)\r
+extern PCD_DATABASE * mPcdDatabase;\r
\r
-#define PCD_TOKEN_SPACE_FROM_LISTNODE(a) \\r
- _CR(a, PCD_TOKEN_SPACE, ListNode)\r
+extern DXE_PCD_DATABASE_INIT gDXEPcdDbInit;\r
\r
-#define PCD_CALLBACK_ENTRY_FROM_LISTNODE(a) \\r
- _CR(a, PCD_CALLBACK_ENTRY, ListNode)\r
+extern EFI_LOCK mPcdDatabaseLock;\r
\r
#endif\r