1) Sync EdkCompatibilityPkg with EDK 1.04. The changes includes:
1.1) Bug fixes. (For details, please check Documents & files: Snapshot/Release Notes at https://edk.tianocore.org/servlets/ProjectDocumentList?folderID=43&expandFolder=43&folderID=6) 1.2) Add new UEFI protocol definitions for AbsolutePointer, FormBrowser2, HiiConfigAccess, HiiConfigRouting, HiiDatabase, HiiFont, HiiImage, HiiString, SimpleTextInputEx, DPC protocol. 1.3) Add Smbios 2.5, 2.6 supports. Incompatible changes hilighted: 1) EFI_MANAGED_NETWORK_PROTOCOL_GUID changed. 2) EFI_IP4_IPCONFIG_DATA changed. 2) Add in EdkCompatibilityPkg/EdkCompatibilityPkg.dsc to build all libraries in this package. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4623 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -420,7 +420,7 @@ Returns:
|
||||
CopyMem(&(Hob.MemoryAllocationStack->AllocDescriptor.Name), &gEfiHobMemeryAllocStackGuid, sizeof(EFI_GUID));
|
||||
(Hob.MemoryAllocationStack->AllocDescriptor).MemoryBaseAddress = BaseAddress;
|
||||
(Hob.MemoryAllocationStack->AllocDescriptor).MemoryLength = Length;
|
||||
(Hob.MemoryAllocationStack->AllocDescriptor).MemoryType = EfiConventionalMemory;
|
||||
(Hob.MemoryAllocationStack->AllocDescriptor).MemoryType = EfiBootServicesData;
|
||||
|
||||
Hob.MemoryAllocationStack++;
|
||||
HandOffHob.HandoffInformationTable->EfiEndOfHobList = (EFI_PHYSICAL_ADDRESS) (UINTN) Hob.Raw;
|
||||
@@ -601,3 +601,121 @@ Returns:
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
VOID *
|
||||
GetHob (
|
||||
IN UINT16 Type,
|
||||
IN VOID *HobStart
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
This function returns the first instance of a HOB type in a HOB list.
|
||||
|
||||
Arguments:
|
||||
|
||||
Type The HOB type to return.
|
||||
HobStart The first HOB in the HOB list.
|
||||
|
||||
Returns:
|
||||
|
||||
HobStart There were no HOBs found with the requested type.
|
||||
else Returns the first HOB with the matching type.
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_PEI_HOB_POINTERS Hob;
|
||||
|
||||
Hob.Raw = HobStart;
|
||||
//
|
||||
// Return input if not found
|
||||
//
|
||||
if (HobStart == NULL) {
|
||||
return HobStart;
|
||||
}
|
||||
|
||||
//
|
||||
// Parse the HOB list, stop if end of list or matching type found.
|
||||
//
|
||||
while (!END_OF_HOB_LIST (Hob)) {
|
||||
|
||||
if (Hob.Header->HobType == Type) {
|
||||
break;
|
||||
}
|
||||
|
||||
Hob.Raw = GET_NEXT_HOB (Hob);
|
||||
}
|
||||
|
||||
//
|
||||
// Return input if not found
|
||||
//
|
||||
if (END_OF_HOB_LIST (Hob)) {
|
||||
return HobStart;
|
||||
}
|
||||
|
||||
return (VOID *) (Hob.Raw);
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
GetNextGuidHob (
|
||||
IN OUT VOID **HobStart,
|
||||
IN EFI_GUID * Guid,
|
||||
OUT VOID **Buffer,
|
||||
OUT UINTN *BufferSize OPTIONAL
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Get the next guid hob.
|
||||
|
||||
Arguments:
|
||||
HobStart A pointer to the start hob.
|
||||
Guid A pointer to a guid.
|
||||
Buffer A pointer to the buffer.
|
||||
BufferSize Buffer size.
|
||||
|
||||
Returns:
|
||||
Status code.
|
||||
|
||||
EFI_NOT_FOUND - Next Guid hob not found
|
||||
|
||||
EFI_SUCCESS - Next Guid hob found and data for this Guid got
|
||||
|
||||
EFI_INVALID_PARAMETER - invalid parameter
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_PEI_HOB_POINTERS GuidHob;
|
||||
|
||||
if (Buffer == NULL) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
for (Status = EFI_NOT_FOUND; EFI_ERROR (Status);) {
|
||||
|
||||
GuidHob.Raw = *HobStart;
|
||||
if (END_OF_HOB_LIST (GuidHob)) {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
GuidHob.Raw = GetHob (EFI_HOB_TYPE_GUID_EXTENSION, *HobStart);
|
||||
if (GuidHob.Header->HobType == EFI_HOB_TYPE_GUID_EXTENSION) {
|
||||
if ( ((INT32 *)Guid)[0] == ((INT32 *)&GuidHob.Guid->Name)[0] &&
|
||||
((INT32 *)Guid)[1] == ((INT32 *)&GuidHob.Guid->Name)[1] &&
|
||||
((INT32 *)Guid)[2] == ((INT32 *)&GuidHob.Guid->Name)[2] &&
|
||||
((INT32 *)Guid)[3] == ((INT32 *)&GuidHob.Guid->Name)[3] ) {
|
||||
Status = EFI_SUCCESS;
|
||||
*Buffer = (VOID *) ((UINT8 *) (&GuidHob.Guid->Name) + sizeof (EFI_GUID));
|
||||
if (BufferSize != NULL) {
|
||||
*BufferSize = GuidHob.Header->HobLength - sizeof (EFI_HOB_GUID_TYPE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*HobStart = GET_NEXT_HOB (GuidHob);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
Reference in New Issue
Block a user