Add in support for GetNextTokenNumber API.

Use PCD_TOKEN_NUMBER as type for parameter of internal APIs.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@312 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12 2006-05-29 10:42:13 +00:00
parent 19b362e879
commit 0653eb895d
6 changed files with 66 additions and 44 deletions

View File

@ -444,10 +444,10 @@ InvokeCallbackOnSet (
EFI_STATUS
SetWorker (
UINTN TokenNumber,
VOID *Data,
UINTN Size,
BOOLEAN PtrType
PCD_TOKEN_NUMBER TokenNumber,
VOID *Data,
UINTN Size,
BOOLEAN PtrType
)
{
UINT32 *LocalTokenNumberTable;
@ -467,11 +467,11 @@ SetWorker (
LocalTokenNumberTable = IsPeiDb ? mPcdDatabase->PeiDb.Init.LocalTokenNumberTable :
mPcdDatabase->DxeDb.Init.LocalTokenNumberTable;
InvokeCallbackOnSet (0, NULL, TokenNumber, Data, Size);
TokenNumber = IsPeiDb ? TokenNumber
: TokenNumber - PEI_LOCAL_TOKEN_NUMBER;
InvokeCallbackOnSet (0, NULL, TokenNumber, Data, Size);
return SetWorkerByLocalTokenNumber (LocalTokenNumberTable[TokenNumber], Data, Size, PtrType, IsPeiDb);
}
@ -505,7 +505,7 @@ ExGetWorker (
EFI_STATUS
ExSetWorker (
IN UINT32 ExTokenNumber,
IN PCD_TOKEN_NUMBER ExTokenNumber,
IN CONST EFI_GUID *Guid,
VOID *Data,
UINTN SetSize,
@ -683,7 +683,7 @@ SetHiiVariable (
VOID
GetExPcdTokenAttributes (
IN CONST EFI_GUID *Guid,
IN UINT32 ExTokenNumber,
IN PCD_TOKEN_NUMBER ExTokenNumber,
OUT EX_PCD_ENTRY_ATTRIBUTE *ExAttr
)
{
@ -721,7 +721,7 @@ GetExPcdTokenAttributes (
ExAttr->IsPeiDb = FALSE;
ExAttr->Size = SizeTable[i + DXE_NEX_TOKEN_NUMBER];
ExAttr->TokenNumber = i + DXE_NEX_TOKEN_NUMBER;
ExAttr->TokenNumber = i + PEI_LOCAL_TOKEN_NUMBER;
ExAttr->LocalTokenNumberAlias = ExMap[i].LocalTokenNumber;
return;

View File

@ -46,16 +46,16 @@ typedef struct {
EFI_STATUS
SetWorker (
UINTN TokenNumber,
VOID *Data,
UINTN Size,
BOOLEAN PtrType
IN PCD_TOKEN_NUMBER TokenNumber,
IN VOID *Data,
IN UINTN Size,
IN BOOLEAN PtrType
)
;
EFI_STATUS
ExSetWorker (
IN UINT32 ExTokenNumber,
IN PCD_TOKEN_NUMBER ExTokenNumber,
IN CONST EFI_GUID *Guid,
VOID *Data,
UINTN Size,
@ -66,14 +66,14 @@ ExSetWorker (
VOID *
GetWorker (
UINTN TokenNumber
PCD_TOKEN_NUMBER TokenNumber
)
;
VOID *
ExGetWorker (
IN CONST EFI_GUID *Guid,
IN UINTN ExTokenNumber,
IN PCD_TOKEN_NUMBER ExTokenNumber,
IN UINTN GetSize
)
;
@ -90,21 +90,21 @@ EFI_STATUS
GetHiiVariable (
IN EFI_GUID *VariableGuid,
IN UINT16 *VariableName,
OUT VOID ** VariableData,
OUT VOID **VariableData,
OUT UINTN *VariableSize
)
;
EFI_STATUS
DxeRegisterCallBackWorker (
IN UINTN TokenNumber,
IN PCD_TOKEN_NUMBER TokenNumber,
IN CONST EFI_GUID *Guid, OPTIONAL
IN PCD_PROTOCOL_CALLBACK CallBackFunction
);
EFI_STATUS
DxeUnRegisterCallBackWorker (
IN UINTN TokenNumber,
IN PCD_TOKEN_NUMBER TokenNumber,
IN CONST EFI_GUID *Guid, OPTIONAL
IN PCD_PROTOCOL_CALLBACK CallBackFunction
);
@ -125,7 +125,7 @@ typedef struct {
VOID
GetExPcdTokenAttributes (
IN CONST EFI_GUID *Guid,
IN UINT32 ExTokenNumber,
IN PCD_TOKEN_NUMBER ExTokenNumber,
OUT EX_PCD_ENTRY_ATTRIBUTE *ExAttr
)
;

View File

@ -500,13 +500,13 @@ PeiPcdGetNextToken (
(*TokenNumber)++;
if (*TokenNumber >= PEI_NEX_TOKEN_NUMBER) {
*TokenNumber = 0;
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
}
} else {
if (PEI_EXMAP_TABLE_EMPTY) {
*TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
return EFI_NOT_FOUND;
}

View File

@ -62,10 +62,12 @@ PeiRegisterCallBackWorker (
ASSERT (GuidHob != NULL);
CallbackTable = GET_GUID_HOB_DATA (GuidHob);
CallbackTable = CallbackTable + (TokenNumber * FixedPcdGet32(PcdMaxPeiPcdCallBackNumberPerPcdEntry));
Compare = Register? NULL: CallBackFunction;
Assign = Register? CallBackFunction: NULL;
for (Idx = 0; Idx < FixedPcdGet32(PcdMaxPeiPcdCallBackNumberPerPcdEntry); Idx++) {
if (CallbackTable[Idx] == Compare) {
CallbackTable[Idx] = Assign;

View File

@ -42,43 +42,43 @@ GetPcdDatabase (
EFI_STATUS
SetWorker (
IN UINTN TokenNumber,
IN PCD_TOKEN_NUMBER TokenNumber,
IN VOID *Data,
IN UINTN Size,
IN BOOLEAN PtrType
)
;
EFI_STATUS
SetWorkerByLocalTokenNumber (
IN UINT32 LocalTokenNumber,
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 PCD_TOKEN_NUMBER ExTokenNumber,
IN CONST EFI_GUID *Guid,
VOID *Data,
UINTN Size,
BOOLEAN PtrType
IN VOID *Data,
IN UINTN Size,
IN BOOLEAN PtrType
)
;
VOID *
GetWorker (
UINTN TokenNumber,
UINTN GetSize
IN PCD_TOKEN_NUMBER TokenNumber,
IN UINTN GetSize
)
;
VOID *
ExGetWorker (
IN CONST EFI_GUID *Guid,
IN UINT32 ExTokenNumber,
IN PCD_TOKEN_NUMBER ExTokenNumber,
IN UINTN GetSize
)
;
@ -92,19 +92,25 @@ typedef struct {
VOID
GetExPcdTokenAttributes (
IN CONST EFI_GUID *Guid,
IN UINT32 ExTokenNumber,
IN PCD_TOKEN_NUMBER ExTokenNumber,
OUT EX_PCD_ENTRY_ATTRIBUTE *ExAttr
)
;
EFI_STATUS
PeiRegisterCallBackWorker (
IN UINTN TokenNumber,
IN PCD_TOKEN_NUMBER TokenNumber,
IN CONST GUID *Guid, OPTIONAL
IN PCD_PPI_CALLBACK CallBackFunction,
IN BOOLEAN Register
);
VOID
BuildPcdDatabase (
VOID

View File

@ -23,9 +23,10 @@ CONST GUID Guid1 = GUID1;
EFI_STATUS
EFIAPI
OnsetCallback1 (
IN UINT32 CallBackToken,
IN VOID *TokenData,
IN UINTN TokenDataSize
IN CONST EFI_GUID *Guid,
IN UINT32 CallBackToken,
IN VOID *TokenData,
IN UINTN TokenDataSize
)
{
DebugPrint (0x80000000, "In CallbackOnSet %x %d\n", * ((UINT32 *)TokenData), TokenDataSize);
@ -42,6 +43,10 @@ DoTest(
UINT16 u16;
UINT32 u32;
UINT64 u64;
PCD_TOKEN_NUMBER Token;
LibPcdCallbackOnSet (NULL, PcdToken(PcdTestDynamicUint32), OnsetCallback1);
u32 = 0xafafafaf;
PcdSet32(PcdTestDynamicUint32, u32);
@ -57,6 +62,15 @@ DoTest(
ASSERT (u16 == 0x1234);
ASSERT (u64 == PcdGet64(PcdTestDynamicUint64));
ASSERT (u32 == PcdGet32(PcdTestDynamicUint32));
Token = PCD_INVALID_TOKEN_NUMBER;
do {
Token = LibPcdGetNextToken (NULL, Token);
DebugPrint (EFI_D_ERROR, "Next Token Number is %d\n", Token);
} while (Token != PCD_INVALID_TOKEN_NUMBER);
return;
}