/** @file Private functions used by PCD PEIM. Copyright (c) 2006, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. Module Name: Service.h **/ #ifndef _SERVICE_H #define _SERVICE_H #define USE_AUTOGEN #ifndef USE_AUTOGEN // // The following definition will be generated by build tool // // // Common definitions that is shared by PEI and DXE PCD database // #define PCD_TYPE_SHIFT 24 #define PCD_TYPE_DATA (0x00 << PCD_TYPE_SHIFT) #define PCD_TYPE_HII (0x80 << PCD_TYPE_SHIFT) #define PCD_TYPE_VPD (0x40 << PCD_TYPE_SHIFT) #define PCD_TYPE_SKU_ENABLED (0x20 << PCD_TYPE_SHIFT) #define PCD_DATABASE_OFFSET_MASK (~(PCD_TYPE_HII | PCD_TYPE_VPD | PCD_TYPE_SKU_ENABLED)) typedef struct { UINT32 ExTokenNumber; UINT32 LocalTokenNumber; // PCD Number of this particular platform build UINT16 ExGuidIndex; // Index of GuidTable } DYNAMICEX_MAPPING; typedef struct { UINT32 SkuDataStartOffset; //We have to use offsetof MACRO as we don't know padding done by compiler UINT32 SkuIdTableOffset; //Offset from the PCD_DB } SKU_HEAD; typedef struct { UINT16 GuidTableIndex; // Offset in Guid Table in units of GUID. UINT16 StringIndex; // Offset in String Table in units of UINT16. UINT16 Offset; // Offset in Variable } VARIABLE_HEAD ; typedef struct { UINT32 Offset; } VPD_HEAD; typedef struct { UINT32 LocalTokenNumber; UINT16 TokenNumber; UINT16 Size; } SIZEINFO; #define offsetof(s,m) (UINT32)&(((s *)0)->m) // // C Structure generate for PEI PCD Database // #define PEI_EXMAPPING_TABLE_SIZE 1 #define PEI_GUID_TABLE_SIZE 1 #define PEI_LOCAL_TOKEN_NUMBER 1 #define PEI_STRING_TABLE_SIZE 2 #define PEI_SKUID_TABLE_SIZE 3 #define PEI_DATABASE_EMPTRY FALSE #define PEI_EXMAP_TABLE_EMPTY FALSE #define PEI_GUID_TABLE_EMPTY FALSE #define PEI_STRINGTABLE_EMPTY FALSE #define PEI_SIZETABLE_EMPTY FALSE #define PEI_SKUID_TABLE_EMPTY FALSE typedef struct { DYNAMICEX_MAPPING ExMapTable[PEI_EXMAPPING_TABLE_SIZE]; EFI_GUID GuidTable[PEI_GUID_TABLE_SIZE]; UINT32 LocalTokenNumberTable[PEI_LOCAL_TOKEN_NUMBER]; UINT16 StringTable[PEI_STRING_TABLE_SIZE]; UINT16 SizeTable[PEI_LOCAL_TOKEN_NUMBER]; UINT8 SkuIdTable[PEI_SKUID_TABLE_SIZE]; SKU_ID SystemSkuId; } PEI_PCD_DATABASE_INIT; typedef struct { UINT8 Dummy; } PEI_PCD_DATABASE_UNINIT; #define PEI_PCD_DB_INIT_VALUE \ /* ExMapTable */ \ { \ { /* ExTokenNumber */ 0x00000001, /* LocalTokenNumberIndex */ 0, /* ExGuidIndex */ 0} \ }, \ \ /* GuidTable */ \ { \ { 0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD }} \ }, \ \ /* LocalTokenNumberTable */ \ { \ 0 \ }, \ \ /* StringTable */ \ { \ L"\0" \ }, \ \ /* SizeTable */ \ { \ 4 \ }, \ \ /* SkuIdTable */ \ { \ /*MaxSku*/ 2, /*SkuId*/ 100, /*SkuId*/200 \ },\ \ /* SystemSkuId */ \ 0 \ // // End of Autogen Code // #endif /* typedef struct { PEI_PCD_DATABASE_INIT Init; PEI_PCD_DATABASE_UNINIT Uninit; } PEI_PCD_DATABASE; */ /* Internal Function definitions */ PEI_PCD_DATABASE * GetPcdDatabase ( VOID ) ; EFI_STATUS SetWorker ( IN UINTN TokenNumber, IN VOID *Data, IN UINTN Size, IN BOOLEAN PtrType ) ; EFI_STATUS SetWorkerByLocalTokenNumber ( UINT32 LocalTokenNumber, 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, UINTN GetSize ) ; VOID * ExGetWorker ( IN CONST EFI_GUID *Guid, IN UINT32 ExTokenNumber, IN UINTN GetSize ) ; typedef struct { UINTN TokenNumber; UINTN Size; UINT32 LocalTokenNumberAlias; } EX_PCD_ENTRY_ATTRIBUTE; VOID GetExPcdTokenAttributes ( IN CONST EFI_GUID *Guid, IN UINT32 ExTokenNumber, OUT EX_PCD_ENTRY_ATTRIBUTE *ExAttr ) ; EFI_STATUS PeiRegisterCallBackWorker ( IN UINTN TokenNumber, IN CONST GUID *Guid, OPTIONAL IN PCD_PPI_CALLBACK CallBackFunction, IN BOOLEAN Register ); VOID BuildPcdDatabase ( VOID ) ; extern EFI_GUID gPcdImageFileGuid; // // PPI Interface Implementation Declaration. // EFI_STATUS EFIAPI PeiPcdSetSku ( IN UINTN SkuId ) ; UINT8 EFIAPI PeiPcdGet8 ( IN UINTN TokenNumber ) ; UINT16 EFIAPI PeiPcdGet16 ( IN UINTN TokenNumber ) ; UINT32 EFIAPI PeiPcdGet32 ( IN UINTN TokenNumber ) ; UINT64 EFIAPI PeiPcdGet64 ( IN UINTN TokenNumber ) ; VOID * EFIAPI PeiPcdGetPtr ( IN UINTN TokenNumber ) ; BOOLEAN EFIAPI PeiPcdGetBool ( IN UINTN TokenNumber ) ; UINTN EFIAPI PeiPcdGetSize ( IN UINTN TokenNumber ) ; UINT8 EFIAPI PeiPcdGet8Ex ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber ) ; UINT16 EFIAPI PeiPcdGet16Ex ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber ) ; UINT32 EFIAPI PeiPcdGet32Ex ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber ) ; UINT64 EFIAPI PeiPcdGet64Ex ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber ) ; VOID * EFIAPI PeiPcdGetPtrEx ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber ) ; BOOLEAN EFIAPI PeiPcdGetBoolEx ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber ) ; UINTN EFIAPI PeiPcdGetSizeEx ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber ) ; EFI_STATUS EFIAPI PeiPcdSet8 ( IN UINTN TokenNumber, IN UINT8 Value ) ; EFI_STATUS EFIAPI PeiPcdSet16 ( IN UINTN TokenNumber, IN UINT16 Value ) ; EFI_STATUS EFIAPI PeiPcdSet32 ( IN UINTN TokenNumber, IN UINT32 Value ) ; EFI_STATUS EFIAPI PeiPcdSet64 ( IN UINTN TokenNumber, IN UINT64 Value ) ; EFI_STATUS EFIAPI PeiPcdSetPtr ( IN UINTN TokenNumber, IN CONST VOID *Value ) ; EFI_STATUS EFIAPI PeiPcdSetBool ( IN UINTN TokenNumber, IN BOOLEAN Value ) ; EFI_STATUS EFIAPI PeiPcdSet8Ex ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber, IN UINT8 Value ) ; EFI_STATUS EFIAPI PeiPcdSet16Ex ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber, IN UINT16 Value ) ; EFI_STATUS EFIAPI PeiPcdSet32Ex ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber, IN UINT32 Value ) ; EFI_STATUS EFIAPI PeiPcdSet64Ex ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber, IN UINT64 Value ) ; EFI_STATUS EFIAPI PeiPcdSetPtrEx ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber, IN CONST VOID *Value ) ; EFI_STATUS EFIAPI PeiPcdSetBoolEx ( IN CONST EFI_GUID *Guid, IN UINTN TokenNumber, IN BOOLEAN Value ) ; EFI_STATUS EFIAPI PcdRegisterCallBackOnSet ( IN UINTN TokenNumber, IN CONST EFI_GUID *Guid, OPTIONAL IN PCD_PPI_CALLBACK CallBackFunction ) ; EFI_STATUS EFIAPI PcdUnRegisterCallBackOnSet ( IN UINTN TokenNumber, IN CONST EFI_GUID *Guid, OPTIONAL IN PCD_PPI_CALLBACK CallBackFunction ) ; EFI_STATUS EFIAPI PeiPcdGetNextToken ( IN CONST EFI_GUID *Guid, OPTIONAL IN OUT UINTN *TokenNumber ) ; extern EFI_GUID gPcdDataBaseHobGuid; extern EFI_GUID gPcdPeiCallbackFnTableHobGuid; extern PEI_PCD_DATABASE_INIT gPEIPcdDbInit; #endif