From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C5A5981FB0 for ; Wed, 8 Feb 2017 22:02:58 -0800 (PST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga104.jf.intel.com with ESMTP; 08 Feb 2017 22:02:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.35,349,1484035200"; d="scan'208";a="1092615589" Received: from shwdeopenpsi014.ccr.corp.intel.com ([10.239.9.13]) by orsmga001.jf.intel.com with ESMTP; 08 Feb 2017 22:02:57 -0800 From: Hao Wu To: edk2-devel@lists.01.org Cc: Hao Wu , Jiewen Yao , Liming Gao , Michael Kinney Date: Thu, 9 Feb 2017 14:02:49 +0800 Message-Id: <1486620170-38136-4-git-send-email-hao.a.wu@intel.com> X-Mailer: git-send-email 1.9.5.msysgit.0 In-Reply-To: <1486620170-38136-1-git-send-email-hao.a.wu@intel.com> References: <1486620170-38136-1-git-send-email-hao.a.wu@intel.com> Subject: [PATCH v2 3/4] MdeModulePkg/PrintLib: Use EFI_PRINT2S_PROTOCOL for this instance X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Feb 2017 06:02:58 -0000 The commit updates the PrintLib instance MdeModulePkg/Library/DxePrintLibPrint2Protocol to use EFI_PRINT2S_PROTOCOL to implement the APIs. Cc: Jiewen Yao Cc: Liming Gao Cc: Michael Kinney Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu --- MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf | 4 +- MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.uni | 10 ++-- MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c | 56 +++++++++++++++----- 3 files changed, 49 insertions(+), 21 deletions(-) diff --git a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf index 55ee940..1cda2dc 100644 --- a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf +++ b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.inf @@ -36,11 +36,11 @@ PcdLib [Protocols] - gEfiPrint2ProtocolGuid ## CONSUMES + gEfiPrint2SProtocolGuid ## CONSUMES [Pcd] gEfiMdePkgTokenSpaceGuid.PcdMaximumAsciiStringLength ## SOMETIMES_CONSUMES gEfiMdePkgTokenSpaceGuid.PcdMaximumUnicodeStringLength ## SOMETIMES_CONSUMES [Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER, Depex.common.DXE_SAL_DRIVER, Depex.common.DXE_SMM_DRIVER] - gEfiPrint2ProtocolGuid + gEfiPrint2SProtocolGuid diff --git a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.uni b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.uni index 29aa37c..3a9fb58 100644 --- a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.uni +++ b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/DxePrintLibPrint2Protocol.uni @@ -1,9 +1,9 @@ // /** @file -// Library instance that implements Print Library class based on protocol gEfiPrint2ProtocolGuid. +// Library instance that implements Print Library class based on protocol gEfiPrint2SProtocolGuid. // -// Library instance that implements Print Library class based on protocol gEfiPrint2ProtocolGuid. +// Library instance that implements Print Library class based on protocol gEfiPrint2SProtocolGuid. // -// Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
+// Copyright (c) 2009 - 2017, 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 @@ -15,7 +15,7 @@ // **/ -#string STR_MODULE_ABSTRACT #language en-US "Implements Print Library class based on protocol gEfiPrint2ProtocolGuid" +#string STR_MODULE_ABSTRACT #language en-US "Implements Print Library class based on protocol gEfiPrint2SProtocolGuid" -#string STR_MODULE_DESCRIPTION #language en-US "Library instance that implements Print Library class based on protocol gEfiPrint2ProtocolGuid." +#string STR_MODULE_DESCRIPTION #language en-US "Library instance that implements Print Library class based on protocol gEfiPrint2SProtocolGuid." diff --git a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c index 438ac9e..b3e7cb2 100644 --- a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c +++ b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c @@ -1,8 +1,8 @@ /** @file - Instance of Print Library based on gEfiPrint2ProtocolGuid. + Instance of Print Library based on gEfiPrint2SProtocolGuid. Implement the print library instance by wrap the interface - provided in the Print2 protocol. This protocol is defined as the internal + provided in the Print2S protocol. This protocol is defined as the internal protocol related to this implementation, not in the public spec. So, this library instance is only for this code base. @@ -43,12 +43,12 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. } \ } while (FALSE) -EFI_PRINT2_PROTOCOL *mPrint2Protocol = NULL; +EFI_PRINT2S_PROTOCOL *mPrint2SProtocol = NULL; /** - The constructor function caches the pointer to Print2 protocol. + The constructor function caches the pointer to Print2S protocol. - The constructor function locates Print2 protocol from protocol database. + The constructor function locates Print2S protocol from protocol database. It will ASSERT() if that operation fails and it will always return EFI_SUCCESS. @param ImageHandle The firmware allocated handle for the EFI image. @@ -67,12 +67,12 @@ PrintLibConstructor ( EFI_STATUS Status; Status = SystemTable->BootServices->LocateProtocol ( - &gEfiPrint2ProtocolGuid, + &gEfiPrint2SProtocolGuid, NULL, - (VOID**) &mPrint2Protocol + (VOID**) &mPrint2SProtocol ); ASSERT_EFI_ERROR (Status); - ASSERT (mPrint2Protocol != NULL); + ASSERT (mPrint2SProtocol != NULL); return Status; } @@ -362,7 +362,7 @@ UnicodeBSPrint ( { ASSERT_UNICODE_BUFFER (StartOfBuffer); ASSERT_UNICODE_BUFFER (FormatString); - return mPrint2Protocol->UnicodeBSPrint (StartOfBuffer, BufferSize, FormatString, Marker); + return mPrint2SProtocol->UnicodeBSPrint (StartOfBuffer, BufferSize, FormatString, Marker); } /** @@ -537,7 +537,7 @@ UnicodeBSPrintAsciiFormat ( ) { ASSERT_UNICODE_BUFFER (StartOfBuffer); - return mPrint2Protocol->UnicodeBSPrintAsciiFormat (StartOfBuffer, BufferSize, FormatString, Marker); + return mPrint2SProtocol->UnicodeBSPrintAsciiFormat (StartOfBuffer, BufferSize, FormatString, Marker); } /** @@ -648,7 +648,21 @@ UnicodeValueToString ( IN UINTN Width ) { - return mPrint2Protocol->UnicodeValueToString (Buffer, Flags, Value, Width); + RETURN_STATUS Status; + UINTN BufferSize; + + if (Width == 0) { + BufferSize = (MAXIMUM_VALUE_CHARACTERS + 1) * sizeof (CHAR16); + } else { + BufferSize = (Width + 1) * sizeof (CHAR16); + } + + Status = mPrint2SProtocol->UnicodeValueToStringS (Buffer, BufferSize, Flags, Value, Width); + if (RETURN_ERROR (Status)) { + return 0; + } + + return StrnLenS (Buffer, BufferSize / sizeof (CHAR16)); } /** @@ -758,7 +772,7 @@ AsciiBSPrint ( IN BASE_LIST Marker ) { - return mPrint2Protocol->AsciiBSPrint (StartOfBuffer, BufferSize, FormatString, Marker); + return mPrint2SProtocol->AsciiBSPrint (StartOfBuffer, BufferSize, FormatString, Marker); } /** @@ -931,7 +945,7 @@ AsciiBSPrintUnicodeFormat ( ) { ASSERT_UNICODE_BUFFER (FormatString); - return mPrint2Protocol->AsciiBSPrintUnicodeFormat (StartOfBuffer, BufferSize, FormatString, Marker); + return mPrint2SProtocol->AsciiBSPrintUnicodeFormat (StartOfBuffer, BufferSize, FormatString, Marker); } /** @@ -1042,7 +1056,21 @@ AsciiValueToString ( IN UINTN Width ) { - return mPrint2Protocol->AsciiValueToString (Buffer, Flags, Value, Width); + RETURN_STATUS Status; + UINTN BufferSize; + + if (Width == 0) { + BufferSize = (MAXIMUM_VALUE_CHARACTERS + 1) * sizeof (CHAR8); + } else { + BufferSize = (Width + 1) * sizeof (CHAR8); + } + + Status = mPrint2SProtocol->AsciiValueToStringS (Buffer, BufferSize, Flags, Value, Width); + if (RETURN_ERROR (Status)) { + return 0; + } + + return AsciiStrnLenS (Buffer, BufferSize / sizeof (CHAR8)); } #define PREFIX_SIGN BIT1 -- 1.9.5.msysgit.0