Fix bugs in GetNextTokenSpace and GetNextToken
Fix bugs in Pcd Build tool generation for ExMap Fix a few other bugs. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@800 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -481,16 +481,14 @@ PeiPcdGetNextToken (
|
||||
|
||||
if (Guid == NULL) {
|
||||
(*TokenNumber)++;
|
||||
|
||||
if (*TokenNumber >= PEI_NEX_TOKEN_NUMBER) {
|
||||
if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {
|
||||
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
} else {
|
||||
|
||||
if (PEI_EXMAP_TABLE_EMPTY) {
|
||||
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
||||
return EFI_NOT_FOUND;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
//
|
||||
@@ -503,7 +501,7 @@ PeiPcdGetNextToken (
|
||||
MatchGuid = ScanGuid (PeiPcdDb->Init.GuidTable, sizeof(PeiPcdDb->Init.GuidTable), Guid);
|
||||
|
||||
if (MatchGuid == NULL) {
|
||||
*TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;
|
||||
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
@@ -512,6 +510,9 @@ PeiPcdGetNextToken (
|
||||
ExMapTable = PeiPcdDb->Init.ExMapTable;
|
||||
|
||||
Found = FALSE;
|
||||
//
|
||||
// Locate the GUID in ExMapTable first.
|
||||
//
|
||||
for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
||||
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
|
||||
Found = TRUE;
|
||||
@@ -524,26 +525,31 @@ PeiPcdGetNextToken (
|
||||
*TokenNumber = ExMapTable[i].ExTokenNumber;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
for ( ; ExMapTable[i].ExGuidIndex == GuidTableIdx; i++) {
|
||||
|
||||
for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
||||
if (ExMapTable[i].ExTokenNumber == *TokenNumber) {
|
||||
i++;
|
||||
if (i == PEI_EXMAPPING_TABLE_SIZE) {
|
||||
//
|
||||
// Exceed the length of ExMap Table
|
||||
//
|
||||
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
|
||||
*TokenNumber = ExMapTable[i].ExTokenNumber;
|
||||
return EFI_SUCCESS;
|
||||
} else {
|
||||
*TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;
|
||||
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
|
||||
|
@@ -32,130 +32,6 @@ Module Name: Service.h
|
||||
#error "Please make sure the version of PCD Service PEIM and PCD PEI Database Generation Tool matches"
|
||||
#endif
|
||||
|
||||
/* Internal Function definitions */
|
||||
|
||||
PEI_PCD_DATABASE *
|
||||
GetPcdDatabase (
|
||||
VOID
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
SetValueWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN VOID *Data,
|
||||
IN UINTN Size
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
SetWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN VOID *Data,
|
||||
IN OUT UINTN *Size,
|
||||
IN BOOLEAN PtrType
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
ExSetValueWorker (
|
||||
IN UINTN ExTokenNumber,
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN VOID *Data,
|
||||
IN UINTN Size
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
ExSetWorker (
|
||||
IN UINTN ExTokenNumber,
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN VOID *Data,
|
||||
IN OUT UINTN *Size,
|
||||
IN BOOLEAN PtrType
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
VOID *
|
||||
GetWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN UINTN GetSize
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
VOID *
|
||||
ExGetWorker (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN ExTokenNumber,
|
||||
IN UINTN GetSize
|
||||
)
|
||||
;
|
||||
|
||||
typedef struct {
|
||||
UINTN TokenNumber;
|
||||
UINTN Size;
|
||||
UINT32 LocalTokenNumberAlias;
|
||||
} EX_PCD_ENTRY_ATTRIBUTE;
|
||||
|
||||
|
||||
UINTN
|
||||
GetExPcdTokenNumber (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN ExTokenNumber
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
PeiRegisterCallBackWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN CONST GUID *Guid, OPTIONAL
|
||||
IN PCD_PPI_CALLBACK CallBackFunction,
|
||||
IN BOOLEAN Register
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
BuildPcdDatabase (
|
||||
VOID
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
UINTN
|
||||
GetPtrTypeSize (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
OUT UINTN *MaxSize,
|
||||
IN PEI_PCD_DATABASE *Database
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
BOOLEAN
|
||||
SetPtrTypeSize (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
IN OUT UINTN *CurrentSize,
|
||||
IN PEI_PCD_DATABASE *Database
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
//
|
||||
// PPI Interface Implementation Declaration.
|
||||
//
|
||||
@@ -436,6 +312,131 @@ PeiPcdGetNextTokenSpace (
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
/* Internal Function definitions */
|
||||
|
||||
PEI_PCD_DATABASE *
|
||||
GetPcdDatabase (
|
||||
VOID
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
SetValueWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN VOID *Data,
|
||||
IN UINTN Size
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
SetWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN VOID *Data,
|
||||
IN OUT UINTN *Size,
|
||||
IN BOOLEAN PtrType
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
ExSetValueWorker (
|
||||
IN UINTN ExTokenNumber,
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN VOID *Data,
|
||||
IN UINTN Size
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
ExSetWorker (
|
||||
IN UINTN ExTokenNumber,
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN VOID *Data,
|
||||
IN OUT UINTN *Size,
|
||||
IN BOOLEAN PtrType
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
VOID *
|
||||
GetWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN UINTN GetSize
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
VOID *
|
||||
ExGetWorker (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN ExTokenNumber,
|
||||
IN UINTN GetSize
|
||||
)
|
||||
;
|
||||
|
||||
typedef struct {
|
||||
UINTN TokenNumber;
|
||||
UINTN Size;
|
||||
UINT32 LocalTokenNumberAlias;
|
||||
} EX_PCD_ENTRY_ATTRIBUTE;
|
||||
|
||||
|
||||
UINTN
|
||||
GetExPcdTokenNumber (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN ExTokenNumber
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
PeiRegisterCallBackWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN CONST GUID *Guid, OPTIONAL
|
||||
IN PCD_PPI_CALLBACK CallBackFunction,
|
||||
IN BOOLEAN Register
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
BuildPcdDatabase (
|
||||
VOID
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
UINTN
|
||||
GetPtrTypeSize (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
OUT UINTN *MaxSize,
|
||||
IN PEI_PCD_DATABASE *Database
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
|
||||
BOOLEAN
|
||||
SetPtrTypeSize (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
IN OUT UINTN *CurrentSize,
|
||||
IN PEI_PCD_DATABASE *Database
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
extern EFI_GUID gPcdDataBaseHobGuid;
|
||||
|
||||
extern EFI_GUID gPcdPeiCallbackFnTableHobGuid;
|
||||
|
Reference in New Issue
Block a user