From: qhuang8 Date: Mon, 23 Feb 2009 03:25:36 +0000 (+0000) Subject: Add PrintThunk driver, it depends on PrintLib on top of MdePkg: X-Git-Tag: edk2-stable201903~18666 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=46d95f3244f6c1886dfe210416593cc6418ef250 Add PrintThunk driver, it depends on PrintLib on top of MdePkg: 1. If the library instance is BasePrintLib, it has no prerequisite to produce EDK print protocol 2. If the library instance mapping is DxePrintLibPrint2Protocol, it acts as PrintOnPrint2Thunk. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7584 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.c b/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.c new file mode 100644 index 0000000000..6d17f5bb90 --- /dev/null +++ b/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.c @@ -0,0 +1,68 @@ +/** @file + Module produces EDK gEfiPrintProtocolGuid for backward compatibility support. + + EDK II retires old EDK Print Protocol and this module produces + gEfiPrintProtocolGuid based on PrintLib: + 1) If it links against BasePrintLib in MdePkg, it produces gEfiPrintProtocolGuid + without any prerequisites. + 2) If it links against DxePrintLibPrint2Protocol in MdeModulePkg, it produces + gEfiPrintProtocolGuid on top of gEfiPrint2ProtocolGuid. + +Copyright (c) 2009, 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 +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Module Name: + +**/ + +#include + +#include +#include +#include +#include + +EFI_HANDLE mPrintThunkHandle = NULL; + +CONST EFI_PRINT_PROTOCOL mPrintProtocol = { + UnicodeVSPrint, +}; + + +/** + The user Entry Point for Print thunk module. + + This is the entry point for Print thunk DXE Driver. It installs the Print Protocol on + top of PrintLib class in MdePkg. + + @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval Others Some error occurs when executing this entry point. + +**/ +EFI_STATUS +EFIAPI +InitPrintThunk ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + Status = gBS->InstallMultipleProtocolInterfaces ( + &mPrintThunkHandle, + &gEfiPrintProtocolGuid, &mPrintProtocol, + NULL + ); + ASSERT_EFI_ERROR (Status); + + return Status; +} diff --git a/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.inf b/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.inf new file mode 100644 index 0000000000..c3a1373668 --- /dev/null +++ b/EdkCompatibilityPkg/Compatibility/PrintThunk/PrintThunk.inf @@ -0,0 +1,55 @@ +#/** @file +# Module produces EDK gEfiPrintProtocolGuid for backward compatibility support. +# +# EDK II retires old EDK Print Protocol and this module produces +# gEfiPrintProtocolGuid based on PrintLib: +# 1) If it links against BasePrintLib in MdePkg, it produces gEfiPrintProtocolGuid +# without any prerequisites. +# 2) If it links against DxePrintLibPrint2Protocol in MdeModulePkg, it produces +# gEfiPrintProtocolGuid on top of gEfiPrint2ProtocolGuid. +# +# Copyright (c) 2009, 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 +# http://opensource.org/licenses/bsd-license.php +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +# +#**/ + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = PrintThunk + FILE_GUID = 3792FF94-8614-45ed-902B-1207BF1490A8 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + + ENTRY_POINT = InitPrintThunk + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 IPF EBC +# + +[Sources] + PrintThunk.c + +[Packages] + MdePkg/MdePkg.dec + EdkCompatibilityPkg/EdkCompatibilityPkg.dec + +[LibraryClasses] + UefiDriverEntryPoint + DebugLib + UefiBootServicesTableLib + PrintLib + +[Protocols] + gEfiPrintProtocolGuid ## PRODUCES + +[Depex] + TRUE