(EFI_GET_NEXT_HIGH_MONO_COUNT) CoreEfiNotAvailableYetArg1, // GetNextHighMonotonicCount\r
(EFI_RESET_SYSTEM) CoreEfiNotAvailableYetArg4 // ResetSystem \r
#if ((EDK_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION < 0x00020000))\r
+ //\r
+ // This Tiano extension was removed when UEFI 2.0 support was added. \r
+ // It's now just a protocol.\r
+ //\r
,\r
(EFI_REPORT_STATUS_CODE) CoreEfiNotAvailableYetArg5 // ReportStatusCode\r
#elif (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
+ //\r
+ // New runtime services added by UEFI 2.0\r
+ //\r
,\r
(EFI_UPDATE_CAPSULE) CoreEfiNotAvailableYetArg3, // UpdateCapsule\r
(EFI_QUERY_CAPSULE_CAPABILITIES) CoreEfiNotAvailableYetArg4, // QueryCapsuleCapabilities\r
//\r
CoreGetPeiProtocol (&gEfiStatusCodeRuntimeProtocolGuid, (VOID **)&gStatusCode->ReportStatusCode);\r
#if ((EDK_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION < 0x00020000))\r
+ //\r
+ // This Tiano extension was removed when UEFI 2.0 support was added. \r
+ // It's now just a protocol.\r
+ //\r
gRT->ReportStatusCode = gStatusCode->ReportStatusCode;\r
#endif\r
\r
{ &gEfiRuntimeArchProtocolGuid, (VOID **)&gRuntime, NULL, NULL, FALSE },\r
{ &gEfiVariableArchProtocolGuid, (VOID **)NULL, NULL, NULL, FALSE },\r
{ &gEfiVariableWriteArchProtocolGuid, (VOID **)NULL, NULL, NULL, FALSE },\r
- #if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
+#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
+ //\r
+ // UEFI 2.0 added support for Capsule services. DXE CIS ??? Added support for this AP\r
+ //\r
{ &gEfiCapsuleArchProtocolGuid, (VOID **)NULL, NULL, NULL, FALSE},\r
- #endif\r
+#endif\r
{ &gEfiMonotonicCounterArchProtocolGuid, (VOID **)NULL, NULL, NULL, FALSE },\r
{ &gEfiResetArchProtocolGuid, (VOID **)NULL, NULL, NULL, FALSE },\r
-// { &gEfiStatusCodeRuntimeProtocolGuid, (VOID **)&gStatusCode, NULL, NULL, FALSE },\r
+#if ((EDK_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION < 0x00020000))\r
+ //\r
+ // The ReportStatusCode Runtime service is in conflict with the UEFI 2.0 specificaiton\r
+ // Thus gEfiStatusCodeRuntimeProtocolGuid becomes a normal protocol in UEFI 2.0 systems\r
+ // It is only included if the EFI 1.10 with Tiano extensions is enabled for backward\r
+ // compatability\r
+ //\r
+ { &gEfiStatusCodeRuntimeProtocolGuid, (VOID **)&gStatusCode, NULL, NULL, FALSE },\r
+#endif\r
{ &gEfiRealTimeClockArchProtocolGuid, (VOID **)NULL, NULL, NULL, FALSE },\r
{ NULL, (VOID **)NULL, NULL, NULL, FALSE }\r
};\r
\r
#if ((EDK_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION < 0x00020000))\r
//\r
-// Tiano8.5 Module use ScsiPassThru protocol together with the original ScsiIo protocol \r
+// Old EDK modules use Module use ScsiPassThru protocol together with the original ScsiIo protocol \r
// In UEFI2.0, Module use ScsiPassThruExt Protocol with new UEFI2.0 ScsiIo protocol\r
//\r
#include <Protocol/ScsiIo.h>\r
DXE modules follow the public Framework specifications and the UEFI \r
specifiations. The build infrastructure must set \r
EFI_SPECIFICATION_VERSION before including this file. To support \r
- R9/UEFI2.0 set EFI_SPECIFIATION_VERSION to 0x00020000. To support \r
- R8.5/EFI 1.10 set EFI_SPECIFIATION_VERSION to 0x00010010. \r
+ EDK II/UEFI2.0 set EFI_SPECIFIATION_VERSION to 0x00020000. To support \r
+ EDK/EFI 1.10 set EFI_SPECIFIATION_VERSION to 0x00010010. \r
EDK_RELEASE_VERSION must be set to a non zero value.\r
EFI_SPECIFIATION_VERSION and EDK_RELEASE_VERSION are set automatically\r
by the build infrastructure for every module.\r
The DXE Core has its own module type since its entry point definition is \r
unique. This module type should only be used by the DXE core. The build \r
infrastructure must set EFI_SPECIFICATION_VERSION before including this \r
- file. To support R9/UEFI2.0 set EFI_SPECIFIATION_VERSION to 0x00020000. To \r
- support R8.5/EFI 1.10 set EFI_SPECIFIATION_VERSION to 0x00010010. \r
+ file. To support EDK II/UEFI2.0 set EFI_SPECIFIATION_VERSION to 0x00020000. To \r
+ support EDK/EFI 1.10 set EFI_SPECIFIATION_VERSION to 0x00010010. \r
EDK_RELEASE_VERSION must be set to a non zero value. \r
EFI_SPECIFIATION_VERSION and EDK_RELEASE_VERSION are set automatically\r
by the build infrastructure for every module.\r
This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was\r
added and now it's possible to not voilate the UEFI specification by \r
declaring a GUID for the legacy boot event class. This library supports\r
- the R8.5/EFI 1.10 form and R9/UEFI 2.0 form and allows common code to \r
+ the EDK/EFI 1.10 form and EDK II/UEFI 2.0 form and allows common code to \r
work both ways.\r
\r
@param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).\r
This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was\r
added and now it's possible to not voilate the UEFI specification and use \r
the ready to boot event class defined in UEFI 2.0. This library supports\r
- the R8.5/EFI 1.10 form and R9/UEFI 2.0 form and allows common code to \r
+ the EDK/EFI 1.10 form and EDKII/UEFI 2.0 form and allows common code to \r
work both ways.\r
\r
@param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).\r
Tiano extended the EFI 1.10 device path nodes. Tiano does not own this enum\r
so as we move to UEFI 2.0 support we must use a mechanism that conforms with\r
the UEFI 2.0 specification to define the FV device path. An UEFI GUIDed \r
- device path is defined for PIWG extensions of device path. If the code \r
+ device path is defined for Tiano extensions of device path. If the code \r
is compiled to conform with the UEFI 2.0 specification use the new device path\r
else use the old form for backwards compatability.\r
\r
Tiano extended the EFI 1.10 device path nodes. Tiano does not own this enum\r
so as we move to UEFI 2.0 support we must use a mechanism that conforms with\r
the UEFI 2.0 specification to define the FV device path. An UEFI GUIDed \r
- device path is defined for PIWG extensions of device path. If the code \r
+ device path is defined for Tiano extensions of device path. If the code \r
is compiled to conform with the UEFI 2.0 specification use the new device path\r
else use the old form for backwards compatability. The return value to this\r
function points to a location in FvDevicePathNode and it does not allocate\r
UEFI modules follow the public EFI 1.10 or UEFI 2.0 specifications and\r
also contains the infrastructure required to build modules. The build \r
infrastructure must set EFI_SPECIFICATION_VERSION before including this \r
- file. To support R9/UEFI2.0 set EFI_SPECIFIATION_VERSION to 0x00020000. To \r
- support R8.5/EFI 1.10 set EFI_SPECIFIATION_VERSION to 0x00010010. \r
+ file. To support EDK II/UEFI2.0 set EFI_SPECIFIATION_VERSION to 0x00020000. To \r
+ support EDK/EFI 1.10 set EFI_SPECIFIATION_VERSION to 0x00010010. \r
Seting EDK_RELEASE_VERSION to zero implies no Tiano extensions and a\r
non zero value implies Tiano extensions are availible. \r
EFI_SPECIFIATION_VERSION and EDK_RELEASE_VERSION are set automatically\r
#include <Common/UefiBaseTypes.h>\r
#include <Uefi/UefiSpec.h>\r
\r
-//\r
-// Need due to R8.5 Tiano contamination of UEFI enumes. \r
-// There is a UEFI library that does things the new way and the old way\r
-// This is why these definitions are need in Uefi.h\r
-//\r
-#include <Guid/EventLegacyBios.h>\r
-#include <Guid/FrameworkDevicePath.h>\r
-\r
\r
//\r
// All module types types have access to PCD for build support\r
\r
typedef struct {\r
EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_GUID PiwgSpecificDevicePath;\r
+ EFI_GUID TianoSpecificDevicePath;\r
UINT32 Type;\r
-} PIWG_DEVICE_PATH;\r
+} TIANO_DEVICE_PATH;\r
\r
-#define PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE 0x01\r
+#define TIANO_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE 0x01\r
typedef struct {\r
- PIWG_DEVICE_PATH Piwg;\r
+ TIANO_DEVICE_PATH Tiano;\r
EFI_GUID NameGuid;\r
} MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;\r
\r
//\r
// Place holder for a future extension\r
//\r
-#define PIWG_MEDIAFW_VOL_DEVICE_PATH_TYPE 0x02\r
+#define TIANO_MEDIAFW_VOL_DEVICE_PATH_TYPE 0x02\r
typedef struct {\r
- PIWG_DEVICE_PATH Piwg;\r
+ TIANO_DEVICE_PATH Tiano;\r
EFI_GUID VolumeGuid;\r
} MEDIA_FW_VOL_DEVICE_PATH;\r
\r
<?xml version="1.0" encoding="UTF-8"?>\r
-<!--\r
-Copyright (c) 2006, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
--->\r
-<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0">\r
+<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\r
<MsaHeader>\r
<ModuleName>UefiLib</ModuleName>\r
- <ModuleType>UEFI_DRIVER</ModuleType>\r
+ <ModuleType>DXE_DRIVER</ModuleType>\r
<GuidValue>3a004ba5-efe0-4a61-9f1a-267a46ae5ba9</GuidValue>\r
<Version>1.0</Version>\r
<Abstract>Component description file for the entry point to a EFIDXE Drivers</Abstract>\r
- <Description>Library to abstract Framework extensions that conflict with UEFI 2.0 Specification</Description>\r
+ <Description>Library to abstract Framework extensions that conflict with UEFI 2.0 Specification
+
+ Help Port Framework/Tinao code that has conflicts with UEFI 2.0 by hiding the oldconflicts with library functions and supporting implementations of the old
+ (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) way. This module is a DXE driver as it contains DXE enum extensions for EFI event services.</Description>\r
<Copyright>Copyright (c) 2006, Intel Corporation.</Copyright>\r
<License>All rights reserved. This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
\r
Help Port Framework/Tinao code that has conflicts with UEFI 2.0 by hiding the\r
oldconflicts with library functions and supporting implementations of the old \r
- (R8.5/EFI 1.10) and new (R9/UEFI 2.0) way.\r
+ (EDK/EFI 1.10) and new (EDK II/UEFI 2.0) way. This module is a DXE driver as \r
+ it contains DXE enum extensions for EFI event services.\r
\r
Copyright (c) 2006, Intel Corporation<BR>\r
All rights reserved. This program and the accompanying materials\r
\r
**/\r
\r
+\r
/**\r
An empty function to pass error checking of CreateEventEx (). \r
\r
\r
**/\r
VOID
+EFIAPI
InternalEmptyFuntion (
IN EFI_EVENT Event,
IN VOID *Context
This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was\r
added and now it's possible to not voilate the UEFI specification by \r
declaring a GUID for the legacy boot event class. This library supports\r
- the R8.5/EFI 1.10 form and R9/UEFI 2.0 form and allows common code to \r
+ the EDK/EFI 1.10 form and EDK II/UEFI 2.0 form and allows common code to \r
work both ways.\r
\r
@param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).\r
\r
ASSERT (LegacyBootEvent != NULL);\r
\r
-#if (EFI_SPECIFICATION_VERSION < 0x00020000) \r
+#if ((EDK_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION < 0x00020000))\r
//\r
// prior to UEFI 2.0 use Tiano extension to EFI\r
//\r
NotifyContext,\r
LegacyBootEvent\r
);\r
-#else\r
+#elif (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
//\r
// For UEFI 2.0 and the future use an Event Group\r
//\r
&gEfiEventLegacyBootGuid,\r
LegacyBootEvent\r
);\r
+#else\r
+ //\r
+ // For EFI 1.10 with no Tiano extensions return unsupported\r
+ //\r
+ Status = EFI_UNSUPORTED;\r
#endif\r
\r
return Status;\r
This was bad as Tiano did not own the enum. In UEFI 2.0 CreateEventEx was\r
added and now it's possible to not voilate the UEFI specification and use \r
the ready to boot event class defined in UEFI 2.0. This library supports\r
- the R8.5/EFI 1.10 form and R9/UEFI 2.0 form and allows common code to \r
+ the EDK/EFI 1.10 form and EDK II/UEFI 2.0 form and allows common code to \r
work both ways.\r
\r
@param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex).\r
\r
ASSERT (ReadyToBootEvent != NULL);\r
\r
-#if (EFI_SPECIFICATION_VERSION < 0x00020000) \r
+#if ((EDK_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION < 0x00020000))\r
//\r
// prior to UEFI 2.0 use Tiano extension to EFI\r
//\r
NotifyContext,\r
ReadyToBootEvent\r
);\r
-#else\r
+#elif (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
//\r
// For UEFI 2.0 and the future use an Event Group\r
//\r
&gEfiEventReadyToBootGuid,\r
ReadyToBootEvent\r
);\r
+#else\r
+ //\r
+ // For EFI 1.10 with no Tiano extensions return unsupported\r
+ //\r
+ Status = EFI_UNSUPORTED;\r
#endif\r
\r
return Status;\r
Tiano extended the EFI 1.10 device path nodes. Tiano does not own this enum\r
so as we move to UEFI 2.0 support we must use a mechanism that conforms with\r
the UEFI 2.0 specification to define the FV device path. An UEFI GUIDed \r
- device path is defined for PIWG extensions of device path. If the code \r
+ device path is defined for Tiano extensions of device path. If the code \r
is compiled to conform with the UEFI 2.0 specification use the new device path\r
else use the old form for backwards compatability. The return value to this\r
function points to a location in FvDevicePathNode and it does not allocate\r
{\r
ASSERT (FvDevicePathNode != NULL);\r
\r
-#if (EFI_SPECIFICATION_VERSION < 0x00020000) \r
+#if ((EDK_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION < 0x00020000))\r
//\r
// Use old Device Path that conflicts with UEFI\r
//\r
return (EFI_GUID *) &FvDevicePathNode->NameGuid;\r
}\r
\r
-#else\r
+#elif ((EDK_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION >= 0x00020000))\r
//\r
// Use the new Device path that does not conflict with the UEFI\r
//\r
- if (FvDevicePathNode->Piwg.Header.Type == MEDIA_DEVICE_PATH ||\r
- FvDevicePathNode->Piwg.Header.SubType == MEDIA_VENDOR_DP) {\r
- if (CompareGuid (&gEfiFrameworkDevicePathGuid, &FvDevicePathNode->Piwg.PiwgSpecificDevicePath)) {\r
- if (FvDevicePathNode->Piwg.Type == PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE) {\r
+ if (FvDevicePathNode->Tiano.Header.Type == MEDIA_DEVICE_PATH ||\r
+ FvDevicePathNode->Tiano.Header.SubType == MEDIA_VENDOR_DP) {\r
+ if (CompareGuid (&gEfiFrameworkDevicePathGuid, &FvDevicePathNode->Tiano.TianoSpecificDevicePath)) {\r
+ if (FvDevicePathNode->Tiano.Type == TIANO_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE) {\r
return (EFI_GUID *) &FvDevicePathNode->NameGuid;\r
}\r
}\r
Tiano extended the EFI 1.10 device path nodes. Tiano does not own this enum\r
so as we move to UEFI 2.0 support we must use a mechanism that conforms with\r
the UEFI 2.0 specification to define the FV device path. An UEFI GUIDed \r
- device path is defined for PIWG extensions of device path. If the code \r
+ device path is defined for Tiano extensions of device path. If the code \r
is compiled to conform with the UEFI 2.0 specification use the new device path\r
else use the old form for backwards compatability.\r
\r
//\r
// Use the new Device path that does not conflict with the UEFI\r
//\r
- FvDevicePathNode->Piwg.Header.Type = MEDIA_DEVICE_PATH;\r
- FvDevicePathNode->Piwg.Header.SubType = MEDIA_VENDOR_DP;\r
- SetDevicePathNodeLength (&FvDevicePathNode->Piwg.Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));\r
+ FvDevicePathNode->Tiano.Header.Type = MEDIA_DEVICE_PATH;\r
+ FvDevicePathNode->Tiano.Header.SubType = MEDIA_VENDOR_DP;\r
+ SetDevicePathNodeLength (&FvDevicePathNode->Tiano.Header, sizeof (MEDIA_FW_VOL_FILEPATH_DEVICE_PATH));\r
\r
//\r
- // Add the GUID for generic PIWG device paths\r
+ // Add the GUID for generic Tiano device paths\r
//\r
- CopyGuid (&FvDevicePathNode->Piwg.PiwgSpecificDevicePath, &gEfiFrameworkDevicePathGuid);\r
+ CopyGuid (&FvDevicePathNode->Tiano.TianoSpecificDevicePath, &gEfiFrameworkDevicePathGuid);\r
\r
//\r
- // Add in the FW Vol File Path PIWG defined inforation\r
+ // Add in the FW Vol File Path Tiano defined information\r
//\r
- FvDevicePathNode->Piwg.Type = PIWG_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE;\r
+ FvDevicePathNode->Tiano.Type = TIANO_MEDIA_FW_VOL_FILEPATH_DEVICE_PATH_TYPE;\r
\r
#endif\r
\r