]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Dxe/Service.h
Add in support for GetNextTokenNumber API.
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Dxe / Service.h
index 86e3dfdee31ea37bc1b8006f8daa3eb563e57c4f..ec51ebbec8671e9c833f64387ce12d188f0a329b 100644 (file)
@@ -18,59 +18,125 @@ 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
+  )\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
+typedef struct {\r
+  UINTN   TokenNumber;\r
+  UINTN   Size;\r
+  UINT32  LocalTokenNumberAlias;\r
+  BOOLEAN IsPeiDb;\r
+} EX_PCD_ENTRY_ATTRIBUTE;\r
+\r
+VOID\r
+GetExPcdTokenAttributes (\r
+  IN CONST EFI_GUID             *Guid,\r
+  IN PCD_TOKEN_NUMBER           ExTokenNumber,\r
+  OUT EX_PCD_ENTRY_ATTRIBUTE    *ExAttr\r
+  )\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 +144,7 @@ DxePcdSetSku (
 UINT8\r
 EFIAPI\r
 DxePcdGet8 (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -86,7 +152,7 @@ DxePcdGet8 (
 UINT16\r
 EFIAPI\r
 DxePcdGet16 (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -94,7 +160,7 @@ DxePcdGet16 (
 UINT32\r
 EFIAPI\r
 DxePcdGet32 (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -102,7 +168,7 @@ DxePcdGet32 (
 UINT64\r
 EFIAPI\r
 DxePcdGet64 (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -110,7 +176,7 @@ DxePcdGet64 (
 VOID *\r
 EFIAPI\r
 DxePcdGetPtr (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -118,7 +184,7 @@ DxePcdGetPtr (
 BOOLEAN\r
 EFIAPI\r
 DxePcdGetBool (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -126,7 +192,7 @@ DxePcdGetBool (
 UINTN\r
 EFIAPI\r
 DxePcdGetSize (\r
-  IN UINTN  TokenNumber\r
+  IN PCD_TOKEN_NUMBER  TokenNumber\r
   )\r
 ;\r
 \r
@@ -135,7 +201,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 +210,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 +219,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 +229,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 +239,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 +248,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 +257,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 +265,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 +274,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 +283,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 +292,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 +301,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 +311,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 +321,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 +331,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 +341,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 +351,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 +360,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 +371,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 +381,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 +391,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 +403,35 @@ 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
+EFI_STATUS\r
+SetWorkerByLocalTokenNumber (\r
+  UINT32        LocalTokenNumber,\r
+  VOID          *Data,\r
+  UINTN         Size,\r
+  BOOLEAN       PtrType,\r
+  BOOLEAN       IsPeiDb\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
+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
-#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