]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Dxe/Service.h
Refine some internal functions of PCD Driver.
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Dxe / Service.h
index 86e3dfdee31ea37bc1b8006f8daa3eb563e57c4f..af9fc420a3a09e74d2f8013ff2120d819fbb224e 100644 (file)
@@ -18,59 +18,117 @@ Module Name: Service.h
 #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 PCD_TOKEN_NUMBER          TokenNumber,\r
+  IN VOID                      *Data,\r
+  IN UINTN                     Size,\r
+  IN BOOLEAN                   PtrType\r
+  )\r
+;\r
+\r
+EFI_STATUS\r
+ExSetWorker (\r
+  IN PCD_TOKEN_NUMBER     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
+  PCD_TOKEN_NUMBER  TokenNumber,\r
+  UINTN             GetSize\r
+  )\r
+;\r
+\r
+VOID *\r
+ExGetWorker (\r
+  IN CONST EFI_GUID         *Guid,\r
+  IN PCD_TOKEN_NUMBER       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  PCD_TOKEN_NUMBER        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  PCD_TOKEN_NUMBER        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
+PCD_TOKEN_NUMBER\r
+GetExPcdTokenNumber (\r
+  IN CONST EFI_GUID             *Guid,\r
+  IN PCD_TOKEN_NUMBER           ExTokenNumber\r
+  )\r
+;\r
 //\r
 // Protocol Interface function declaration.\r
 //\r
-EFI_STATUS\r
+VOID\r
 EFIAPI\r
 DxePcdSetSku (\r
-  IN  UINTN                  SkuId\r
+  IN  SKU_ID                  SkuId\r
   )\r
 ;\r
 \r
@@ -78,7 +136,7 @@ DxePcdSetSku (
 UINT8\r
 EFIAPI\r
 DxePcdGet8 (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -86,7 +144,7 @@ DxePcdGet8 (
 UINT16\r
 EFIAPI\r
 DxePcdGet16 (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -94,7 +152,7 @@ DxePcdGet16 (
 UINT32\r
 EFIAPI\r
 DxePcdGet32 (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -102,7 +160,7 @@ DxePcdGet32 (
 UINT64\r
 EFIAPI\r
 DxePcdGet64 (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -110,7 +168,7 @@ DxePcdGet64 (
 VOID *\r
 EFIAPI\r
 DxePcdGetPtr (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -118,7 +176,7 @@ DxePcdGetPtr (
 BOOLEAN\r
 EFIAPI\r
 DxePcdGetBool (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -126,7 +184,7 @@ DxePcdGetBool (
 UINTN\r
 EFIAPI\r
 DxePcdGetSize (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -135,7 +193,7 @@ UINT8
 EFIAPI\r
 DxePcdGet8Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -144,7 +202,7 @@ UINT16
 EFIAPI\r
 DxePcdGet16Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -153,7 +211,7 @@ UINT32
 EFIAPI\r
 DxePcdGet32Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -163,7 +221,7 @@ UINT64
 EFIAPI\r
 DxePcdGet64Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -173,7 +231,7 @@ VOID *
 EFIAPI\r
 DxePcdGetPtrEx (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -182,7 +240,7 @@ BOOLEAN
 EFIAPI\r
 DxePcdGetBoolEx (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -191,7 +249,7 @@ UINTN
 EFIAPI\r
 DxePcdGetSizeEx (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -199,7 +257,7 @@ DxePcdGetSizeEx (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSet8 (\r
-  IN UINTN  TokenNumber,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN UINT8             Value\r
   )\r
 ;\r
@@ -208,7 +266,7 @@ DxePcdSet8 (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSet16 (\r
-  IN UINTN  TokenNumber,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN UINT16             Value\r
   )\r
 ;\r
@@ -217,7 +275,7 @@ DxePcdSet16 (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSet32 (\r
-  IN UINTN  TokenNumber,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN UINT32             Value\r
   )\r
 ;\r
@@ -226,7 +284,7 @@ DxePcdSet32 (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSet64 (\r
-  IN UINTN  TokenNumber,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN UINT64            Value\r
   )\r
 ;\r
@@ -235,8 +293,9 @@ DxePcdSet64 (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSetPtr (\r
-  IN UINTN  TokenNumber,\r
-  IN CONST VOID        *Value\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             SizeOfBuffer,\r
+  IN VOID              *Buffer\r
   )\r
 ;\r
 \r
@@ -244,7 +303,7 @@ DxePcdSetPtr (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSetBool (\r
-  IN UINTN  TokenNumber,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN BOOLEAN           Value\r
   )\r
 ;\r
@@ -254,7 +313,7 @@ EFI_STATUS
 EFIAPI\r
 DxePcdSet8Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN UINT8             Value\r
   )\r
 ;\r
@@ -264,7 +323,7 @@ EFI_STATUS
 EFIAPI\r
 DxePcdSet16Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN UINT16            Value\r
   )\r
 ;\r
@@ -274,7 +333,7 @@ EFI_STATUS
 EFIAPI\r
 DxePcdSet32Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN UINT32             Value\r
   )\r
 ;\r
@@ -284,7 +343,7 @@ EFI_STATUS
 EFIAPI\r
 DxePcdSet64Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN UINT64            Value\r
   )\r
 ;\r
@@ -293,9 +352,10 @@ DxePcdSet64Ex (
 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 PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             SizeOfBuffer,\r
+  IN VOID              *Buffer\r
   )\r
 ;\r
 \r
@@ -303,8 +363,8 @@ DxePcdSetPtrEx (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSetBoolEx (\r
-  IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber,\r
+  IN CONST EFI_GUID    *Guid,\r
+  IN PCD_TOKEN_NUMBER  TokenNumber,\r
   IN BOOLEAN           Value\r
   )\r
 ;\r
@@ -313,9 +373,9 @@ DxePcdSetBoolEx (
 \r
 EFI_STATUS\r
 EFIAPI\r
-PcdRegisterCallBackOnSet (\r
-  IN  UINTN        TokenNumber,\r
-  IN  CONST EFI_GUID              *Guid, OPTIONAL\r
+DxeRegisterCallBackOnSet (\r
+  IN  PCD_TOKEN_NUMBER        TokenNumber,\r
+  IN  CONST EFI_GUID          *Guid, OPTIONAL\r
   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
   )\r
 ;\r
@@ -323,9 +383,9 @@ PcdRegisterCallBackOnSet (
 \r
 EFI_STATUS\r
 EFIAPI\r
-PcdUnRegisterCallBackOnSet (\r
-  IN  UINTN        TokenNumber,\r
-  IN  CONST EFI_GUID              *Guid, OPTIONAL\r
+DxeUnRegisterCallBackOnSet (\r
+  IN  PCD_TOKEN_NUMBER        TokenNumber,\r
+  IN  CONST EFI_GUID          *Guid, OPTIONAL\r
   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
   )\r
 ;\r
@@ -335,65 +395,25 @@ EFI_STATUS
 EFIAPI\r
 DxePcdGetNextToken (\r
   IN CONST EFI_GUID               *Guid, OPTIONAL\r
-  IN OUT  UINTN    *TokenNumber\r
+  IN OUT   PCD_TOKEN_NUMBER       *TokenNumber\r
   )\r
 ;\r
 \r
+PCD_TOKEN_NUMBER\r
+ExGetNextTokeNumber (\r
+  IN CONST EFI_GUID    *Guid,\r
+  IN PCD_TOKEN_NUMBER  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