]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Dxe/Service.h
Add Lock for cirtical section in PCD database processing routines as PCD database...
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Dxe / Service.h
index 2784d28891c3252706334921542103851bc434cb..572d172f3cf0fdec7e4e22b11ec7984bae231073 100644 (file)
@@ -22,7 +22,7 @@ Module Name: Service.h
 // 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
+#define PCD_DXE_SERVICE_DRIVER_VERSION      2\r
 \r
 //\r
 // PCD_DXE_DATABASE_GENTOOL_VERSION is defined in Autogen.h\r
@@ -32,96 +32,6 @@ Module Name: Service.h
   #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
-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
-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 UINTN                      ExTokenNumber\r
-  )\r
-;\r
 //\r
 // Protocol Interface function declaration.\r
 //\r
@@ -293,9 +203,9 @@ DxePcdSet64 (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSetPtr (\r
-  IN UINTN             TokenNumber,\r
-  IN UINTN             SizeOfBuffer,\r
-  IN VOID              *Buffer\r
+  IN        UINTN             TokenNumber,\r
+  IN        UINTN             *SizeOfBuffer,\r
+  IN        VOID              *Buffer\r
   )\r
 ;\r
 \r
@@ -352,10 +262,10 @@ DxePcdSet64Ex (
 EFI_STATUS\r
 EFIAPI\r
 DxePcdSetPtrEx (\r
-  IN CONST EFI_GUID    *Guid,\r
-  IN UINTN             TokenNumber,\r
-  IN UINTN             SizeOfBuffer,\r
-  IN VOID              *Buffer\r
+  IN        CONST EFI_GUID    *Guid,\r
+  IN        UINTN             TokenNumber,\r
+  IN OUT    UINTN             *SizeOfBuffer,\r
+  IN        VOID              *Buffer\r
   )\r
 ;\r
 \r
@@ -374,8 +284,8 @@ DxePcdSetBoolEx (
 EFI_STATUS\r
 EFIAPI\r
 DxeRegisterCallBackOnSet (\r
-  IN  UINTN                   TokenNumber,\r
   IN  CONST EFI_GUID          *Guid, OPTIONAL\r
+  IN  UINTN                   TokenNumber,\r
   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
   )\r
 ;\r
@@ -384,8 +294,8 @@ DxeRegisterCallBackOnSet (
 EFI_STATUS\r
 EFIAPI\r
 DxeUnRegisterCallBackOnSet (\r
-  IN  UINTN                   TokenNumber,\r
   IN  CONST EFI_GUID          *Guid, OPTIONAL\r
+  IN  UINTN                   TokenNumber,\r
   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
   )\r
 ;\r
@@ -399,14 +309,163 @@ DxePcdGetNextToken (
   )\r
 ;\r
 \r
+\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DxePcdGetNextTokenSpace (\r
+  IN OUT CONST EFI_GUID               **Guid\r
+  )\r
+;\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
+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
+\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
+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
+\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 UINTN             TokenNumber,\r
-  IN EFI_GUID          *GuidTable,\r
-  IN UINTN             SizeOfGuidTable,\r
-  IN DYNAMICEX_MAPPING *ExMapTable,\r
-  IN UINTN             SizeOfExMapTable\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
@@ -416,4 +475,6 @@ extern PCD_DATABASE * mPcdDatabase;
 \r
 extern DXE_PCD_DATABASE_INIT gDXEPcdDbInit;\r
 \r
+extern EFI_LOCK mPcdDatabaseLock;\r
+\r
 #endif\r