\r
#include "Service.h"\r
\r
-PCD_DATABASE * mPcdDatabase;\r
+PCD_DATABASE *mPcdDatabase;\r
\r
-LIST_ENTRY *mCallbackFnTable;\r
+LIST_ENTRY *mCallbackFnTable;\r
\r
/**\r
Get the PCD entry pointer in PCD database.\r
//\r
// TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
// We have to decrement TokenNumber by 1 to make it usable\r
- // as the array index.\r
+ // as the array index of mCallbackFnTable[].\r
//\r
- TokenNumber--;\r
-\r
- ListHead = &mCallbackFnTable[TokenNumber];\r
+ ListHead = &mCallbackFnTable[TokenNumber - 1];\r
ListNode = GetFirstNode (ListHead);\r
\r
while (ListNode != ListHead) {\r
//\r
// TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
// We have to decrement TokenNumber by 1 to make it usable\r
- // as the array index.\r
+ // as the array index of mCallbackFnTable[].\r
//\r
- TokenNumber--;\r
-\r
- ListHead = &mCallbackFnTable[TokenNumber];\r
+ ListHead = &mCallbackFnTable[TokenNumber - 1];\r
ListNode = GetFirstNode (ListHead);\r
\r
while (ListNode != ListHead) {\r
//\r
// TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
// We have to decrement TokenNumber by 1 to make it usable\r
- // as the array index.\r
+ // as the array index of mCallbackFnTable[].\r
//\r
- TokenNumber--;\r
- \r
- ListHead = &mCallbackFnTable[TokenNumber];\r
+ ListHead = &mCallbackFnTable[TokenNumber - 1];\r
ListNode = GetFirstNode (ListHead);\r
\r
while (ListNode != ListHead) {\r
- FnTableEntry = CR_FNENTRY_FROM_LISTNODE(ListNode, CALLBACK_FN_ENTRY, Node);\r
+ FnTableEntry = CR_FNENTRY_FROM_LISTNODE (ListNode, CALLBACK_FN_ENTRY, Node);\r
\r
FnTableEntry->CallbackFn(Guid, \r
(Guid == NULL) ? TokenNumber : ExTokenNumber,\r
UINTN MaxSize;\r
UINTN TmpTokenNumber;\r
\r
- //\r
- // Aquire lock to prevent reentrance from TPL_CALLBACK level\r
- //\r
- EfiAcquireLock (&mPcdDatabaseLock);\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
if ((!PtrType) && (*Size != DxePcdGetSize (TokenNumber + 1))) {\r
return EFI_INVALID_PARAMETER;\r
}\r
- \r
+\r
//\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
//\r
- IsPeiDb = (BOOLEAN) ((TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1) ? TRUE : FALSE);\r
+ if ((TokenNumber + 1 < PEI_NEX_TOKEN_NUMBER + 1) ||\r
+ (TokenNumber + 1 >= PEI_LOCAL_TOKEN_NUMBER + 1 || TokenNumber + 1 < (PEI_LOCAL_TOKEN_NUMBER + DXE_NEX_TOKEN_NUMBER + 1))) {\r
+ InvokeCallbackOnSet (0, NULL, TokenNumber + 1, Data, *Size);\r
+ }\r
\r
- LocalTokenNumberTable = IsPeiDb ? mPcdDatabase->PeiDb.Init.LocalTokenNumberTable : \r
- mPcdDatabase->DxeDb.Init.LocalTokenNumberTable;\r
+ //\r
+ // Aquire lock to prevent reentrance from TPL_CALLBACK level\r
+ //\r
+ EfiAcquireLock (&mPcdDatabaseLock);\r
\r
//\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
//\r
- if ((TokenNumber + 1 < PEI_NEX_TOKEN_NUMBER + 1) ||\r
- (TokenNumber + 1 >= PEI_LOCAL_TOKEN_NUMBER + 1 || TokenNumber + 1 < (PEI_LOCAL_TOKEN_NUMBER + DXE_NEX_TOKEN_NUMBER + 1))) {\r
- InvokeCallbackOnSet (0, NULL, TokenNumber + 1, Data, *Size);\r
- }\r
+ IsPeiDb = (BOOLEAN) ((TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1) ? TRUE : FALSE);\r
+\r
+ LocalTokenNumberTable = IsPeiDb ? mPcdDatabase->PeiDb.Init.LocalTokenNumberTable : \r
+ mPcdDatabase->DxeDb.Init.LocalTokenNumberTable;\r
\r
TokenNumber = IsPeiDb ? TokenNumber\r
: TokenNumber - PEI_LOCAL_TOKEN_NUMBER;\r