X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkModulePkg%2FUniversal%2FPCD%2FDxe%2FService.h;h=d33a891eba78375f71e52777383559f859a1cbc0;hp=86e3dfdee31ea37bc1b8006f8daa3eb563e57c4f;hb=4c114006de95489973d33a5415bb451bcd6cd62a;hpb=878ddf1fc3540a715f63594ed22b6929e881afb4 diff --git a/EdkModulePkg/Universal/PCD/Dxe/Service.h b/EdkModulePkg/Universal/PCD/Dxe/Service.h index 86e3dfdee3..d33a891eba 100644 --- a/EdkModulePkg/Universal/PCD/Dxe/Service.h +++ b/EdkModulePkg/Universal/PCD/Dxe/Service.h @@ -18,59 +18,125 @@ Module Name: Service.h #ifndef _SERVICE_H #define _SERVICE_H -VOID -DxeGetPcdEntryWorker ( - IN UINTN Token, - IN CONST EFI_GUID *Guid, OPTIONAL - IN PCD_DATA_TYPE Type, - OUT VOID *Data - ); - -EFI_STATUS -DxeSetPcdEntryWorker ( - IN UINTN Token, - IN CONST EFI_GUID *Guid, OPTIONAL - IN PCD_DATA_TYPE Type, - IN CONST VOID *Data - ); +// +// Please make sure the PCD Serivce PEIM Version is consistent with +// the version of PCD Database generation tool +// +#define PCD_DXE_SERVICE_DRIVER_VERSION 1 -UINTN -DxeGetPcdEntrySizeWorker ( - IN UINTN Token, - IN CONST EFI_GUID *Guid OPTIONAL - ); +// +// PCD_DXE_DATABASE_GENTOOL_VERSION is defined in Autogen.h +// and generated by PCD Database generation tool. +// +#if (PCD_DXE_SERVICE_PEIM_VERSION != PCD_DXE_DATABASE_GENTOOL_VERSION) + #error "Please make sure the version of PCD Service DXE Driver and PCD DXE Database Generation Tool matches" +#endif + + +typedef struct { + LIST_ENTRY Node; + PCD_PROTOCOL_CALLBACK CallbackFn; +} CALLBACK_FN_ENTRY; + +#define CR_FNENTRY_FROM_LISTNODE(Record, Type, Field) _CR(Record, Type, Field) + +// +// Internal Functions +// EFI_STATUS -DxeRegisterCallBackWorker ( - IN UINTN TokenNumber, - IN CONST EFI_GUID *Guid, OPTIONAL - IN PCD_PROTOCOL_CALLBACK CallBackFunction, - IN BOOLEAN Reigster -); +SetWorker ( + UINTN TokenNumber, + VOID *Data, + UINTN Size, + BOOLEAN PtrType + ) +; + +EFI_STATUS +ExSetWorker ( + IN UINT32 ExTokenNumber, + IN CONST EFI_GUID *Guid, + VOID *Data, + UINTN Size, + BOOLEAN PtrType + ) +; + + +VOID * +GetWorker ( + UINTN TokenNumber + ) +; + +VOID * +ExGetWorker ( + IN CONST EFI_GUID *Guid, + IN UINTN ExTokenNumber, + IN UINTN GetSize + ) +; + +UINT32 +GetSkuEnabledTokenNumber ( + UINT32 LocalTokenNumber, + UINTN Size, + BOOLEAN IsPeiDb + ) +; + +EFI_STATUS +GetHiiVariable ( + IN EFI_GUID *VariableGuid, + IN UINT16 *VariableName, + OUT VOID ** VariableData, + OUT UINTN *VariableSize + ) +; EFI_STATUS -DxeSetSku ( - UINTN Id +DxeRegisterCallBackWorker ( + IN UINTN TokenNumber, + IN CONST EFI_GUID *Guid, OPTIONAL + IN PCD_PROTOCOL_CALLBACK CallBackFunction ); EFI_STATUS -DxeGetNextTokenWorker ( - IN OUT UINTN *Token, - IN CONST EFI_GUID *Guid OPTIONAL - ); +DxeUnRegisterCallBackWorker ( + IN UINTN TokenNumber, + IN CONST EFI_GUID *Guid, OPTIONAL + IN PCD_PROTOCOL_CALLBACK CallBackFunction +); VOID -InitPcdDxeDataBase ( +BuildPcdDxeDataBase ( VOID ); + +typedef struct { + UINTN TokenNumber; + UINTN Size; + UINT32 LocalTokenNumberAlias; + BOOLEAN IsPeiDb; +} EX_PCD_ENTRY_ATTRIBUTE; + +VOID +GetExPcdTokenAttributes ( + IN CONST EFI_GUID *Guid, + IN UINT32 ExTokenNumber, + OUT EX_PCD_ENTRY_ATTRIBUTE *ExAttr + ) +; + // // Protocol Interface function declaration. // -EFI_STATUS +VOID EFIAPI DxePcdSetSku ( - IN UINTN SkuId + IN SKU_ID SkuId ) ; @@ -78,7 +144,7 @@ DxePcdSetSku ( UINT8 EFIAPI DxePcdGet8 ( - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -86,7 +152,7 @@ DxePcdGet8 ( UINT16 EFIAPI DxePcdGet16 ( - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -94,7 +160,7 @@ DxePcdGet16 ( UINT32 EFIAPI DxePcdGet32 ( - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -102,7 +168,7 @@ DxePcdGet32 ( UINT64 EFIAPI DxePcdGet64 ( - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -110,7 +176,7 @@ DxePcdGet64 ( VOID * EFIAPI DxePcdGetPtr ( - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -118,7 +184,7 @@ DxePcdGetPtr ( BOOLEAN EFIAPI DxePcdGetBool ( - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -126,7 +192,7 @@ DxePcdGetBool ( UINTN EFIAPI DxePcdGetSize ( - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -135,7 +201,7 @@ UINT8 EFIAPI DxePcdGet8Ex ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -144,7 +210,7 @@ UINT16 EFIAPI DxePcdGet16Ex ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -153,7 +219,7 @@ UINT32 EFIAPI DxePcdGet32Ex ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -163,7 +229,7 @@ UINT64 EFIAPI DxePcdGet64Ex ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -173,7 +239,7 @@ VOID * EFIAPI DxePcdGetPtrEx ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -182,7 +248,7 @@ BOOLEAN EFIAPI DxePcdGetBoolEx ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -191,7 +257,7 @@ UINTN EFIAPI DxePcdGetSizeEx ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber + IN PCD_TOKEN_NUMBER TokenNumber ) ; @@ -199,7 +265,7 @@ DxePcdGetSizeEx ( EFI_STATUS EFIAPI DxePcdSet8 ( - IN UINTN TokenNumber, + IN PCD_TOKEN_NUMBER TokenNumber, IN UINT8 Value ) ; @@ -208,7 +274,7 @@ DxePcdSet8 ( EFI_STATUS EFIAPI DxePcdSet16 ( - IN UINTN TokenNumber, + IN PCD_TOKEN_NUMBER TokenNumber, IN UINT16 Value ) ; @@ -217,7 +283,7 @@ DxePcdSet16 ( EFI_STATUS EFIAPI DxePcdSet32 ( - IN UINTN TokenNumber, + IN PCD_TOKEN_NUMBER TokenNumber, IN UINT32 Value ) ; @@ -226,7 +292,7 @@ DxePcdSet32 ( EFI_STATUS EFIAPI DxePcdSet64 ( - IN UINTN TokenNumber, + IN PCD_TOKEN_NUMBER TokenNumber, IN UINT64 Value ) ; @@ -235,8 +301,9 @@ DxePcdSet64 ( EFI_STATUS EFIAPI DxePcdSetPtr ( - IN UINTN TokenNumber, - IN CONST VOID *Value + IN PCD_TOKEN_NUMBER TokenNumber, + IN UINTN SizeOfBuffer, + IN VOID *Buffer ) ; @@ -244,7 +311,7 @@ DxePcdSetPtr ( EFI_STATUS EFIAPI DxePcdSetBool ( - IN UINTN TokenNumber, + IN PCD_TOKEN_NUMBER TokenNumber, IN BOOLEAN Value ) ; @@ -254,7 +321,7 @@ EFI_STATUS EFIAPI DxePcdSet8Ex ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber, + IN PCD_TOKEN_NUMBER TokenNumber, IN UINT8 Value ) ; @@ -264,7 +331,7 @@ EFI_STATUS EFIAPI DxePcdSet16Ex ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber, + IN PCD_TOKEN_NUMBER TokenNumber, IN UINT16 Value ) ; @@ -274,7 +341,7 @@ EFI_STATUS EFIAPI DxePcdSet32Ex ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber, + IN PCD_TOKEN_NUMBER TokenNumber, IN UINT32 Value ) ; @@ -284,7 +351,7 @@ EFI_STATUS EFIAPI DxePcdSet64Ex ( IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber, + IN PCD_TOKEN_NUMBER TokenNumber, IN UINT64 Value ) ; @@ -293,9 +360,10 @@ DxePcdSet64Ex ( EFI_STATUS EFIAPI DxePcdSetPtrEx ( - IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber, - IN CONST VOID *Value + IN CONST EFI_GUID *Guid, + IN PCD_TOKEN_NUMBER TokenNumber, + IN UINTN SizeOfBuffer, + IN VOID *Buffer ) ; @@ -303,8 +371,8 @@ DxePcdSetPtrEx ( EFI_STATUS EFIAPI DxePcdSetBoolEx ( - IN CONST EFI_GUID *Guid, - IN UINTN TokenNumber, + IN CONST EFI_GUID *Guid, + IN PCD_TOKEN_NUMBER TokenNumber, IN BOOLEAN Value ) ; @@ -313,9 +381,9 @@ DxePcdSetBoolEx ( EFI_STATUS EFIAPI -PcdRegisterCallBackOnSet ( - IN UINTN TokenNumber, - IN CONST EFI_GUID *Guid, OPTIONAL +DxeRegisterCallBackOnSet ( + IN PCD_TOKEN_NUMBER TokenNumber, + IN CONST EFI_GUID *Guid, OPTIONAL IN PCD_PROTOCOL_CALLBACK CallBackFunction ) ; @@ -323,9 +391,9 @@ PcdRegisterCallBackOnSet ( EFI_STATUS EFIAPI -PcdUnRegisterCallBackOnSet ( - IN UINTN TokenNumber, - IN CONST EFI_GUID *Guid, OPTIONAL +DxeUnRegisterCallBackOnSet ( + IN PCD_TOKEN_NUMBER TokenNumber, + IN CONST EFI_GUID *Guid, OPTIONAL IN PCD_PROTOCOL_CALLBACK CallBackFunction ) ; @@ -335,65 +403,35 @@ EFI_STATUS EFIAPI DxePcdGetNextToken ( IN CONST EFI_GUID *Guid, OPTIONAL - IN OUT UINTN *TokenNumber + IN OUT PCD_TOKEN_NUMBER *TokenNumber ) ; +EFI_STATUS +SetWorkerByLocalTokenNumber ( + UINT32 LocalTokenNumber, + VOID *Data, + UINTN Size, + BOOLEAN PtrType, + BOOLEAN IsPeiDb + ) +; -/* - This DXE_PCD_DATABASE layout. The difference of DXE_PCD_DATABASE - and PEI_PCD_DATABASE is as follows: - - 1) No PCD_CALL_BACK_TABLE; DXE_PCD_DATABASE maintain a LinkList for the - callback function registered. - - --------------------------- - | LIST_ENTRY GuidSpaceHead| - --------------------------- - | PCD_DATABASE_HEADER | - --------------------------- - | GUID_TABLE | Aligned on GUID (128 bits) - --------------------------- - | PCD_INDEX_TABLE | Aligned on PCD_INDEX (see PCD_INDEX's declaration) - --------------------------- - | IMAGE_STRING_TABLE | Aligned on 16 Bits - --------------------------- - | IMAGE_PCD_INDEX | Unaligned - --------------------------- - | Data Defaults | Unaligned - --------------------------- - | Data Buffer | - | for entries without | - | defaults | - --------------------------- - -*/ - - -typedef struct { - LIST_ENTRY ListNode; - LIST_ENTRY TokenSpaceHead; - CONST EFI_GUID *GuidSpace; -} PCD_GUID_SPACE; - -typedef struct { - LIST_ENTRY ListNode; - LIST_ENTRY CallbackListHead; - UINTN TokeNumber; -} PCD_TOKEN_SPACE; - -typedef struct { - LIST_ENTRY ListNode; - PCD_PROTOCOL_CALLBACK CallbackFunction; -} PCD_CALLBACK_ENTRY; +PCD_TOKEN_NUMBER +ExGetNextTokeNumber ( + IN CONST EFI_GUID *Guid, + IN PCD_TOKEN_NUMBER TokenNumber, + IN EFI_GUID *GuidTable, + IN UINTN SizeOfGuidTable, + IN DYNAMICEX_MAPPING *ExMapTable, + IN UINTN SizeOfExMapTable + ) +; -#define PCD_GUID_SPACE_FROM_LISTNODE(a) \ - _CR(a, PCD_GUID_SPACE, ListNode) +extern EFI_GUID gPcdDataBaseHobGuid; -#define PCD_TOKEN_SPACE_FROM_LISTNODE(a) \ - _CR(a, PCD_TOKEN_SPACE, ListNode) +extern PCD_DATABASE * mPcdDatabase; -#define PCD_CALLBACK_ENTRY_FROM_LISTNODE(a) \ - _CR(a, PCD_CALLBACK_ENTRY, ListNode) +extern DXE_PCD_DATABASE_INIT gDXEPcdDbInit; #endif