audk/EdkModulePkg/Universal/PCD/Pei/Service.h

523 lines
8.8 KiB
C

/** @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