Add in GetNextToken and Register Callback Function funtionality for DXE Driver.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@309 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		@@ -51,8 +51,8 @@ PCD_PROTOCOL mPcdInstance = {
 | 
				
			|||||||
  DxePcdSetPtrEx,
 | 
					  DxePcdSetPtrEx,
 | 
				
			||||||
  DxePcdSetBoolEx,
 | 
					  DxePcdSetBoolEx,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  PcdRegisterCallBackOnSet,
 | 
					  DxeRegisterCallBackOnSet,
 | 
				
			||||||
  PcdUnRegisterCallBackOnSet,
 | 
					  DxeUnRegisterCallBackOnSet,
 | 
				
			||||||
  DxePcdGetNextToken
 | 
					  DxePcdGetNextToken
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -103,7 +103,7 @@ DxePcdSetSku (
 | 
				
			|||||||
  IN  SKU_ID         SkuId
 | 
					  IN  SKU_ID         SkuId
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  gPcdDatabase->PeiDb.Init.SystemSkuId = SkuId;
 | 
					  mPcdDatabase->PeiDb.Init.SystemSkuId = SkuId;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  return;
 | 
					  return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -113,7 +113,7 @@ DxePcdSetSku (
 | 
				
			|||||||
UINT8
 | 
					UINT8
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGet8 (
 | 
					DxePcdGet8 (
 | 
				
			||||||
  IN UINTN         TokenNumber
 | 
					  IN PCD_TOKEN_NUMBER         TokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ASSERT (sizeof (UINT8) == DxePcdGetSize (TokenNumber));
 | 
					  ASSERT (sizeof (UINT8) == DxePcdGetSize (TokenNumber));
 | 
				
			||||||
@@ -126,7 +126,7 @@ DxePcdGet8 (
 | 
				
			|||||||
UINT16
 | 
					UINT16
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGet16 (
 | 
					DxePcdGet16 (
 | 
				
			||||||
  IN UINTN         TokenNumber
 | 
					  IN PCD_TOKEN_NUMBER         TokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ASSERT (sizeof (UINT16) == DxePcdGetSize (TokenNumber));
 | 
					  ASSERT (sizeof (UINT16) == DxePcdGetSize (TokenNumber));
 | 
				
			||||||
@@ -139,7 +139,7 @@ DxePcdGet16 (
 | 
				
			|||||||
UINT32
 | 
					UINT32
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGet32 (
 | 
					DxePcdGet32 (
 | 
				
			||||||
  IN UINTN         TokenNumber
 | 
					  IN PCD_TOKEN_NUMBER         TokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ASSERT (sizeof (UINT32) == DxePcdGetSize (TokenNumber));
 | 
					  ASSERT (sizeof (UINT32) == DxePcdGetSize (TokenNumber));
 | 
				
			||||||
@@ -152,7 +152,7 @@ DxePcdGet32 (
 | 
				
			|||||||
UINT64
 | 
					UINT64
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGet64 (
 | 
					DxePcdGet64 (
 | 
				
			||||||
  IN UINTN          TokenNumber
 | 
					  IN PCD_TOKEN_NUMBER          TokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ASSERT (sizeof (UINT64) == DxePcdGetSize (TokenNumber));
 | 
					  ASSERT (sizeof (UINT64) == DxePcdGetSize (TokenNumber));
 | 
				
			||||||
@@ -165,7 +165,7 @@ DxePcdGet64 (
 | 
				
			|||||||
VOID *
 | 
					VOID *
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGetPtr (
 | 
					DxePcdGetPtr (
 | 
				
			||||||
  IN UINTN          TokenNumber
 | 
					  IN PCD_TOKEN_NUMBER          TokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return GetWorker (TokenNumber);
 | 
					  return GetWorker (TokenNumber);
 | 
				
			||||||
@@ -176,7 +176,7 @@ DxePcdGetPtr (
 | 
				
			|||||||
BOOLEAN
 | 
					BOOLEAN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGetBool (
 | 
					DxePcdGetBool (
 | 
				
			||||||
  IN UINTN          TokenNumber
 | 
					  IN PCD_TOKEN_NUMBER          TokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  ASSERT (sizeof (BOOLEAN) == DxePcdGetSize (TokenNumber));
 | 
					  ASSERT (sizeof (BOOLEAN) == DxePcdGetSize (TokenNumber));
 | 
				
			||||||
@@ -189,13 +189,13 @@ DxePcdGetBool (
 | 
				
			|||||||
UINTN
 | 
					UINTN
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGetSize (
 | 
					DxePcdGetSize (
 | 
				
			||||||
  IN UINTN          TokenNumber
 | 
					  IN PCD_TOKEN_NUMBER          TokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  UINT16 * SizeTable;
 | 
					  UINT16 * SizeTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SizeTable = (TokenNumber < PEI_LOCAL_TOKEN_NUMBER) ? gPcdDatabase->PeiDb.Init.SizeTable :
 | 
					  SizeTable = (TokenNumber < PEI_LOCAL_TOKEN_NUMBER) ? mPcdDatabase->PeiDb.Init.SizeTable :
 | 
				
			||||||
                                                    gPcdDatabase->DxeDb.Init.SizeTable;
 | 
					                                                    mPcdDatabase->DxeDb.Init.SizeTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TokenNumber = (TokenNumber < PEI_LOCAL_TOKEN_NUMBER) ? TokenNumber : (TokenNumber - PEI_LOCAL_TOKEN_NUMBER);
 | 
					  TokenNumber = (TokenNumber < PEI_LOCAL_TOKEN_NUMBER) ? TokenNumber : (TokenNumber - PEI_LOCAL_TOKEN_NUMBER);
 | 
				
			||||||
@@ -209,7 +209,7 @@ UINT8
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGet8Ex (
 | 
					DxePcdGet8Ex (
 | 
				
			||||||
  IN CONST EFI_GUID         *Guid,
 | 
					  IN CONST EFI_GUID         *Guid,
 | 
				
			||||||
  IN UINTN                  ExTokenNumber
 | 
					  IN PCD_TOKEN_NUMBER      ExTokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return *((UINT8 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT8)));
 | 
					  return *((UINT8 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT8)));
 | 
				
			||||||
@@ -221,7 +221,7 @@ UINT16
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGet16Ex (
 | 
					DxePcdGet16Ex (
 | 
				
			||||||
  IN CONST EFI_GUID        *Guid,
 | 
					  IN CONST EFI_GUID        *Guid,
 | 
				
			||||||
  IN UINTN                 ExTokenNumber
 | 
					  IN PCD_TOKEN_NUMBER     ExTokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return *((UINT16 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT16)));
 | 
					  return *((UINT16 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT16)));
 | 
				
			||||||
@@ -233,7 +233,7 @@ UINT32
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGet32Ex (
 | 
					DxePcdGet32Ex (
 | 
				
			||||||
  IN CONST EFI_GUID        *Guid,
 | 
					  IN CONST EFI_GUID        *Guid,
 | 
				
			||||||
  IN UINTN                  ExTokenNumber
 | 
					  IN PCD_TOKEN_NUMBER      ExTokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return *((UINT32 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT32)));
 | 
					  return *((UINT32 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT32)));
 | 
				
			||||||
@@ -245,7 +245,7 @@ UINT64
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGet64Ex (
 | 
					DxePcdGet64Ex (
 | 
				
			||||||
  IN CONST EFI_GUID        *Guid,
 | 
					  IN CONST EFI_GUID        *Guid,
 | 
				
			||||||
  IN UINTN                  ExTokenNumber
 | 
					  IN PCD_TOKEN_NUMBER      ExTokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
@@ -260,7 +260,7 @@ VOID *
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGetPtrEx (
 | 
					DxePcdGetPtrEx (
 | 
				
			||||||
  IN CONST EFI_GUID        *Guid,
 | 
					  IN CONST EFI_GUID        *Guid,
 | 
				
			||||||
  IN UINTN                  ExTokenNumber
 | 
					  IN PCD_TOKEN_NUMBER      ExTokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return ExGetWorker (Guid, ExTokenNumber, 0);
 | 
					  return ExGetWorker (Guid, ExTokenNumber, 0);
 | 
				
			||||||
@@ -272,7 +272,7 @@ BOOLEAN
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGetBoolEx (
 | 
					DxePcdGetBoolEx (
 | 
				
			||||||
  IN CONST EFI_GUID        *Guid,
 | 
					  IN CONST EFI_GUID        *Guid,
 | 
				
			||||||
  IN UINTN                  ExTokenNumber
 | 
					  IN PCD_TOKEN_NUMBER      ExTokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return *((BOOLEAN *) ExGetWorker (Guid, ExTokenNumber, sizeof(BOOLEAN)));
 | 
					  return *((BOOLEAN *) ExGetWorker (Guid, ExTokenNumber, sizeof(BOOLEAN)));
 | 
				
			||||||
@@ -284,7 +284,7 @@ UINTN
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGetSizeEx (
 | 
					DxePcdGetSizeEx (
 | 
				
			||||||
  IN CONST EFI_GUID        *Guid,
 | 
					  IN CONST EFI_GUID        *Guid,
 | 
				
			||||||
  IN UINTN                  ExTokenNumber
 | 
					  IN PCD_TOKEN_NUMBER      ExTokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  EX_PCD_ENTRY_ATTRIBUTE    Attr;
 | 
					  EX_PCD_ENTRY_ATTRIBUTE    Attr;
 | 
				
			||||||
@@ -299,7 +299,7 @@ DxePcdGetSizeEx (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSet8 (
 | 
					DxePcdSet8 (
 | 
				
			||||||
  IN UINTN              TokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER   TokenNumber,
 | 
				
			||||||
  IN UINT8              Value
 | 
					  IN UINT8              Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -311,7 +311,7 @@ DxePcdSet8 (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSet16 (
 | 
					DxePcdSet16 (
 | 
				
			||||||
  IN UINTN              TokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER   TokenNumber,
 | 
				
			||||||
  IN UINT16             Value
 | 
					  IN UINT16             Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -323,7 +323,7 @@ DxePcdSet16 (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSet32 (
 | 
					DxePcdSet32 (
 | 
				
			||||||
  IN UINTN              TokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER   TokenNumber,
 | 
				
			||||||
  IN UINT32             Value
 | 
					  IN UINT32             Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -335,7 +335,7 @@ DxePcdSet32 (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSet64 (
 | 
					DxePcdSet64 (
 | 
				
			||||||
  IN UINTN              TokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER   TokenNumber,
 | 
				
			||||||
  IN UINT64             Value
 | 
					  IN UINT64             Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -347,7 +347,7 @@ DxePcdSet64 (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSetPtr (
 | 
					DxePcdSetPtr (
 | 
				
			||||||
  IN UINTN              TokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER   TokenNumber,
 | 
				
			||||||
  IN UINTN              SizeOfBuffer,
 | 
					  IN UINTN              SizeOfBuffer,
 | 
				
			||||||
  IN VOID               *Buffer
 | 
					  IN VOID               *Buffer
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
@@ -360,7 +360,7 @@ DxePcdSetPtr (
 | 
				
			|||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSetBool (
 | 
					DxePcdSetBool (
 | 
				
			||||||
  IN UINTN              TokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER   TokenNumber,
 | 
				
			||||||
  IN BOOLEAN            Value
 | 
					  IN BOOLEAN            Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -373,7 +373,7 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSet8Ex (
 | 
					DxePcdSet8Ex (
 | 
				
			||||||
  IN CONST EFI_GUID         *Guid,
 | 
					  IN CONST EFI_GUID         *Guid,
 | 
				
			||||||
  IN UINTN                  ExTokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER       ExTokenNumber,
 | 
				
			||||||
  IN UINT8                  Value
 | 
					  IN UINT8                  Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -392,7 +392,7 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSet16Ex (
 | 
					DxePcdSet16Ex (
 | 
				
			||||||
  IN CONST EFI_GUID    *Guid,
 | 
					  IN CONST EFI_GUID    *Guid,
 | 
				
			||||||
  IN UINTN  ExTokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER  ExTokenNumber,
 | 
				
			||||||
  IN UINT16            Value
 | 
					  IN UINT16            Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -411,7 +411,7 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSet32Ex (
 | 
					DxePcdSet32Ex (
 | 
				
			||||||
  IN CONST EFI_GUID     *Guid,
 | 
					  IN CONST EFI_GUID     *Guid,
 | 
				
			||||||
  IN UINTN  ExTokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER   ExTokenNumber,
 | 
				
			||||||
  IN UINT32             Value
 | 
					  IN UINT32             Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -430,7 +430,7 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSet64Ex (
 | 
					DxePcdSet64Ex (
 | 
				
			||||||
  IN CONST EFI_GUID    *Guid,
 | 
					  IN CONST EFI_GUID    *Guid,
 | 
				
			||||||
  IN UINTN  ExTokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER  ExTokenNumber,
 | 
				
			||||||
  IN UINT64            Value
 | 
					  IN UINT64            Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -449,7 +449,7 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSetPtrEx (
 | 
					DxePcdSetPtrEx (
 | 
				
			||||||
  IN CONST EFI_GUID         *Guid,
 | 
					  IN CONST EFI_GUID         *Guid,
 | 
				
			||||||
  IN UINTN                  ExTokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER       ExTokenNumber,
 | 
				
			||||||
  IN UINTN                  SizeOfBuffer,
 | 
					  IN UINTN                  SizeOfBuffer,
 | 
				
			||||||
  IN VOID                   *Buffer
 | 
					  IN VOID                   *Buffer
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
@@ -469,7 +469,7 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdSetBoolEx (
 | 
					DxePcdSetBoolEx (
 | 
				
			||||||
  IN CONST EFI_GUID    *Guid,
 | 
					  IN CONST EFI_GUID    *Guid,
 | 
				
			||||||
  IN UINTN  ExTokenNumber,
 | 
					  IN PCD_TOKEN_NUMBER  ExTokenNumber,
 | 
				
			||||||
  IN BOOLEAN           Value
 | 
					  IN BOOLEAN           Value
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -487,26 +487,30 @@ DxePcdSetBoolEx (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
PcdRegisterCallBackOnSet (
 | 
					DxeRegisterCallBackOnSet (
 | 
				
			||||||
  IN  UINTN        TokenNumber,
 | 
					  IN  PCD_TOKEN_NUMBER        TokenNumber,
 | 
				
			||||||
  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
					  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
				
			||||||
  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
					  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return DxeRegisterCallBackWorker (TokenNumber, Guid, CallBackFunction, TRUE);
 | 
					  ASSERT (CallBackFunction != NULL);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  return DxeRegisterCallBackWorker (TokenNumber, Guid, CallBackFunction);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
PcdUnRegisterCallBackOnSet (
 | 
					DxeUnRegisterCallBackOnSet (
 | 
				
			||||||
  IN  UINTN        TokenNumber,
 | 
					  IN  PCD_TOKEN_NUMBER        TokenNumber,
 | 
				
			||||||
  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
					  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
				
			||||||
  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
					  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return DxeRegisterCallBackWorker (TokenNumber, Guid, CallBackFunction, FALSE);
 | 
					  ASSERT (CallBackFunction != NULL);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  return DxeRegisterCallBackWorker (TokenNumber, Guid, CallBackFunction);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -515,9 +519,64 @@ EFI_STATUS
 | 
				
			|||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
DxePcdGetNextToken (
 | 
					DxePcdGetNextToken (
 | 
				
			||||||
  IN CONST EFI_GUID         *Guid, OPTIONAL
 | 
					  IN CONST EFI_GUID         *Guid, OPTIONAL
 | 
				
			||||||
  IN OUT  UINTN    *TokenNumber
 | 
					  IN OUT   PCD_TOKEN_NUMBER *TokenNumber
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  return DxeGetNextTokenWorker (TokenNumber, Guid);
 | 
					  PCD_TOKEN_NUMBER    ExTokenNumber;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Scan the local token space
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  if (Guid == NULL) {
 | 
				
			||||||
 | 
					    *TokenNumber++;
 | 
				
			||||||
 | 
					    if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {
 | 
				
			||||||
 | 
					      return EFI_SUCCESS;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      if (*TokenNumber >= PEI_NEX_TOKEN_NUMBER &&
 | 
				
			||||||
 | 
					          *TokenNumber < PEI_LOCAL_TOKEN_NUMBER) {
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        // The first Non-Ex type Token Number for DXE PCD 
 | 
				
			||||||
 | 
					        // database is PEI_LOCAL_TOKEN_NUMBER
 | 
				
			||||||
 | 
					        //
 | 
				
			||||||
 | 
					        *TokenNumber = PEI_LOCAL_TOKEN_NUMBER;
 | 
				
			||||||
 | 
					        return EFI_SUCCESS;
 | 
				
			||||||
 | 
					      } else if (*TokenNumber >= DXE_NEX_TOKEN_NUMBER + PEI_LOCAL_TOKEN_NUMBER) {
 | 
				
			||||||
 | 
					        *TokenNumber = PCD_INVALID_TOKEN_NUMBER;
 | 
				
			||||||
 | 
					        return EFI_SUCCESS;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (PEI_EXMAP_TABLE_EMPTY && PEI_EXMAP_TABLE_EMPTY) {
 | 
				
			||||||
 | 
					    *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;
 | 
				
			||||||
 | 
					    return EFI_NOT_FOUND;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ExTokenNumber = *TokenNumber;
 | 
				
			||||||
 | 
					  if (!PEI_EXMAP_TABLE_EMPTY) {
 | 
				
			||||||
 | 
					    ExTokenNumber = ExGetNextTokeNumber (
 | 
				
			||||||
 | 
					                        Guid,
 | 
				
			||||||
 | 
					                        ExTokenNumber,
 | 
				
			||||||
 | 
					                        mPcdDatabase->PeiDb.Init.GuidTable,
 | 
				
			||||||
 | 
					                        sizeof(mPcdDatabase->PeiDb.Init.GuidTable),
 | 
				
			||||||
 | 
					                        mPcdDatabase->PeiDb.Init.ExMapTable,
 | 
				
			||||||
 | 
					                        sizeof(mPcdDatabase->PeiDb.Init.ExMapTable)
 | 
				
			||||||
 | 
					                        );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!DXE_EXMAP_TABLE_EMPTY) {
 | 
				
			||||||
 | 
					    ExTokenNumber = ExGetNextTokeNumber (
 | 
				
			||||||
 | 
					                        Guid,
 | 
				
			||||||
 | 
					                        ExTokenNumber,
 | 
				
			||||||
 | 
					                        mPcdDatabase->PeiDb.Init.GuidTable,
 | 
				
			||||||
 | 
					                        sizeof(mPcdDatabase->PeiDb.Init.GuidTable),
 | 
				
			||||||
 | 
					                        mPcdDatabase->PeiDb.Init.ExMapTable,
 | 
				
			||||||
 | 
					                        sizeof(mPcdDatabase->PeiDb.Init.ExMapTable)
 | 
				
			||||||
 | 
					                        );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *TokenNumber = ExTokenNumber;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,13 +22,9 @@ Module Name: Service.c
 | 
				
			|||||||
// Compression Algorithm will take care of the size optimization.
 | 
					// Compression Algorithm will take care of the size optimization.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					PCD_DATABASE * mPcdDatabase;
 | 
				
			||||||
DXE_PCD_DATABASE_INIT gDXEPcdDbInit = {
 | 
					 | 
				
			||||||
  DXE_PCD_DB_INIT_VALUE
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
PCD_DATABASE * gPcdDatabase;
 | 
					LIST_ENTRY mCallbackFnTable[PCD_TOTAL_TOKEN_NUMBER];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VOID *
 | 
					VOID *
 | 
				
			||||||
GetWorkerByLocalTokenNumber (
 | 
					GetWorkerByLocalTokenNumber (
 | 
				
			||||||
@@ -54,9 +50,9 @@ GetWorkerByLocalTokenNumber (
 | 
				
			|||||||
    LocalTokenNumber = GetSkuEnabledTokenNumber (LocalTokenNumber & ~PCD_TYPE_SKU_ENABLED, Size, IsPeiDb);
 | 
					    LocalTokenNumber = GetSkuEnabledTokenNumber (LocalTokenNumber & ~PCD_TYPE_SKU_ENABLED, Size, IsPeiDb);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  PcdDb = IsPeiDb ? ((UINT8 *) &gPcdDatabase->PeiDb) : ((UINT8 *) &gPcdDatabase->DxeDb);
 | 
					  PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);
 | 
				
			||||||
  StringTable = IsPeiDb ? gPcdDatabase->PeiDb.Init.StringTable :
 | 
					  StringTable = IsPeiDb ? mPcdDatabase->PeiDb.Init.StringTable :
 | 
				
			||||||
                          gPcdDatabase->DxeDb.Init.StringTable;
 | 
					                          mPcdDatabase->DxeDb.Init.StringTable;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  Offset     = LocalTokenNumber & PCD_DATABASE_OFFSET_MASK;
 | 
					  Offset     = LocalTokenNumber & PCD_DATABASE_OFFSET_MASK;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
@@ -66,8 +62,8 @@ GetWorkerByLocalTokenNumber (
 | 
				
			|||||||
      return (VOID *) (FixedPcdGet32(PcdVpdBaseAddress) + VpdHead->Offset);
 | 
					      return (VOID *) (FixedPcdGet32(PcdVpdBaseAddress) + VpdHead->Offset);
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
    case PCD_TYPE_HII:
 | 
					    case PCD_TYPE_HII:
 | 
				
			||||||
      GuidTable   = IsPeiDb ? gPcdDatabase->PeiDb.Init.GuidTable :
 | 
					      GuidTable   = IsPeiDb ? mPcdDatabase->PeiDb.Init.GuidTable :
 | 
				
			||||||
                              gPcdDatabase->DxeDb.Init.GuidTable;
 | 
					                              mPcdDatabase->DxeDb.Init.GuidTable;
 | 
				
			||||||
                              
 | 
					                              
 | 
				
			||||||
      VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);
 | 
					      VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
@@ -112,11 +108,11 @@ GetWorker (
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
  IsPeiDb = (TokenNumber <= PEI_LOCAL_TOKEN_NUMBER) ? TRUE : FALSE;
 | 
					  IsPeiDb = (TokenNumber <= PEI_LOCAL_TOKEN_NUMBER) ? TRUE : FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LocalTokenNumberTable  = IsPeiDb ? gPcdDatabase->PeiDb.Init.LocalTokenNumberTable : 
 | 
					  LocalTokenNumberTable  = IsPeiDb ? mPcdDatabase->PeiDb.Init.LocalTokenNumberTable : 
 | 
				
			||||||
                                     gPcdDatabase->DxeDb.Init.LocalTokenNumberTable;
 | 
					                                     mPcdDatabase->DxeDb.Init.LocalTokenNumberTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SizeTable              = IsPeiDb ? gPcdDatabase->PeiDb.Init.SizeTable: 
 | 
					  SizeTable              = IsPeiDb ? mPcdDatabase->PeiDb.Init.SizeTable: 
 | 
				
			||||||
                                     gPcdDatabase->DxeDb.Init.SizeTable;
 | 
					                                     mPcdDatabase->DxeDb.Init.SizeTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TokenNumber            = IsPeiDb ? TokenNumber :
 | 
					  TokenNumber            = IsPeiDb ? TokenNumber :
 | 
				
			||||||
                                     TokenNumber - PEI_LOCAL_TOKEN_NUMBER;
 | 
					                                     TokenNumber - PEI_LOCAL_TOKEN_NUMBER;
 | 
				
			||||||
@@ -129,23 +125,150 @@ EFI_STATUS
 | 
				
			|||||||
DxeRegisterCallBackWorker (
 | 
					DxeRegisterCallBackWorker (
 | 
				
			||||||
  IN  UINTN                   TokenNumber,
 | 
					  IN  UINTN                   TokenNumber,
 | 
				
			||||||
  IN  CONST GUID              *Guid, OPTIONAL
 | 
					  IN  CONST GUID              *Guid, OPTIONAL
 | 
				
			||||||
  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction,
 | 
					  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
				
			||||||
  IN  BOOLEAN                 Register
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  CALLBACK_FN_ENTRY       *FnTableEntry;
 | 
				
			||||||
 | 
					  EX_PCD_ENTRY_ATTRIBUTE  ExAttr;
 | 
				
			||||||
 | 
					  LIST_ENTRY              *ListHead;
 | 
				
			||||||
 | 
					  LIST_ENTRY              *ListNode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (Guid != NULL) {
 | 
				
			||||||
 | 
					    GetExPcdTokenAttributes (Guid, TokenNumber, &ExAttr);
 | 
				
			||||||
 | 
					    TokenNumber = ExAttr.LocalTokenNumberAlias;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ListHead = &mCallbackFnTable[TokenNumber];
 | 
				
			||||||
 | 
					  ListNode = GetFirstNode (ListHead);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while (ListNode != ListHead) {
 | 
				
			||||||
 | 
					    FnTableEntry = CR_FNENTRY_FROM_LISTNODE(ListNode, CALLBACK_FN_ENTRY, Node);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (FnTableEntry->CallbackFn == CallBackFunction) {
 | 
				
			||||||
 | 
					      //
 | 
				
			||||||
 | 
					      // We only allow a Callback function to be register once
 | 
				
			||||||
 | 
					      // for a TokenNumber. So just return EFI_SUCCESS
 | 
				
			||||||
 | 
					      //
 | 
				
			||||||
 | 
					      return EFI_SUCCESS;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    ListNode = GetNextNode (ListHead, ListNode);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  FnTableEntry = AllocatePool (sizeof(CALLBACK_FN_ENTRY));
 | 
				
			||||||
 | 
					  ASSERT (FnTableEntry != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  FnTableEntry->CallbackFn = CallBackFunction;
 | 
				
			||||||
 | 
					  InsertTailList (ListHead, &FnTableEntry->Node);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  return EFI_SUCCESS;
 | 
					  return EFI_SUCCESS;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
DxeGetNextTokenWorker (
 | 
					DxeUnRegisterCallBackWorker (
 | 
				
			||||||
  IN OUT UINTN            *TokenNumber,
 | 
					  IN  UINTN                   TokenNumber,
 | 
				
			||||||
  IN CONST GUID           *Guid     OPTIONAL
 | 
					  IN  CONST GUID              *Guid, OPTIONAL
 | 
				
			||||||
 | 
					  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  CALLBACK_FN_ENTRY       *FnTableEntry;
 | 
				
			||||||
 | 
					  EX_PCD_ENTRY_ATTRIBUTE  ExAttr;
 | 
				
			||||||
 | 
					  LIST_ENTRY              *ListHead;
 | 
				
			||||||
 | 
					  LIST_ENTRY              *ListNode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (Guid != NULL) {
 | 
				
			||||||
 | 
					    GetExPcdTokenAttributes (Guid, TokenNumber, &ExAttr);
 | 
				
			||||||
 | 
					    TokenNumber = ExAttr.LocalTokenNumberAlias;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ListHead = &mCallbackFnTable[TokenNumber];
 | 
				
			||||||
 | 
					  ListNode = GetFirstNode (ListHead);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while (ListNode != ListHead) {
 | 
				
			||||||
 | 
					    FnTableEntry = CR_FNENTRY_FROM_LISTNODE(ListNode, CALLBACK_FN_ENTRY, Node);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (FnTableEntry->CallbackFn == CallBackFunction) {
 | 
				
			||||||
 | 
					      //
 | 
				
			||||||
 | 
					      // We only allow a Callback function to be register once
 | 
				
			||||||
 | 
					      // for a TokenNumber. So we can safely remove the Node from
 | 
				
			||||||
 | 
					      // the Link List and return EFI_SUCCESS.
 | 
				
			||||||
 | 
					      //
 | 
				
			||||||
 | 
					      RemoveEntryList (ListNode);
 | 
				
			||||||
 | 
					      FreePool (FnTableEntry);
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
      return EFI_SUCCESS;
 | 
					      return EFI_SUCCESS;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    ListNode = GetNextNode (ListHead, ListNode);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return EFI_INVALID_PARAMETER;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  EFI_GUID         *MatchGuid;
 | 
				
			||||||
 | 
					  UINTN            Idx;
 | 
				
			||||||
 | 
					  UINTN            GuidTableIdx;
 | 
				
			||||||
 | 
					  BOOLEAN          Found;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  MatchGuid = ScanGuid (GuidTable, SizeOfGuidTable, Guid);
 | 
				
			||||||
 | 
					  if (MatchGuid == NULL) {
 | 
				
			||||||
 | 
					    return PCD_INVALID_TOKEN_NUMBER;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Found = FALSE;
 | 
				
			||||||
 | 
					  GuidTableIdx = MatchGuid - GuidTable;
 | 
				
			||||||
 | 
					  for (Idx = 0; Idx < SizeOfExMapTable; Idx++) {
 | 
				
			||||||
 | 
					    if (ExMapTable[Idx].ExGuidIndex == GuidTableIdx) {
 | 
				
			||||||
 | 
					      Found = TRUE;
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (Found) {
 | 
				
			||||||
 | 
					    if (TokenNumber == PCD_INVALID_TOKEN_NUMBER) {
 | 
				
			||||||
 | 
					      return ExMapTable[Idx].ExTokenNumber;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    for ( ; Idx < SizeOfExMapTable; Idx++) {
 | 
				
			||||||
 | 
					      if (ExMapTable[Idx].ExTokenNumber == TokenNumber) {
 | 
				
			||||||
 | 
					        Idx++;
 | 
				
			||||||
 | 
					        if (Idx == SizeOfExMapTable) {
 | 
				
			||||||
 | 
					          //
 | 
				
			||||||
 | 
					          // Exceed the length of ExMap Table
 | 
				
			||||||
 | 
					          //
 | 
				
			||||||
 | 
					          return PCD_INVALID_TOKEN_NUMBER;
 | 
				
			||||||
 | 
					        } else if (ExMapTable[Idx].ExGuidIndex == GuidTableIdx) {
 | 
				
			||||||
 | 
					          //
 | 
				
			||||||
 | 
					          // Found the next match
 | 
				
			||||||
 | 
					          //
 | 
				
			||||||
 | 
					          return ExMapTable[Idx].ExTokenNumber;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          //
 | 
				
			||||||
 | 
					          // Guid has been changed. It is the next Token Space Guid.
 | 
				
			||||||
 | 
					          // We should flag no more TokenNumber.
 | 
				
			||||||
 | 
					          //
 | 
				
			||||||
 | 
					          return PCD_INVALID_TOKEN_NUMBER;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  return PCD_INVALID_TOKEN_NUMBER;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -156,9 +279,10 @@ BuildPcdDxeDataBase (
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  PEI_PCD_DATABASE    *PeiDatabase;
 | 
					  PEI_PCD_DATABASE    *PeiDatabase;
 | 
				
			||||||
  EFI_HOB_GUID_TYPE   *GuidHob;
 | 
					  EFI_HOB_GUID_TYPE   *GuidHob;
 | 
				
			||||||
 | 
					  UINTN               Idx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  gPcdDatabase = AllocateZeroPool (sizeof(PCD_DATABASE));
 | 
					  mPcdDatabase = AllocateZeroPool (sizeof(PCD_DATABASE));
 | 
				
			||||||
  ASSERT (gPcdDatabase != NULL);
 | 
					  ASSERT (mPcdDatabase != NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GuidHob = GetFirstGuidHob (&gPcdDataBaseHobGuid);
 | 
					  GuidHob = GetFirstGuidHob (&gPcdDataBaseHobGuid);
 | 
				
			||||||
  ASSERT (GuidHob != NULL);
 | 
					  ASSERT (GuidHob != NULL);
 | 
				
			||||||
@@ -167,12 +291,20 @@ BuildPcdDxeDataBase (
 | 
				
			|||||||
  //
 | 
					  //
 | 
				
			||||||
  // Copy PCD Entries refereneced in PEI phase to PCD DATABASE
 | 
					  // Copy PCD Entries refereneced in PEI phase to PCD DATABASE
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  CopyMem (&gPcdDatabase->PeiDb, PeiDatabase, sizeof (PEI_PCD_DATABASE));
 | 
					  CopyMem (&mPcdDatabase->PeiDb, PeiDatabase, sizeof (PEI_PCD_DATABASE));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  // Copy PCD Entries with default value to PCD DATABASE
 | 
					  // Copy PCD Entries with default value to PCD DATABASE
 | 
				
			||||||
  //
 | 
					  //
 | 
				
			||||||
  CopyMem (&gPcdDatabase->DxeDb.Init, &gDXEPcdDbInit, sizeof(DXE_PCD_DATABASE_INIT));
 | 
					  CopyMem (&mPcdDatabase->DxeDb.Init, &gDXEPcdDbInit, sizeof(DXE_PCD_DATABASE_INIT));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Initialized the Callback Function Table
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  for (Idx = 0; Idx < PCD_TOTAL_TOKEN_NUMBER; Idx++) {
 | 
				
			||||||
 | 
					    InitializeListHead (&mCallbackFnTable[Idx]);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
  return;
 | 
					  return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -233,18 +365,18 @@ GetSkuEnabledTokenNumber (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  ASSERT ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == 0);
 | 
					  ASSERT ((LocalTokenNumber & PCD_TYPE_SKU_ENABLED) == 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  PcdDb = IsPeiDb ? (UINT8 *) &gPcdDatabase->PeiDb : (UINT8 *) &gPcdDatabase->DxeDb;
 | 
					  PcdDb = IsPeiDb ? (UINT8 *) &mPcdDatabase->PeiDb : (UINT8 *) &mPcdDatabase->DxeDb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SkuHead     = (SKU_HEAD *) (PcdDb + (LocalTokenNumber & PCD_DATABASE_OFFSET_MASK));
 | 
					  SkuHead     = (SKU_HEAD *) (PcdDb + (LocalTokenNumber & PCD_DATABASE_OFFSET_MASK));
 | 
				
			||||||
  Value       = (UINT8 *) (PcdDb + SkuHead->SkuDataStartOffset); 
 | 
					  Value       = (UINT8 *) (PcdDb + SkuHead->SkuDataStartOffset); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  PhaseSkuIdTable = IsPeiDb ? gPcdDatabase->PeiDb.Init.SkuIdTable :
 | 
					  PhaseSkuIdTable = IsPeiDb ? mPcdDatabase->PeiDb.Init.SkuIdTable :
 | 
				
			||||||
                              gPcdDatabase->DxeDb.Init.SkuIdTable;
 | 
					                              mPcdDatabase->DxeDb.Init.SkuIdTable;
 | 
				
			||||||
                              
 | 
					                              
 | 
				
			||||||
  SkuIdTable  = &PhaseSkuIdTable[SkuHead->SkuIdTableOffset];
 | 
					  SkuIdTable  = &PhaseSkuIdTable[SkuHead->SkuIdTableOffset];
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
  for (i = 0; i < SkuIdTable[0]; i++) {
 | 
					  for (i = 0; i < SkuIdTable[0]; i++) {
 | 
				
			||||||
    if (gPcdDatabase->PeiDb.Init.SystemSkuId == SkuIdTable[i + 1]) {
 | 
					    if (mPcdDatabase->PeiDb.Init.SystemSkuId == SkuIdTable[i + 1]) {
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -286,6 +418,24 @@ InvokeCallbackOnSet (
 | 
				
			|||||||
  UINTN             Size
 | 
					  UINTN             Size
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  CALLBACK_FN_ENTRY       *FnTableEntry;
 | 
				
			||||||
 | 
					  LIST_ENTRY              *ListHead;
 | 
				
			||||||
 | 
					  LIST_ENTRY              *ListNode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ListHead = &mCallbackFnTable[TokenNumber];
 | 
				
			||||||
 | 
					  ListNode = GetFirstNode (ListHead);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while (ListNode != ListHead) {
 | 
				
			||||||
 | 
					    FnTableEntry = CR_FNENTRY_FROM_LISTNODE(ListNode, CALLBACK_FN_ENTRY, Node);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    FnTableEntry->CallbackFn(Guid, 
 | 
				
			||||||
 | 
					                    (Guid == NULL) ? TokenNumber : ExTokenNumber,
 | 
				
			||||||
 | 
					                    Data,
 | 
				
			||||||
 | 
					                    Size);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    ListNode = GetNextNode (ListHead, ListNode);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  return;
 | 
					  return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -314,8 +464,8 @@ SetWorker (
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
  IsPeiDb = (TokenNumber <= PEI_LOCAL_TOKEN_NUMBER) ? TRUE : FALSE;
 | 
					  IsPeiDb = (TokenNumber <= PEI_LOCAL_TOKEN_NUMBER) ? TRUE : FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LocalTokenNumberTable  = IsPeiDb ? gPcdDatabase->PeiDb.Init.LocalTokenNumberTable : 
 | 
					  LocalTokenNumberTable  = IsPeiDb ? mPcdDatabase->PeiDb.Init.LocalTokenNumberTable : 
 | 
				
			||||||
                                     gPcdDatabase->DxeDb.Init.LocalTokenNumberTable;
 | 
					                                     mPcdDatabase->DxeDb.Init.LocalTokenNumberTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TokenNumber = IsPeiDb ? TokenNumber
 | 
					  TokenNumber = IsPeiDb ? TokenNumber
 | 
				
			||||||
                        : TokenNumber - PEI_LOCAL_TOKEN_NUMBER;
 | 
					                        : TokenNumber - PEI_LOCAL_TOKEN_NUMBER;
 | 
				
			||||||
@@ -406,10 +556,10 @@ SetWorkerByLocalTokenNumber (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  Offset = LocalTokenNumber & PCD_DATABASE_OFFSET_MASK;
 | 
					  Offset = LocalTokenNumber & PCD_DATABASE_OFFSET_MASK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  PcdDb = IsPeiDb ? ((UINT8 *) &gPcdDatabase->PeiDb) : ((UINT8 *) &gPcdDatabase->DxeDb);
 | 
					  PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  StringTable = IsPeiDb ? gPcdDatabase->PeiDb.Init.StringTable :
 | 
					  StringTable = IsPeiDb ? mPcdDatabase->PeiDb.Init.StringTable :
 | 
				
			||||||
                          gPcdDatabase->DxeDb.Init.StringTable;
 | 
					                          mPcdDatabase->DxeDb.Init.StringTable;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  InternalData = PcdDb + Offset;
 | 
					  InternalData = PcdDb + Offset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -426,8 +576,8 @@ SetWorkerByLocalTokenNumber (
 | 
				
			|||||||
      //
 | 
					      //
 | 
				
			||||||
      // Bug Bug: Please implement this
 | 
					      // Bug Bug: Please implement this
 | 
				
			||||||
      //
 | 
					      //
 | 
				
			||||||
      GuidTable   = IsPeiDb ? gPcdDatabase->PeiDb.Init.GuidTable :
 | 
					      GuidTable   = IsPeiDb ? mPcdDatabase->PeiDb.Init.GuidTable :
 | 
				
			||||||
                              gPcdDatabase->DxeDb.Init.GuidTable;
 | 
					                              mPcdDatabase->DxeDb.Init.GuidTable;
 | 
				
			||||||
                              
 | 
					                              
 | 
				
			||||||
      VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);
 | 
					      VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
@@ -542,9 +692,9 @@ GetExPcdTokenAttributes (
 | 
				
			|||||||
  EFI_GUID            *GuidTable;
 | 
					  EFI_GUID            *GuidTable;
 | 
				
			||||||
  UINT16              *SizeTable;
 | 
					  UINT16              *SizeTable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ExMap       = gPcdDatabase->PeiDb.Init.ExMapTable;
 | 
					  ExMap       = mPcdDatabase->PeiDb.Init.ExMapTable;
 | 
				
			||||||
  GuidTable   = gPcdDatabase->PeiDb.Init.GuidTable;
 | 
					  GuidTable   = mPcdDatabase->PeiDb.Init.GuidTable;
 | 
				
			||||||
  SizeTable   = gPcdDatabase->PeiDb.Init.SizeTable;
 | 
					  SizeTable   = mPcdDatabase->PeiDb.Init.SizeTable;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
 | 
					  for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
 | 
				
			||||||
    if ((ExTokenNumber == ExMap[i].ExTokenNumber) &&
 | 
					    if ((ExTokenNumber == ExMap[i].ExTokenNumber) &&
 | 
				
			||||||
@@ -560,9 +710,9 @@ GetExPcdTokenAttributes (
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  ExMap       = gPcdDatabase->DxeDb.Init.ExMapTable;
 | 
					  ExMap       = mPcdDatabase->DxeDb.Init.ExMapTable;
 | 
				
			||||||
  GuidTable   = gPcdDatabase->DxeDb.Init.GuidTable;
 | 
					  GuidTable   = mPcdDatabase->DxeDb.Init.GuidTable;
 | 
				
			||||||
  SizeTable   = gPcdDatabase->DxeDb.Init.SizeTable;
 | 
					  SizeTable   = mPcdDatabase->DxeDb.Init.SizeTable;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  for (i = 0; i < DXE_EXMAPPING_TABLE_SIZE; i++) {
 | 
					  for (i = 0; i < DXE_EXMAPPING_TABLE_SIZE; i++) {
 | 
				
			||||||
    if ((ExTokenNumber == ExMap[i].ExTokenNumber) &&
 | 
					    if ((ExTokenNumber == ExMap[i].ExTokenNumber) &&
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,6 +32,14 @@ Module Name: Service.h
 | 
				
			|||||||
  #error "Please make sure the version of PCD Service DXE Driver and PCD DXE Database Generation Tool matches"
 | 
					  #error "Please make sure the version of PCD Service DXE Driver and PCD DXE Database Generation Tool matches"
 | 
				
			||||||
#endif
 | 
					#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
 | 
					// Internal Functions
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -91,14 +99,14 @@ EFI_STATUS
 | 
				
			|||||||
DxeRegisterCallBackWorker (
 | 
					DxeRegisterCallBackWorker (
 | 
				
			||||||
  IN  UINTN                   TokenNumber,
 | 
					  IN  UINTN                   TokenNumber,
 | 
				
			||||||
  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
					  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
				
			||||||
  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction,
 | 
					  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
				
			||||||
  IN  BOOLEAN                 Reigster
 | 
					 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
DxeGetNextTokenWorker (
 | 
					DxeUnRegisterCallBackWorker (
 | 
				
			||||||
  IN OUT UINTN *Token,
 | 
					  IN  UINTN                   TokenNumber,
 | 
				
			||||||
  IN CONST EFI_GUID           *Guid     OPTIONAL
 | 
					  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
				
			||||||
 | 
					  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VOID
 | 
					VOID
 | 
				
			||||||
@@ -373,7 +381,7 @@ DxePcdSetBoolEx (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
PcdRegisterCallBackOnSet (
 | 
					DxeRegisterCallBackOnSet (
 | 
				
			||||||
  IN  PCD_TOKEN_NUMBER        TokenNumber,
 | 
					  IN  PCD_TOKEN_NUMBER        TokenNumber,
 | 
				
			||||||
  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
					  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
				
			||||||
  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
					  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
				
			||||||
@@ -383,7 +391,7 @@ PcdRegisterCallBackOnSet (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
PcdUnRegisterCallBackOnSet (
 | 
					DxeUnRegisterCallBackOnSet (
 | 
				
			||||||
  IN  PCD_TOKEN_NUMBER        TokenNumber,
 | 
					  IN  PCD_TOKEN_NUMBER        TokenNumber,
 | 
				
			||||||
  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
					  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
				
			||||||
  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
					  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
 | 
				
			||||||
@@ -409,9 +417,20 @@ SetWorkerByLocalTokenNumber (
 | 
				
			|||||||
  )
 | 
					  )
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					  )
 | 
				
			||||||
 | 
					;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern EFI_GUID gPcdDataBaseHobGuid;
 | 
					extern EFI_GUID gPcdDataBaseHobGuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern PCD_DATABASE * gPcdDatabase;
 | 
					extern PCD_DATABASE * mPcdDatabase;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern DXE_PCD_DATABASE_INIT gDXEPcdDbInit;
 | 
					extern DXE_PCD_DATABASE_INIT gDXEPcdDbInit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@ PCD_PPI mPcdPpiInstance = {
 | 
				
			|||||||
  PeiPcdSetPtrEx,         
 | 
					  PeiPcdSetPtrEx,         
 | 
				
			||||||
  PeiPcdSetBoolEx,
 | 
					  PeiPcdSetBoolEx,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  PcdRegisterCallBackOnSet,
 | 
					  PeiRegisterCallBackOnSet,
 | 
				
			||||||
  PcdUnRegisterCallBackOnSet,
 | 
					  PcdUnRegisterCallBackOnSet,
 | 
				
			||||||
  PeiPcdGetNextToken
 | 
					  PeiPcdGetNextToken
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -454,12 +454,14 @@ PeiPcdSetBoolEx (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
PcdRegisterCallBackOnSet (
 | 
					PeiRegisterCallBackOnSet (
 | 
				
			||||||
  IN  PCD_TOKEN_NUMBER            ExTokenNumber,
 | 
					  IN  PCD_TOKEN_NUMBER            ExTokenNumber,
 | 
				
			||||||
  IN  CONST EFI_GUID              *Guid, OPTIONAL
 | 
					  IN  CONST EFI_GUID              *Guid, OPTIONAL
 | 
				
			||||||
  IN  PCD_PPI_CALLBACK            CallBackFunction
 | 
					  IN  PCD_PPI_CALLBACK            CallBackFunction
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  ASSERT (CallBackFunction != NULL);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, TRUE);
 | 
					  return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, TRUE);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -473,6 +475,8 @@ PcdUnRegisterCallBackOnSet (
 | 
				
			|||||||
  IN  PCD_PPI_CALLBACK            CallBackFunction
 | 
					  IN  PCD_PPI_CALLBACK            CallBackFunction
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  ASSERT (CallBackFunction != NULL);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, FALSE);
 | 
					  return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, FALSE);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -358,7 +358,7 @@ PeiPcdSetBoolEx (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
EFI_STATUS
 | 
					EFI_STATUS
 | 
				
			||||||
EFIAPI
 | 
					EFIAPI
 | 
				
			||||||
PcdRegisterCallBackOnSet (
 | 
					PeiRegisterCallBackOnSet (
 | 
				
			||||||
  IN  PCD_TOKEN_NUMBER        TokenNumber,
 | 
					  IN  PCD_TOKEN_NUMBER        TokenNumber,
 | 
				
			||||||
  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
					  IN  CONST EFI_GUID          *Guid, OPTIONAL
 | 
				
			||||||
  IN  PCD_PPI_CALLBACK        CallBackFunction
 | 
					  IN  PCD_PPI_CALLBACK        CallBackFunction
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -711,7 +711,7 @@ class PcdDatabase {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private void getTwoGroupsOfTokens (ArrayList<Token> alTokens, List<Token> initTokens, List<Token> uninitTokens) {
 | 
					    private void getTwoGroupsOfTokens (ArrayList<Token> alTokens, List<Token> initTokens, List<Token> uninitTokens) {
 | 
				
			||||||
        for (int i = 0; i < alTokens.size(); i++) {
 | 
					        for (int i = 0; i < alTokens.size(); i++) {
 | 
				
			||||||
            Token t = (Token)alTokens.get(i);
 | 
					            Token t = alTokens.get(i);
 | 
				
			||||||
            if (t.hasDefaultValue()) {
 | 
					            if (t.hasDefaultValue()) {
 | 
				
			||||||
                initTokens.add(t);
 | 
					                initTokens.add(t);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
@@ -789,16 +789,14 @@ class PcdDatabase {
 | 
				
			|||||||
        // PEI_PCD_DATABASE_INIT
 | 
					        // PEI_PCD_DATABASE_INIT
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        java.util.Comparator<Token> comparator = new AlignmentSizeComp();
 | 
					        java.util.Comparator<Token> comparator = new AlignmentSizeComp();
 | 
				
			||||||
        List<Token> list = initTokens;
 | 
					        java.util.Collections.sort(initTokens, comparator);
 | 
				
			||||||
        java.util.Collections.sort(list, comparator);
 | 
					 | 
				
			||||||
        initCode = processTokens(initTokens);
 | 
					        initCode = processTokens(initTokens);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        // Generate Structure Declaration for PcdTokens without Default Value
 | 
					        // Generate Structure Declaration for PcdTokens without Default Value
 | 
				
			||||||
        // PEI_PCD_DATABASE_UNINIT
 | 
					        // PEI_PCD_DATABASE_UNINIT
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
        list = uninitTokens;
 | 
					        java.util.Collections.sort(uninitTokens, comparator);
 | 
				
			||||||
        java.util.Collections.sort(list, comparator);
 | 
					 | 
				
			||||||
        uninitCode = processTokens(uninitTokens);
 | 
					        uninitCode = processTokens(uninitTokens);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //
 | 
					        //
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user