PI 1.4a Vol3.\r
\r
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
///\r
/// PCD database lock.\r
///\r
-EFI_LOCK mPcdDatabaseLock = EFI_INITIALIZE_LOCK_VARIABLE(TPL_NOTIFY);\r
+EFI_LOCK mPcdDatabaseLock = EFI_INITIALIZE_LOCK_VARIABLE (TPL_NOTIFY);\r
\r
///\r
/// PCD_PROTOCOL the EDKII native implementation which support dynamic\r
/// type and dynamicEx type PCDs.\r
///\r
-PCD_PROTOCOL mPcdInstance = {\r
+PCD_PROTOCOL mPcdInstance = {\r
DxePcdSetSku,\r
\r
DxePcdGet8,\r
/// EFI_PCD_PROTOCOL is defined in PI 1.2 Vol 3 which only support dynamicEx type\r
/// PCD.\r
///\r
-EFI_PCD_PROTOCOL mEfiPcdInstance = {\r
+EFI_PCD_PROTOCOL mEfiPcdInstance = {\r
DxePcdSetSku,\r
DxePcdGet8Ex,\r
DxePcdGet16Ex,\r
DxePcdSet64Ex,\r
DxePcdSetPtrEx,\r
DxePcdSetBoolEx,\r
- (EFI_PCD_PROTOCOL_CALLBACK_ON_SET) DxeRegisterCallBackOnSet,\r
- (EFI_PCD_PROTOCOL_CANCEL_CALLBACK) DxeUnRegisterCallBackOnSet,\r
+ (EFI_PCD_PROTOCOL_CALLBACK_ON_SET)DxeRegisterCallBackOnSet,\r
+ (EFI_PCD_PROTOCOL_CANCEL_CALLBACK)DxeUnRegisterCallBackOnSet,\r
DxePcdGetNextToken,\r
DxePcdGetNextTokenSpace\r
};\r
/// Instance of GET_PCD_INFO_PROTOCOL protocol is EDKII native implementation.\r
/// This protocol instance support dynamic and dynamicEx type PCDs.\r
///\r
-GET_PCD_INFO_PROTOCOL mGetPcdInfoInstance = {\r
+GET_PCD_INFO_PROTOCOL mGetPcdInfoInstance = {\r
DxeGetPcdInfoGetInfo,\r
DxeGetPcdInfoGetInfoEx,\r
DxeGetPcdInfoGetSku\r
DxeGetPcdInfoGetSku\r
};\r
\r
-EFI_HANDLE mPcdHandle = NULL;\r
+EFI_HANDLE mPcdHandle = NULL;\r
+UINTN mVpdBaseAddress = 0;\r
\r
/**\r
Main entry for PCD DXE driver.\r
EFI_STATUS\r
EFIAPI\r
PcdDxeInit (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
- VOID *Registration;\r
+ EFI_STATUS Status;\r
+ VOID *Registration;\r
\r
//\r
// Make sure the Pcd Protocol is not already installed in the system\r
//\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&mPcdHandle,\r
- &gPcdProtocolGuid, &mPcdInstance,\r
- &gEfiPcdProtocolGuid, &mEfiPcdInstance,\r
+ &gPcdProtocolGuid,\r
+ &mPcdInstance,\r
+ &gEfiPcdProtocolGuid,\r
+ &mEfiPcdInstance,\r
NULL\r
);\r
ASSERT_EFI_ERROR (Status);\r
//\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&mPcdHandle,\r
- &gGetPcdInfoProtocolGuid, &mGetPcdInfoInstance,\r
- &gEfiGetPcdInfoProtocolGuid, &mEfiGetPcdInfoInstance,\r
+ &gGetPcdInfoProtocolGuid,\r
+ &mGetPcdInfoInstance,\r
+ &gEfiGetPcdInfoProtocolGuid,\r
+ &mEfiGetPcdInfoInstance,\r
NULL\r
);\r
ASSERT_EFI_ERROR (Status);\r
&Registration\r
);\r
\r
+ //\r
+ // Cache VpdBaseAddress in entry point for the following usage.\r
+ //\r
+\r
+ //\r
+ // PcdVpdBaseAddress64 is DynamicEx PCD only. So, DxePcdGet64Ex() is used to get its value.\r
+ //\r
+ mVpdBaseAddress = (UINTN)DxePcdGet64Ex (&gEfiMdeModulePkgTokenSpaceGuid, PcdToken (PcdVpdBaseAddress64));\r
+ if (mVpdBaseAddress == 0) {\r
+ //\r
+ // PcdVpdBaseAddress64 is not set, get value from PcdVpdBaseAddress.\r
+ //\r
+ mVpdBaseAddress = (UINTN)PcdGet32 (PcdVpdBaseAddress);\r
+ }\r
+\r
return Status;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
DxeGetPcdInfoGetInfo (\r
- IN UINTN TokenNumber,\r
- OUT EFI_PCD_INFO *PcdInfo\r
+ IN UINTN TokenNumber,\r
+ OUT EFI_PCD_INFO *PcdInfo\r
)\r
{\r
return DxeGetPcdInfo (NULL, TokenNumber, PcdInfo);\r
EFI_STATUS\r
EFIAPI\r
DxeGetPcdInfoGetInfoEx (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN TokenNumber,\r
- OUT EFI_PCD_INFO *PcdInfo\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN TokenNumber,\r
+ OUT EFI_PCD_INFO *PcdInfo\r
)\r
{\r
return DxeGetPcdInfo (Guid, TokenNumber, PcdInfo);\r
VOID\r
)\r
{\r
- return (UINTN) mPcdDatabase.DxeDb->SystemSkuId;\r
+ return (UINTN)mPcdDatabase.DxeDb->SystemSkuId;\r
}\r
\r
/**\r
VOID\r
EFIAPI\r
DxePcdSetSku (\r
- IN UINTN SkuId\r
+ IN UINTN SkuId\r
)\r
{\r
- SKU_ID *SkuIdTable;\r
- UINTN Index;\r
- EFI_STATUS Status;\r
+ SKU_ID *SkuIdTable;\r
+ UINTN Index;\r
+ EFI_STATUS Status;\r
\r
- DEBUG ((DEBUG_INFO, "PcdDxe - SkuId 0x%lx is to be set.\n", (SKU_ID) SkuId));\r
+ DEBUG ((DEBUG_INFO, "PcdDxe - SkuId 0x%lx is to be set.\n", (SKU_ID)SkuId));\r
\r
if (SkuId == mPcdDatabase.DxeDb->SystemSkuId) {\r
//\r
return;\r
}\r
\r
- if (mPcdDatabase.DxeDb->SystemSkuId != (SKU_ID) 0) {\r
+ if (mPcdDatabase.DxeDb->SystemSkuId != (SKU_ID)0) {\r
DEBUG ((DEBUG_ERROR, "PcdDxe - The SKU Id could be changed only once."));\r
DEBUG ((\r
DEBUG_ERROR,\r
"PcdDxe - The SKU Id was set to 0x%lx already, it could not be set to 0x%lx any more.",\r
mPcdDatabase.DxeDb->SystemSkuId,\r
- (SKU_ID) SkuId\r
+ (SKU_ID)SkuId\r
));\r
ASSERT (FALSE);\r
return;\r
}\r
\r
- SkuIdTable = (SKU_ID *) ((UINT8 *) mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->SkuIdTableOffset);\r
+ SkuIdTable = (SKU_ID *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->SkuIdTableOffset);\r
for (Index = 0; Index < SkuIdTable[0]; Index++) {\r
if (SkuId == SkuIdTable[Index + 1]) {\r
DEBUG ((DEBUG_INFO, "PcdDxe - SkuId is found in SkuId table.\n"));\r
Status = UpdatePcdDatabase (SkuId, TRUE);\r
if (!EFI_ERROR (Status)) {\r
- mPcdDatabase.DxeDb->SystemSkuId = (SKU_ID) SkuId;\r
- DEBUG ((DEBUG_INFO, "PcdDxe - Set current SKU Id to 0x%lx.\n", (SKU_ID) SkuId));\r
+ mPcdDatabase.DxeDb->SystemSkuId = (SKU_ID)SkuId;\r
+ DEBUG ((DEBUG_INFO, "PcdDxe - Set current SKU Id to 0x%lx.\n", (SKU_ID)SkuId));\r
return;\r
}\r
}\r
UINT8\r
EFIAPI\r
DxePcdGet8 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
{\r
- return *((UINT8 *) GetWorker (TokenNumber, sizeof (UINT8)));\r
+ return *((UINT8 *)GetWorker (TokenNumber, sizeof (UINT8)));\r
}\r
\r
/**\r
UINT16\r
EFIAPI\r
DxePcdGet16 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
{\r
return ReadUnaligned16 (GetWorker (TokenNumber, sizeof (UINT16)));\r
UINT32\r
EFIAPI\r
DxePcdGet32 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
{\r
return ReadUnaligned32 (GetWorker (TokenNumber, sizeof (UINT32)));\r
UINT64\r
EFIAPI\r
DxePcdGet64 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
{\r
- return ReadUnaligned64(GetWorker (TokenNumber, sizeof (UINT64)));\r
+ return ReadUnaligned64 (GetWorker (TokenNumber, sizeof (UINT64)));\r
}\r
\r
/**\r
VOID *\r
EFIAPI\r
DxePcdGetPtr (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
{\r
return GetWorker (TokenNumber, 0);\r
BOOLEAN\r
EFIAPI\r
DxePcdGetBool (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
{\r
- return *((BOOLEAN *) GetWorker (TokenNumber, sizeof (BOOLEAN)));\r
+ return *((BOOLEAN *)GetWorker (TokenNumber, sizeof (BOOLEAN)));\r
}\r
\r
/**\r
UINTN\r
EFIAPI\r
DxePcdGetSize (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
)\r
{\r
- UINTN Size;\r
- UINT32 *LocalTokenNumberTable;\r
- BOOLEAN IsPeiDb;\r
- UINTN MaxSize;\r
- UINTN TmpTokenNumber;\r
+ UINTN Size;\r
+ UINT32 *LocalTokenNumberTable;\r
+ BOOLEAN IsPeiDb;\r
+ UINTN MaxSize;\r
+ UINTN TmpTokenNumber;\r
+\r
//\r
// TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
// We have to decrement TokenNumber by 1 to make it usable\r
// EBC compiler is very choosy. It may report warning about comparison\r
// between UINTN and 0 . So we add 1 in each size of the\r
// comparison.\r
- IsPeiDb = (BOOLEAN) (TokenNumber + 1 < mPeiLocalTokenCount + 1);\r
+ IsPeiDb = (BOOLEAN)(TokenNumber + 1 < mPeiLocalTokenCount + 1);\r
\r
TokenNumber = IsPeiDb ? TokenNumber :\r
- (TokenNumber - mPeiLocalTokenCount);\r
+ (TokenNumber - mPeiLocalTokenCount);\r
\r
LocalTokenNumberTable = IsPeiDb ? (UINT32 *)((UINT8 *)mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->LocalTokenNumberTableOffset)\r
: (UINT32 *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->LocalTokenNumberTableOffset);\r
} else {\r
return Size;\r
}\r
-\r
}\r
\r
/**\r
UINT8\r
EFIAPI\r
DxePcdGet8Ex (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber\r
)\r
{\r
- return *((UINT8 *) ExGetWorker (Guid, ExTokenNumber, sizeof(UINT8)));\r
+ return *((UINT8 *)ExGetWorker (Guid, ExTokenNumber, sizeof (UINT8)));\r
}\r
\r
/**\r
UINT16\r
EFIAPI\r
DxePcdGet16Ex (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber\r
)\r
{\r
- return ReadUnaligned16 (ExGetWorker (Guid, ExTokenNumber, sizeof(UINT16)));\r
+ return ReadUnaligned16 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT16)));\r
}\r
\r
/**\r
UINT32\r
EFIAPI\r
DxePcdGet32Ex (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber\r
)\r
{\r
- return ReadUnaligned32 (ExGetWorker (Guid, ExTokenNumber, sizeof(UINT32)));\r
+ return ReadUnaligned32 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT32)));\r
}\r
\r
/**\r
UINT64\r
EFIAPI\r
DxePcdGet64Ex (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber\r
)\r
{\r
- return ReadUnaligned64 (ExGetWorker (Guid, ExTokenNumber, sizeof(UINT64)));\r
+ return ReadUnaligned64 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT64)));\r
}\r
\r
/**\r
VOID *\r
EFIAPI\r
DxePcdGetPtrEx (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber\r
)\r
{\r
- return ExGetWorker (Guid, ExTokenNumber, 0);\r
+ return ExGetWorker (Guid, ExTokenNumber, 0);\r
}\r
\r
/**\r
BOOLEAN\r
EFIAPI\r
DxePcdGetBoolEx (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber\r
)\r
{\r
- return *((BOOLEAN *) ExGetWorker (Guid, ExTokenNumber, sizeof(BOOLEAN)));\r
+ return *((BOOLEAN *)ExGetWorker (Guid, ExTokenNumber, sizeof (BOOLEAN)));\r
}\r
\r
/**\r
UINTN\r
EFIAPI\r
DxePcdGetSizeEx (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber\r
)\r
{\r
- return DxePcdGetSize(GetExPcdTokenNumber (Guid, (UINT32) ExTokenNumber));\r
+ return DxePcdGetSize (GetExPcdTokenNumber (Guid, (UINT32)ExTokenNumber));\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet8 (\r
- IN UINTN TokenNumber,\r
- IN UINT8 Value\r
+ IN UINTN TokenNumber,\r
+ IN UINT8 Value\r
)\r
{\r
return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet16 (\r
- IN UINTN TokenNumber,\r
- IN UINT16 Value\r
+ IN UINTN TokenNumber,\r
+ IN UINT16 Value\r
)\r
{\r
return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet32 (\r
- IN UINTN TokenNumber,\r
- IN UINT32 Value\r
+ IN UINTN TokenNumber,\r
+ IN UINT32 Value\r
)\r
{\r
return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet64 (\r
- IN UINTN TokenNumber,\r
- IN UINT64 Value\r
+ IN UINTN TokenNumber,\r
+ IN UINT64 Value\r
)\r
{\r
return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
EFI_STATUS\r
EFIAPI\r
DxePcdSetPtr (\r
- IN UINTN TokenNumber,\r
- IN OUT UINTN *SizeOfBuffer,\r
- IN VOID *Buffer\r
+ IN UINTN TokenNumber,\r
+ IN OUT UINTN *SizeOfBuffer,\r
+ IN VOID *Buffer\r
)\r
{\r
return SetWorker (TokenNumber, Buffer, SizeOfBuffer, TRUE);\r
EFI_STATUS\r
EFIAPI\r
DxePcdSetBool (\r
- IN UINTN TokenNumber,\r
- IN BOOLEAN Value\r
+ IN UINTN TokenNumber,\r
+ IN BOOLEAN Value\r
)\r
{\r
return SetValueWorker (TokenNumber, &Value, sizeof (Value));\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet8Ex (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber,\r
- IN UINT8 Value\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber,\r
+ IN UINT8 Value\r
)\r
{\r
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
+ return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet16Ex (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber,\r
- IN UINT16 Value\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber,\r
+ IN UINT16 Value\r
)\r
{\r
//\r
// PcdSetNvStoreDefaultId should be set in PEI phase to take effect.\r
//\r
- ASSERT (!(CompareGuid (Guid, &gEfiMdeModulePkgTokenSpaceGuid) &&\r
- (ExTokenNumber == PcdToken(PcdSetNvStoreDefaultId))));\r
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
+ ASSERT (\r
+ !(CompareGuid (Guid, &gEfiMdeModulePkgTokenSpaceGuid) &&\r
+ (ExTokenNumber == PcdToken (PcdSetNvStoreDefaultId)))\r
+ );\r
+ return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet32Ex (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber,\r
- IN UINT32 Value\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber,\r
+ IN UINT32 Value\r
)\r
{\r
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
+ return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
DxePcdSet64Ex (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber,\r
- IN UINT64 Value\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber,\r
+ IN UINT64 Value\r
)\r
{\r
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
+ return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
DxePcdSetPtrEx (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber,\r
- IN OUT UINTN *SizeOfBuffer,\r
- IN VOID *Buffer\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber,\r
+ IN OUT UINTN *SizeOfBuffer,\r
+ IN VOID *Buffer\r
)\r
{\r
- return ExSetWorker(ExTokenNumber, Guid, Buffer, SizeOfBuffer, TRUE);\r
+ return ExSetWorker (ExTokenNumber, Guid, Buffer, SizeOfBuffer, TRUE);\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
DxePcdSetBoolEx (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber,\r
- IN BOOLEAN Value\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber,\r
+ IN BOOLEAN Value\r
)\r
{\r
- return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
+ return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
DxeRegisterCallBackOnSet (\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
- IN UINTN TokenNumber,\r
- IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
+ IN CONST EFI_GUID *Guid OPTIONAL,\r
+ IN UINTN TokenNumber,\r
+ IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
if (CallBackFunction == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
//\r
// Aquire lock to prevent reentrance from TPL_CALLBACK level\r
//\r
EFI_STATUS\r
EFIAPI\r
DxeUnRegisterCallBackOnSet (\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
- IN UINTN TokenNumber,\r
- IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
+ IN CONST EFI_GUID *Guid OPTIONAL,\r
+ IN UINTN TokenNumber,\r
+ IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
if (CallBackFunction == NULL) {\r
return EFI_INVALID_PARAMETER;\r
EFI_STATUS\r
EFIAPI\r
DxePcdGetNextToken (\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
- IN OUT UINTN *TokenNumber\r
+ IN CONST EFI_GUID *Guid OPTIONAL,\r
+ IN OUT UINTN *TokenNumber\r
)\r
{\r
- EFI_STATUS Status;\r
- BOOLEAN PeiExMapTableEmpty;\r
- BOOLEAN DxeExMapTableEmpty;\r
+ EFI_STATUS Status;\r
+ BOOLEAN PeiExMapTableEmpty;\r
+ BOOLEAN DxeExMapTableEmpty;\r
\r
- Status = EFI_NOT_FOUND;\r
+ Status = EFI_NOT_FOUND;\r
PeiExMapTableEmpty = mPeiExMapTableEmpty;\r
DxeExMapTableEmpty = mDxeExMapTableEmpty;\r
\r
// between UINTN and 0 . So we add 1 in each size of the\r
// comparison.\r
if (((*TokenNumber + 1 > mPeiNexTokenCount + 1) && (*TokenNumber + 1 <= mPeiLocalTokenCount + 1)) ||\r
- ((*TokenNumber + 1 > (mPeiLocalTokenCount + mDxeNexTokenCount + 1)))) {\r
+ ((*TokenNumber + 1 > (mPeiLocalTokenCount + mDxeNexTokenCount + 1))))\r
+ {\r
return EFI_NOT_FOUND;\r
}\r
\r
(*TokenNumber)++;\r
if ((*TokenNumber + 1 > mPeiNexTokenCount + 1) &&\r
- (*TokenNumber + 1 <= mPeiLocalTokenCount + 1)) {\r
+ (*TokenNumber + 1 <= mPeiLocalTokenCount + 1))\r
+ {\r
//\r
// The first Non-Ex type Token Number for DXE PCD\r
// database is mPeiLocalTokenCount + 1\r
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
return EFI_NOT_FOUND;\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
\r
if (!PeiExMapTableEmpty) {\r
Status = ExGetNextTokeNumber (\r
- Guid,\r
- TokenNumber,\r
- (EFI_GUID *)((UINT8 *)mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->GuidTableOffset),\r
- mPeiGuidTableSize,\r
- (DYNAMICEX_MAPPING *)((UINT8 *) mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->ExMapTableOffset),\r
- mPeiExMapppingTableSize\r
- );\r
+ Guid,\r
+ TokenNumber,\r
+ (EFI_GUID *)((UINT8 *)mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->GuidTableOffset),\r
+ mPeiGuidTableSize,\r
+ (DYNAMICEX_MAPPING *)((UINT8 *)mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->ExMapTableOffset),\r
+ mPeiExMapppingTableSize\r
+ );\r
}\r
\r
if (Status == EFI_SUCCESS) {\r
\r
if (!DxeExMapTableEmpty) {\r
Status = ExGetNextTokeNumber (\r
- Guid,\r
- TokenNumber,\r
- (EFI_GUID *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->GuidTableOffset),\r
- mDxeGuidTableSize,\r
- (DYNAMICEX_MAPPING *)((UINT8 *) mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->ExMapTableOffset),\r
- mDxeExMapppingTableSize\r
- );\r
+ Guid,\r
+ TokenNumber,\r
+ (EFI_GUID *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->GuidTableOffset),\r
+ mDxeGuidTableSize,\r
+ (DYNAMICEX_MAPPING *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->ExMapTableOffset),\r
+ mDxeExMapppingTableSize\r
+ );\r
}\r
\r
return Status;\r
**/\r
EFI_GUID **\r
GetDistinctTokenSpace (\r
- IN OUT UINTN *ExMapTableSize,\r
- IN DYNAMICEX_MAPPING *ExMapTable,\r
- IN EFI_GUID *GuidTable\r
+ IN OUT UINTN *ExMapTableSize,\r
+ IN DYNAMICEX_MAPPING *ExMapTable,\r
+ IN EFI_GUID *GuidTable\r
)\r
{\r
EFI_GUID **DistinctTokenSpace;\r
DistinctTokenSpace = AllocateZeroPool (*ExMapTableSize * sizeof (EFI_GUID *));\r
ASSERT (DistinctTokenSpace != NULL);\r
\r
- TsIdx = 0;\r
- OldGuidIndex = ExMapTable[0].ExGuidIndex;\r
+ TsIdx = 0;\r
+ OldGuidIndex = ExMapTable[0].ExGuidIndex;\r
DistinctTokenSpace[TsIdx] = &GuidTable[OldGuidIndex];\r
for (Idx = 1; Idx < *ExMapTableSize; Idx++) {\r
- Match = FALSE;\r
+ Match = FALSE;\r
OldGuidIndex = ExMapTable[Idx].ExGuidIndex;\r
for (TempTsIdx = 0; TempTsIdx <= TsIdx; TempTsIdx++) {\r
if (&GuidTable[OldGuidIndex] == DistinctTokenSpace[TempTsIdx]) {\r
break;\r
}\r
}\r
+\r
if (!Match) {\r
DistinctTokenSpace[++TsIdx] = &GuidTable[OldGuidIndex];\r
}\r
//\r
*ExMapTableSize = TsIdx + 1;\r
return DistinctTokenSpace;\r
-\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
DxePcdGetNextTokenSpace (\r
- IN OUT CONST EFI_GUID **Guid\r
+ IN OUT CONST EFI_GUID **Guid\r
)\r
{\r
- UINTN Idx;\r
- UINTN Idx2;\r
- UINTN Idx3;\r
- UINTN PeiTokenSpaceTableSize;\r
- UINTN DxeTokenSpaceTableSize;\r
- EFI_GUID **PeiTokenSpaceTable;\r
- EFI_GUID **DxeTokenSpaceTable;\r
- BOOLEAN Match;\r
- BOOLEAN PeiExMapTableEmpty;\r
- BOOLEAN DxeExMapTableEmpty;\r
+ UINTN Idx;\r
+ UINTN Idx2;\r
+ UINTN Idx3;\r
+ UINTN PeiTokenSpaceTableSize;\r
+ UINTN DxeTokenSpaceTableSize;\r
+ EFI_GUID **PeiTokenSpaceTable;\r
+ EFI_GUID **DxeTokenSpaceTable;\r
+ BOOLEAN Match;\r
+ BOOLEAN PeiExMapTableEmpty;\r
+ BOOLEAN DxeExMapTableEmpty;\r
\r
ASSERT (Guid != NULL);\r
\r
PeiTokenSpaceTableSize = 0;\r
\r
if (!PeiExMapTableEmpty) {\r
- PeiTokenSpaceTableSize = mPeiExMapppingTableSize / sizeof(DYNAMICEX_MAPPING);\r
- PeiTokenSpaceTable = GetDistinctTokenSpace (&PeiTokenSpaceTableSize,\r
- (DYNAMICEX_MAPPING *)((UINT8 *)mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->ExMapTableOffset),\r
- (EFI_GUID *)((UINT8 *)mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->GuidTableOffset)\r
- );\r
- CopyMem (TmpTokenSpaceBuffer, PeiTokenSpaceTable, sizeof (EFI_GUID*) * PeiTokenSpaceTableSize);\r
+ PeiTokenSpaceTableSize = mPeiExMapppingTableSize / sizeof (DYNAMICEX_MAPPING);\r
+ PeiTokenSpaceTable = GetDistinctTokenSpace (\r
+ &PeiTokenSpaceTableSize,\r
+ (DYNAMICEX_MAPPING *)((UINT8 *)mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->ExMapTableOffset),\r
+ (EFI_GUID *)((UINT8 *)mPcdDatabase.PeiDb + mPcdDatabase.PeiDb->GuidTableOffset)\r
+ );\r
+ CopyMem (TmpTokenSpaceBuffer, PeiTokenSpaceTable, sizeof (EFI_GUID *) * PeiTokenSpaceTableSize);\r
TmpTokenSpaceBufferCount = PeiTokenSpaceTableSize;\r
FreePool (PeiTokenSpaceTable);\r
}\r
\r
if (!DxeExMapTableEmpty) {\r
- DxeTokenSpaceTableSize = mDxeExMapppingTableSize / sizeof(DYNAMICEX_MAPPING);\r
- DxeTokenSpaceTable = GetDistinctTokenSpace (&DxeTokenSpaceTableSize,\r
- (DYNAMICEX_MAPPING *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->ExMapTableOffset),\r
- (EFI_GUID *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->GuidTableOffset)\r
- );\r
+ DxeTokenSpaceTableSize = mDxeExMapppingTableSize / sizeof (DYNAMICEX_MAPPING);\r
+ DxeTokenSpaceTable = GetDistinctTokenSpace (\r
+ &DxeTokenSpaceTableSize,\r
+ (DYNAMICEX_MAPPING *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->ExMapTableOffset),\r
+ (EFI_GUID *)((UINT8 *)mPcdDatabase.DxeDb + mPcdDatabase.DxeDb->GuidTableOffset)\r
+ );\r
\r
//\r
// Make sure EFI_GUID in DxeTokenSpaceTable does not exist in PeiTokenSpaceTable\r
break;\r
}\r
}\r
+\r
if (!Match) {\r
TmpTokenSpaceBuffer[Idx3++] = DxeTokenSpaceTable[Idx2];\r
}\r
\r
return EFI_NOT_FOUND;\r
}\r
-\r
-\r