summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2008-09-23 07:16:03 +0000
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2008-09-23 07:16:03 +0000
commitbdabfae78d16baed7c0f3247c8be30e9092de227 (patch)
tree06a58abc1e92d0d62499340e091df3df4b833ada
parent90d6d599d90330b279d7f3c0cb5d853e663e5145 (diff)
downloadedk2-bdabfae78d16baed7c0f3247c8be30e9092de227.zip
edk2-bdabfae78d16baed7c0f3247c8be30e9092de227.tar.gz
edk2-bdabfae78d16baed7c0f3247c8be30e9092de227.tar.bz2
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
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c57
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/ia32/RuntimeLib.c62
-rw-r--r--EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c58
3 files changed, 85 insertions, 92 deletions
diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c b/EdkCompatibilityPkg/Foundation/Library/Dxe/EfiDriverLib/ReportStatusCode.c
index a8145cd..4c071f2 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
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/ia32/RuntimeLib.c b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/ia32/RuntimeLib.c
index 2367e10..4fb0494 100644
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/ia32/RuntimeLib.c
+++ b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/ia32/RuntimeLib.c
@@ -1,6 +1,6 @@
/*++
-Copyright (c) 2004 - 2008, Intel Corporation
+Copyright (c) 2005 - 2008, Intel Corporation
All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -42,9 +42,7 @@ EFI_CPU_IO_PROTOCOL *gCpuIo;
BOOLEAN mEfiAtRuntime = FALSE;
FVB_ENTRY *mFvbEntry;
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
static EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL;
-#endif
EFI_STATUS
EfiConvertPointer (
@@ -213,12 +211,10 @@ Returns:
// Update global for Runtime Services Table and IO
//
EfiConvertInternalPointer ((VOID **) &gCpuIo);
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
if (gStatusCode != NULL) {
EfiConvertInternalPointer ((VOID **) &gStatusCode->ReportStatusCode);
EfiConvertInternalPointer ((VOID **) &gStatusCode);
}
-#endif
EfiConvertInternalPointer ((VOID **) &mRT);
//
@@ -274,12 +270,10 @@ Returns:
Status = EfiLibGetSystemConfigurationTable (&gEfiDxeServicesTableGuid, (VOID **) &gDS);
ASSERT_EFI_ERROR (Status);
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
if (EFI_ERROR (Status)) {
gStatusCode = NULL;
}
-#endif
Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &gCpuIo);
if (EFI_ERROR (Status)) {
@@ -405,12 +399,10 @@ Returns:
mRT = SystemTable->RuntimeServices;
ASSERT (mRT != NULL);
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
if (EFI_ERROR (Status)) {
gStatusCode = NULL;
}
-#endif
Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &gCpuIo);
if (EFI_ERROR (Status)) {
@@ -664,7 +656,6 @@ Returns:
return mRT->SetVariable (VariableName, VendorGuid, Attributes, DataSize, Data);
}
-
#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
EFI_STATUS
@@ -703,6 +694,7 @@ Returns:
#endif
+
EFI_STATUS
EfiGetNextHighMonotonicCount (
OUT UINT32 *HighCount
@@ -789,31 +781,35 @@ Returns:
--*/
{
EFI_STATUS Status;
-
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
- if (gStatusCode == NULL) {
- if (EfiAtRuntime ()) {
- return EFI_UNSUPPORTED;
- }
- Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
- if (EFI_ERROR (Status) || gStatusCode == NULL) {
- return EFI_UNSUPPORTED;
- }
- }
- Status = gStatusCode->ReportStatusCode (CodeType, Value, Instance, CallerId, Data);
-#else
- if (mRT == NULL) {
- return EFI_UNSUPPORTED;
- }
- //
- // Check whether EFI_RUNTIME_SERVICES has Tiano Extension
- //
+
Status = EFI_UNSUPPORTED;
- if (mRT->Hdr.Revision == EFI_SPECIFICATION_VERSION &&
- mRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) &&
- mRT->ReportStatusCode != NULL) {
+
+ if (mRT->Hdr.Revision >= 0x00020000) {
+ if (gStatusCode == NULL) {
+ if (EfiAtRuntime ()) {
+ return EFI_UNSUPPORTED;
+ }
+ Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
+ if (EFI_ERROR (Status) || gStatusCode == NULL) {
+ return EFI_UNSUPPORTED;
+ }
+ }
+ Status = gStatusCode->ReportStatusCode (CodeType, Value, Instance, CallerId, Data);
+ } else {
+ if (mRT == NULL) {
+ return EFI_UNSUPPORTED;
+ }
+ //
+ // Check whether EFI_RUNTIME_SERVICES has Tiano Extension
+ //
+ Status = EFI_UNSUPPORTED;
+#if (EFI_SPECIFICATION_VERSION < 0x00020000)
+ if (mRT->Hdr.Revision == EFI_SPECIFICATION_VERSION &&
+ mRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) &&
+ mRT->ReportStatusCode != NULL) {
Status = mRT->ReportStatusCode (CodeType, Value, Instance, CallerId, Data);
- }
#endif
+ }
+ }
return Status;
}
diff --git a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c
index ad65350..4fb0494 100644
--- a/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c
+++ b/EdkCompatibilityPkg/Foundation/Library/RuntimeDxe/EfiRuntimeLib/x64/RuntimeLib.c
@@ -42,9 +42,7 @@ EFI_CPU_IO_PROTOCOL *gCpuIo;
BOOLEAN mEfiAtRuntime = FALSE;
FVB_ENTRY *mFvbEntry;
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
static EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL;
-#endif
EFI_STATUS
EfiConvertPointer (
@@ -213,12 +211,10 @@ Returns:
// Update global for Runtime Services Table and IO
//
EfiConvertInternalPointer ((VOID **) &gCpuIo);
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
if (gStatusCode != NULL) {
EfiConvertInternalPointer ((VOID **) &gStatusCode->ReportStatusCode);
EfiConvertInternalPointer ((VOID **) &gStatusCode);
}
-#endif
EfiConvertInternalPointer ((VOID **) &mRT);
//
@@ -274,12 +270,10 @@ Returns:
Status = EfiLibGetSystemConfigurationTable (&gEfiDxeServicesTableGuid, (VOID **) &gDS);
ASSERT_EFI_ERROR (Status);
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
if (EFI_ERROR (Status)) {
gStatusCode = NULL;
}
-#endif
Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &gCpuIo);
if (EFI_ERROR (Status)) {
@@ -405,12 +399,10 @@ Returns:
mRT = SystemTable->RuntimeServices;
ASSERT (mRT != NULL);
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
if (EFI_ERROR (Status)) {
gStatusCode = NULL;
}
-#endif
Status = gBS->LocateProtocol (&gEfiCpuIoProtocolGuid, NULL, (VOID **) &gCpuIo);
if (EFI_ERROR (Status)) {
@@ -789,31 +781,35 @@ Returns:
--*/
{
EFI_STATUS Status;
-
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
- if (gStatusCode == NULL) {
- if (EfiAtRuntime ()) {
- return EFI_UNSUPPORTED;
- }
- Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
- if (EFI_ERROR (Status) || gStatusCode == NULL) {
- return EFI_UNSUPPORTED;
- }
- }
- Status = gStatusCode->ReportStatusCode (CodeType, Value, Instance, CallerId, Data);
-#else
- if (mRT == NULL) {
- return EFI_UNSUPPORTED;
- }
- //
- // Check whether EFI_RUNTIME_SERVICES has Tiano Extension
- //
+
Status = EFI_UNSUPPORTED;
- if (mRT->Hdr.Revision == EFI_SPECIFICATION_VERSION &&
- mRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) &&
- mRT->ReportStatusCode != NULL) {
+
+ if (mRT->Hdr.Revision >= 0x00020000) {
+ if (gStatusCode == NULL) {
+ if (EfiAtRuntime ()) {
+ return EFI_UNSUPPORTED;
+ }
+ Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);
+ if (EFI_ERROR (Status) || gStatusCode == NULL) {
+ return EFI_UNSUPPORTED;
+ }
+ }
+ Status = gStatusCode->ReportStatusCode (CodeType, Value, Instance, CallerId, Data);
+ } else {
+ if (mRT == NULL) {
+ return EFI_UNSUPPORTED;
+ }
+ //
+ // Check whether EFI_RUNTIME_SERVICES has Tiano Extension
+ //
+ Status = EFI_UNSUPPORTED;
+#if (EFI_SPECIFICATION_VERSION < 0x00020000)
+ if (mRT->Hdr.Revision == EFI_SPECIFICATION_VERSION &&
+ mRT->Hdr.HeaderSize == sizeof (EFI_RUNTIME_SERVICES) &&
+ mRT->ReportStatusCode != NULL) {
Status = mRT->ReportStatusCode (CodeType, Value, Instance, CallerId, Data);
- }
#endif
+ }
+ }
return Status;
}