Check in the Pcd service Driver/PEIM according to the new way of generating PCD Database

LIMITATION:

1) ONLY dynamic type PCD is supported for now. DynamicEx is not supported.
2) HII enable and VPD is not tested.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@253 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12
2006-05-24 08:16:20 +00:00
parent dbdaaec45c
commit 52e1905d39
8 changed files with 1648 additions and 1359 deletions

View File

@@ -15,7 +15,6 @@ Module Name: Pcd.c
**/
#include "../Common/PcdCommon.h"
#include "Service.h"
@@ -70,9 +69,19 @@ PcdDxeInit (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
EFI_STATUS Status;
EFI_STATUS Status;
//
// Make sure the Pcd Protocol is not already installed in the system
//
InitPcdDxeDataBase ();
ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gPcdProtocolGuid);
BuildPcdDxeDataBase ();
//
// BugBug Check if PcdDatabase is already installed.
//
Status = gBS->InstallProtocolInterface (
&NewHandle,
@@ -91,10 +100,10 @@ PcdDxeInit (
EFI_STATUS
EFIAPI
DxePcdSetSku (
IN UINTN SkuId
IN UINTN SkuId
)
{
return DxeSetSku(SkuId);
return gPcdDatabase->PeiDb.Init.SystemSkuId = (SKU_ID) SkuId;
}
@@ -102,10 +111,12 @@ DxePcdSetSku (
UINT8
EFIAPI
DxePcdGet8 (
IN UINTN TokenNumber
IN UINTN TokenNumber
)
{
return DxePcdGet8Ex (NULL, TokenNumber);
ASSERT (sizeof (UINT8) == DxePcdGetSize (TokenNumber));
return *((UINT8 *) GetWorker (TokenNumber));
}
@@ -113,10 +124,12 @@ DxePcdGet8 (
UINT16
EFIAPI
DxePcdGet16 (
IN UINTN TokenNumber
IN UINTN TokenNumber
)
{
return DxePcdGet16Ex (NULL, TokenNumber);
ASSERT (sizeof (UINT16) == DxePcdGetSize (TokenNumber));
return ReadUnaligned16 (GetWorker (TokenNumber));
}
@@ -124,10 +137,12 @@ DxePcdGet16 (
UINT32
EFIAPI
DxePcdGet32 (
IN UINTN TokenNumber
IN UINTN TokenNumber
)
{
return DxePcdGet32Ex (NULL, TokenNumber);
ASSERT (sizeof (UINT32) == DxePcdGetSize (TokenNumber));
return ReadUnaligned32 (GetWorker (TokenNumber));
}
@@ -135,10 +150,12 @@ DxePcdGet32 (
UINT64
EFIAPI
DxePcdGet64 (
IN UINTN TokenNumber
IN UINTN TokenNumber
)
{
return DxePcdGet32Ex (NULL, TokenNumber);
ASSERT (sizeof (UINT64) == DxePcdGetSize (TokenNumber));
return ReadUnaligned64(GetWorker (TokenNumber));
}
@@ -146,10 +163,10 @@ DxePcdGet64 (
VOID *
EFIAPI
DxePcdGetPtr (
IN UINTN TokenNumber
IN UINTN TokenNumber
)
{
return DxePcdGetPtrEx (NULL, TokenNumber);
return GetWorker (TokenNumber);
}
@@ -157,10 +174,12 @@ DxePcdGetPtr (
BOOLEAN
EFIAPI
DxePcdGetBool (
IN UINTN TokenNumber
IN UINTN TokenNumber
)
{
return DxePcdGetBoolEx (NULL, TokenNumber);
ASSERT (sizeof (BOOLEAN) == DxePcdGetSize (TokenNumber));
return *((BOOLEAN *) GetWorker (TokenNumber));
}
@@ -168,10 +187,18 @@ DxePcdGetBool (
UINTN
EFIAPI
DxePcdGetSize (
IN UINTN TokenNumber
IN UINTN TokenNumber
)
{
return DxePcdGetSizeEx (NULL, TokenNumber);
UINT16 * SizeTable;
SizeTable = (TokenNumber < PEI_LOCAL_TOKEN_NUMBER) ? gPcdDatabase->PeiDb.Init.SizeTable :
gPcdDatabase->DxeDb.Init.SizeTable;
TokenNumber = (TokenNumber < PEI_LOCAL_TOKEN_NUMBER) ? TokenNumber : (TokenNumber - PEI_LOCAL_TOKEN_NUMBER);
return SizeTable[TokenNumber];
}
@@ -179,15 +206,11 @@ DxePcdGetSize (
UINT8
EFIAPI
DxePcdGet8Ex (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
IN CONST EFI_GUID *Guid,
IN UINTN ExTokenNumber
)
{
UINT8 Data;
DxeGetPcdEntryWorker (TokenNumber, Guid, PcdByte8, &Data);
return Data;
return *((UINT8 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT8)));
}
@@ -196,14 +219,10 @@ UINT16
EFIAPI
DxePcdGet16Ex (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
IN UINTN ExTokenNumber
)
{
UINT16 Data;
DxeGetPcdEntryWorker (TokenNumber, Guid, PcdByte16, &Data);
return Data;
return *((UINT16 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT16)));
}
@@ -212,14 +231,10 @@ UINT32
EFIAPI
DxePcdGet32Ex (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
IN UINTN ExTokenNumber
)
{
UINT32 Data;
DxeGetPcdEntryWorker (TokenNumber, Guid, PcdByte32, &Data);
return Data;
return *((UINT32 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT32)));
}
@@ -228,14 +243,13 @@ UINT64
EFIAPI
DxePcdGet64Ex (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
IN UINTN ExTokenNumber
)
{
UINT64 Data;
DxeGetPcdEntryWorker (TokenNumber, Guid, PcdByte64, &Data);
return Data;
//
// BugBug: Must be changed to ReadUnaligned64
//
return *((UINT64 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT64)));
}
@@ -244,14 +258,10 @@ VOID *
EFIAPI
DxePcdGetPtrEx (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
IN UINTN ExTokenNumber
)
{
VOID *Data;
DxeGetPcdEntryWorker (TokenNumber, Guid, PcdPointer, &Data);
return Data;
return ExGetWorker (Guid, ExTokenNumber, 0);
}
@@ -260,12 +270,10 @@ BOOLEAN
EFIAPI
DxePcdGetBoolEx (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
IN UINTN ExTokenNumber
)
{
BOOLEAN Data;
DxeGetPcdEntryWorker (TokenNumber, Guid, PcdBoolean, &Data);
return Data;
return *((BOOLEAN *) ExGetWorker (Guid, ExTokenNumber, sizeof(BOOLEAN)));
}
@@ -274,10 +282,14 @@ UINTN
EFIAPI
DxePcdGetSizeEx (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber
IN UINTN ExTokenNumber
)
{
return DxeGetPcdEntrySizeWorker (TokenNumber, Guid);
EX_PCD_ENTRY_ATTRIBUTE Attr;
GetExPcdTokenAttributes (Guid, ExTokenNumber, &Attr);
return Attr.Size;
}
@@ -285,11 +297,11 @@ DxePcdGetSizeEx (
EFI_STATUS
EFIAPI
DxePcdSet8 (
IN UINTN TokenNumber,
IN UINT8 Value
IN UINTN TokenNumber,
IN UINT8 Value
)
{
return DxePcdSet8Ex (NULL, TokenNumber, Value);
return SetWorker (TokenNumber, &Value, sizeof (Value), FALSE);
}
@@ -297,11 +309,11 @@ DxePcdSet8 (
EFI_STATUS
EFIAPI
DxePcdSet16 (
IN UINTN TokenNumber,
IN UINTN TokenNumber,
IN UINT16 Value
)
{
return DxePcdSet16Ex (NULL, TokenNumber, Value);
return SetWorker (TokenNumber, &Value, sizeof (Value), FALSE);
}
@@ -309,11 +321,11 @@ DxePcdSet16 (
EFI_STATUS
EFIAPI
DxePcdSet32 (
IN UINTN TokenNumber,
IN UINTN TokenNumber,
IN UINT32 Value
)
{
return DxePcdSet32Ex (NULL, TokenNumber, Value);
return SetWorker (TokenNumber, &Value, sizeof (Value), FALSE);
}
@@ -321,11 +333,11 @@ DxePcdSet32 (
EFI_STATUS
EFIAPI
DxePcdSet64 (
IN UINTN TokenNumber,
IN UINT64 Value
IN UINTN TokenNumber,
IN UINT64 Value
)
{
return DxePcdSet64Ex (NULL, TokenNumber, Value);
return SetWorker (TokenNumber, &Value, sizeof (Value), FALSE);
}
@@ -333,11 +345,16 @@ DxePcdSet64 (
EFI_STATUS
EFIAPI
DxePcdSetPtr (
IN UINTN TokenNumber,
IN CONST VOID *Value
IN UINTN TokenNumber,
IN CONST VOID *Value
)
{
return DxePcdSetPtrEx (NULL, TokenNumber, Value);
//
// BugBug, please change the Size to Input size when sync with spec
//
//ASSERT (sizeof (Value) == DxePcdGetSize (TokenNumber));
return SetWorker (TokenNumber, (VOID *)Value, DxePcdGetSize (TokenNumber), TRUE);
}
@@ -345,11 +362,11 @@ DxePcdSetPtr (
EFI_STATUS
EFIAPI
DxePcdSetBool (
IN UINTN TokenNumber,
IN BOOLEAN Value
IN UINTN TokenNumber,
IN BOOLEAN Value
)
{
return DxePcdSetBoolEx (NULL, TokenNumber, Value);
return SetWorker (TokenNumber, &Value, sizeof (Value), FALSE);
}
@@ -358,11 +375,17 @@ EFI_STATUS
EFIAPI
DxePcdSet8Ex (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINT8 Value
IN UINTN ExTokenNumber,
IN UINT8 Value
)
{
return DxeSetPcdEntryWorker (TokenNumber, Guid, PcdByte8, &Value);
return ExSetWorker(
ExTokenNumber,
Guid,
&Value,
sizeof (Value),
FALSE
);
}
@@ -371,11 +394,17 @@ EFI_STATUS
EFIAPI
DxePcdSet16Ex (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINTN ExTokenNumber,
IN UINT16 Value
)
{
return DxeSetPcdEntryWorker (TokenNumber, Guid, PcdByte16, &Value);
return ExSetWorker(
ExTokenNumber,
Guid,
&Value,
sizeof (Value),
FALSE
);
}
@@ -384,11 +413,17 @@ EFI_STATUS
EFIAPI
DxePcdSet32Ex (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINTN ExTokenNumber,
IN UINT32 Value
)
{
return DxeSetPcdEntryWorker (TokenNumber, Guid, PcdByte32, &Value);
return ExSetWorker(
ExTokenNumber,
Guid,
&Value,
sizeof (Value),
FALSE
);
}
@@ -397,11 +432,17 @@ EFI_STATUS
EFIAPI
DxePcdSet64Ex (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINTN ExTokenNumber,
IN UINT64 Value
)
{
return DxeSetPcdEntryWorker (TokenNumber, Guid, PcdByte64, &Value);
return ExSetWorker(
ExTokenNumber,
Guid,
&Value,
sizeof (Value),
FALSE
);
}
@@ -410,11 +451,17 @@ EFI_STATUS
EFIAPI
DxePcdSetPtrEx (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINTN ExTokenNumber,
IN CONST VOID *Value
)
{
return DxeSetPcdEntryWorker (TokenNumber, Guid, PcdPointer, Value);
return ExSetWorker(
ExTokenNumber,
Guid,
(VOID *) Value,
sizeof (Value),
TRUE
);
}
@@ -423,12 +470,17 @@ EFI_STATUS
EFIAPI
DxePcdSetBoolEx (
IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber,
IN UINTN ExTokenNumber,
IN BOOLEAN Value
)
{
return DxeSetPcdEntryWorker (TokenNumber, Guid, PcdBoolean, &Value);
return ExSetWorker(
ExTokenNumber,
Guid,
&Value,
sizeof (Value),
TRUE
);
}