mirror of https://github.com/acidanthera/audk.git
Fix the bug in GlueLib that we should depend on the gRT revision to use the proper report status code function.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5889 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
2206d5185c
commit
33629bba69
|
@ -22,13 +22,11 @@ Abstract:
|
||||||
|
|
||||||
#include "EdkIIGlueDxe.h"
|
#include "EdkIIGlueDxe.h"
|
||||||
|
|
||||||
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
|
|
||||||
//
|
//
|
||||||
// Global pointer to the Status Code Protocol
|
// Global pointer to the Status Code Protocol
|
||||||
//
|
//
|
||||||
static EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL;
|
static EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL;
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Internal worker function that reports a status code through the Status Code Protocol
|
Internal worker function that reports a status code through the Status Code Protocol
|
||||||
|
@ -63,32 +61,32 @@ InternalReportStatusCode (
|
||||||
IN EFI_STATUS_CODE_DATA *Data OPTIONAL
|
IN EFI_STATUS_CODE_DATA *Data OPTIONAL
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
|
|
||||||
|
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
//
|
if (gRT == NULL) {
|
||||||
// If gStatusCode is NULL, then see if a Status Code Protocol instance is present
|
return EFI_UNSUPPORTED;
|
||||||
// in the handle database.
|
|
||||||
//
|
|
||||||
if (gStatusCode == NULL) {
|
|
||||||
Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
|
|
||||||
if (EFI_ERROR (Status) || gStatusCode == NULL) {
|
|
||||||
return EFI_UNSUPPORTED;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
if (gRT->Hdr.Revision >= 0x00020000) {
|
||||||
// A Status Code Protocol is present in the handle database, so pass in all the
|
//
|
||||||
// parameters to the ReportStatusCode() service of the Status Code Protocol
|
// If gStatusCode is NULL, then see if a Status Code Protocol instance is present
|
||||||
//
|
// in the handle database.
|
||||||
return (gStatusCode->ReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);
|
//
|
||||||
|
if (gStatusCode == NULL) {
|
||||||
|
Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
|
||||||
|
if (EFI_ERROR (Status) || gStatusCode == NULL) {
|
||||||
|
return EFI_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
//
|
||||||
|
// A Status Code Protocol is present in the handle database, so pass in all the
|
||||||
return (gRT->ReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);
|
// parameters to the ReportStatusCode() service of the Status Code Protocol
|
||||||
|
//
|
||||||
#endif
|
return (gStatusCode->ReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);
|
||||||
|
} else {
|
||||||
|
return (gRT->ReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue