From bdabfae78d16baed7c0f3247c8be30e9092de227 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Tue, 23 Sep 2008 07:16:03 +0000 Subject: Update EfiLibReportStatusCode in ECP EfiDriverLib and EfiRuntimeLib libraries to check uefi version in runtime not in build time. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5947 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Library/Dxe/EfiDriverLib/ReportStatusCode.c | 57 +++++++++++----------- 1 file changed, 29 insertions(+), 28 deletions(-) (limited to 'EdkCompatibilityPkg/Foundation/Library/Dxe') diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c index a8145cd28a..4c071f2dbe 100644 --- a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c +++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c @@ -23,9 +23,7 @@ Abstract: #include EFI_GUID_DEFINITION (StatusCodeDataTypeId) #include EFI_ARCH_PROTOCOL_DEFINITION (StatusCode) -#if (EFI_SPECIFICATION_VERSION >= 0x00020000) STATIC EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL; -#endif EFI_STATUS EfiLibReportStatusCode ( @@ -58,34 +56,37 @@ Returns: --*/ { EFI_STATUS Status; - -#if (EFI_SPECIFICATION_VERSION >= 0x00020000) - if (gStatusCode == NULL) { - if (gBS == NULL) { - return EFI_UNSUPPORTED; - } - Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); - if (EFI_ERROR (Status) || gStatusCode == NULL) { - return EFI_UNSUPPORTED; - } - } - Status = gStatusCode->ReportStatusCode (Type, Value, Instance, CallerId, Data); - return Status; -#else - if (gRT == NULL) { - return EFI_UNSUPPORTED; - } - // - // Check whether EFI_RUNTIME_SERVICES has Tiano Extension - // + Status = EFI_UNSUPPORTED; - if (gRT->Hdr.Revision == EFI_SPECIFICATION_VERSION && - gRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) && - gRT->ReportStatusCode != NULL) { - Status = gRT->ReportStatusCode (Type, Value, Instance, CallerId, Data); - } - return Status; + + if (gRT->Hdr.Revision >= 0x00020000) { + if (gStatusCode == NULL) { + if (gBS == NULL) { + return EFI_UNSUPPORTED; + } + Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode); + if (EFI_ERROR (Status) || gStatusCode == NULL) { + return EFI_UNSUPPORTED; + } + } + Status = gStatusCode->ReportStatusCode (Type, Value, Instance, CallerId, Data); + } else { + if (gRT == NULL) { + return EFI_UNSUPPORTED; + } + // + // Check whether EFI_RUNTIME_SERVICES has Tiano Extension + // + Status = EFI_UNSUPPORTED; +#if (EFI_SPECIFICATION_VERSION < 0x00020000) + if (gRT->Hdr.Revision == EFI_SPECIFICATION_VERSION && + gRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) && + gRT->ReportStatusCode != NULL) { + Status = gRT->ReportStatusCode (Type, Value, Instance, CallerId, Data); #endif + } + } + return Status; } EFI_STATUS -- cgit v1.2.3