]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Dxe/Service.h
Corrected a small bugs:
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Dxe / Service.h
index 86e3dfdee31ea37bc1b8006f8daa3eb563e57c4f..8796affeb2ec73e22aa131c55b10652de4de45ea 100644 (file)
@@ -1,7 +1,7 @@
 /** @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
@@ -18,56 +18,24 @@ 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
-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
@@ -78,7 +46,7 @@ DxePcdSetSku (
 UINT8\r
 EFIAPI\r
 DxePcdGet8 (\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -86,7 +54,7 @@ DxePcdGet8 (
 UINT16\r
 EFIAPI\r
 DxePcdGet16 (\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -94,7 +62,7 @@ DxePcdGet16 (
 UINT32\r
 EFIAPI\r
 DxePcdGet32 (\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -102,7 +70,7 @@ DxePcdGet32 (
 UINT64\r
 EFIAPI\r
 DxePcdGet64 (\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -110,7 +78,7 @@ DxePcdGet64 (
 VOID *\r
 EFIAPI\r
 DxePcdGetPtr (\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -118,7 +86,7 @@ DxePcdGetPtr (
 BOOLEAN\r
 EFIAPI\r
 DxePcdGetBool (\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -126,7 +94,7 @@ DxePcdGetBool (
 UINTN\r
 EFIAPI\r
 DxePcdGetSize (\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -135,7 +103,7 @@ UINT8
 EFIAPI\r
 DxePcdGet8Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -144,7 +112,7 @@ UINT16
 EFIAPI\r
 DxePcdGet16Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -153,7 +121,7 @@ UINT32
 EFIAPI\r
 DxePcdGet32Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -163,7 +131,7 @@ UINT64
 EFIAPI\r
 DxePcdGet64Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -173,7 +141,7 @@ VOID *
 EFIAPI\r
 DxePcdGetPtrEx (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -182,7 +150,7 @@ BOOLEAN
 EFIAPI\r
 DxePcdGetBoolEx (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -191,7 +159,7 @@ UINTN
 EFIAPI\r
 DxePcdGetSizeEx (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber\r
+  IN UINTN             TokenNumber\r
   )\r
 ;\r
 \r
@@ -199,7 +167,7 @@ DxePcdGetSizeEx (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSet8 (\r
-  IN UINTN  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT8             Value\r
   )\r
 ;\r
@@ -208,7 +176,7 @@ DxePcdSet8 (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSet16 (\r
-  IN UINTN  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT16             Value\r
   )\r
 ;\r
@@ -217,7 +185,7 @@ DxePcdSet16 (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSet32 (\r
-  IN UINTN  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT32             Value\r
   )\r
 ;\r
@@ -226,7 +194,7 @@ DxePcdSet32 (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSet64 (\r
-  IN UINTN  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT64            Value\r
   )\r
 ;\r
@@ -235,8 +203,9 @@ DxePcdSet64 (
 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
@@ -244,7 +213,7 @@ DxePcdSetPtr (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSetBool (\r
-  IN UINTN  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN BOOLEAN           Value\r
   )\r
 ;\r
@@ -254,7 +223,7 @@ EFI_STATUS
 EFIAPI\r
 DxePcdSet8Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT8             Value\r
   )\r
 ;\r
@@ -264,7 +233,7 @@ EFI_STATUS
 EFIAPI\r
 DxePcdSet16Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT16            Value\r
   )\r
 ;\r
@@ -274,7 +243,7 @@ EFI_STATUS
 EFIAPI\r
 DxePcdSet32Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT32             Value\r
   )\r
 ;\r
@@ -284,7 +253,7 @@ EFI_STATUS
 EFIAPI\r
 DxePcdSet64Ex (\r
   IN CONST EFI_GUID        *Guid,\r
-  IN UINTN  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT64            Value\r
   )\r
 ;\r
@@ -293,9 +262,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        UINTN             TokenNumber,\r
+  IN OUT    UINTN             *SizeOfBuffer,\r
+  IN        VOID              *Buffer\r
   )\r
 ;\r
 \r
@@ -303,8 +273,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 UINTN             TokenNumber,\r
   IN BOOLEAN           Value\r
   )\r
 ;\r
@@ -313,9 +283,9 @@ DxePcdSetBoolEx (
 \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
@@ -323,9 +293,9 @@ PcdRegisterCallBackOnSet (
 \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
@@ -335,65 +305,176 @@ EFI_STATUS
 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