From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x230.google.com (mail-it0-x230.google.com [IPv6:2607:f8b0:4001:c0b::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 36A7B21B06E9B for ; Thu, 10 Aug 2017 00:50:54 -0700 (PDT) Received: by mail-it0-x230.google.com with SMTP id 77so9437309itj.1 for ; Thu, 10 Aug 2017 00:53:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=9BVeUbBFLSBiux+5gP9liSY5fs1LByRQK/fxq9q/rMs=; b=EPcDb2upzxWgBgn5q0z3A5ozpETVRKq1kBpl6Q7aUd9nVnDsP5dBN6I5CHtwlIBeyj tQM5C8rQuK9pNR02ST1FxSOoZ3gx1BCbtnowy6yGQ/TWct8N6FVE4q2MytT3MbiRgg5i geSFRPwX8LY4sNPMfG8Y6uNXzPiHKOqtV39sQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=9BVeUbBFLSBiux+5gP9liSY5fs1LByRQK/fxq9q/rMs=; b=bIDzoOIE8luiQixRtsH2avS06pp9pJUwdlXQe7xVEirxQG7gaYoTqBnLlZm2hYpqtG JMld3T0Li22JAQwQz9o9MmQWH41HrqM9mN2Yv6haNHKCq0COVQc0limyUKolnKJnsFPn q9a3jsjwyf9p3Y8jTilHO7Hbq9DiWiNWNkcGrF7jPLepzQbmwVPwKZMAjNy8I0YhSUBe iBeGMg+202k+T0G64Dc7o30UQvcu5vbr2Xg8T7jve1CLZa3w1LhoTneX6VMg3znImHIx KY7jd5j49EeNTkasRJjFUpqX2/Yj6NlXreQFFU5jGGs8PRjj6704CihXXZdMIGqdDseT EELA== X-Gm-Message-State: AHYfb5gHCrds/cy7IeoQUr11szeTu+ek6vUasmM5tTxs3cpdamHSQA0V gsDyKb4anNoXwPJxg4Q4chiU9F7q2eNz X-Received: by 10.36.99.69 with SMTP id j66mr9528193itc.100.1502351592378; Thu, 10 Aug 2017 00:53:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.162.1 with HTTP; Thu, 10 Aug 2017 00:53:11 -0700 (PDT) In-Reply-To: <20170809074935.230172-2-ruiyu.ni@intel.com> References: <20170809074935.230172-1-ruiyu.ni@intel.com> <20170809074935.230172-2-ruiyu.ni@intel.com> From: Ard Biesheuvel Date: Thu, 10 Aug 2017 08:53:11 +0100 Message-ID: To: Ruiyu Ni Cc: "edk2-devel@lists.01.org" , Huajing Li Subject: Re: [PATCH 1/2] ShellPkg/driver: Show Image Name in non-SFO mode X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Aug 2017 07:50:54 -0000 Content-Type: text/plain; charset="UTF-8" This patch is breaking the GCC build: ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c: In function 'GetImageNameFromHandle': 220:25: error: passing argument 3 of 'gBS->HandleProtocol' from incompatible pointer type [-Werror] 220:25: note: expected 'void **' but argument is of type 'struct EFI_FIRMWARE_VOLUME2_PROTOCOL **' Please fix. Regards, Ard. On 9 August 2017 at 08:49, Ruiyu Ni wrote: > From: Huajing Li > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Huajing Li > Reviewed-by: Ruiyu Ni > --- > .../Library/UefiShellDriver1CommandsLib/Drivers.c | 99 +++++++++++++++++++++- > .../UefiShellDriver1CommandsLib.h | 4 + > .../UefiShellDriver1CommandsLib.uni | 2 +- > 3 files changed, 100 insertions(+), 5 deletions(-) > > diff --git a/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c b/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c > index ffdef04352..f3c1476872 100644 > --- a/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c > +++ b/ShellPkg/Library/UefiShellDriver1CommandsLib/Drivers.c > @@ -2,7 +2,7 @@ > Main file for Drivers shell Driver1 function. > > (C) Copyright 2012-2015 Hewlett-Packard Development Company, L.P.
> - Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.
> + Copyright (c) 2010 - 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 > which accompanies this distribution. The full text of the license may be found at > @@ -161,6 +161,92 @@ ReturnDriverVersion( > } > > /** > + Get image name from Image Handle. > + > + @param[in] Handle Image Handle > + > + @return A pointer to the image name as a string. > +**/ > +CHAR16 * > +GetImageNameFromHandle ( > + IN CONST EFI_HANDLE Handle > + ) > +{ > + EFI_STATUS Status; > + EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; > + EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; > + EFI_DEVICE_PATH_PROTOCOL *DevPathNode; > + EFI_GUID *NameGuid; > + CHAR16 *ImageName; > + UINTN BufferSize; > + UINT32 AuthenticationStatus; > + EFI_FIRMWARE_VOLUME2_PROTOCOL *Fv2; > + > + LoadedImage = NULL; > + DriverBinding = NULL; > + ImageName = NULL; > + > + Status = gBS->OpenProtocol ( > + Handle, > + &gEfiDriverBindingProtocolGuid, > + (VOID **) &DriverBinding, > + NULL, > + NULL, > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > + ); > + if (EFI_ERROR (Status)) { > + return NULL; > + } > + Status = gBS->OpenProtocol ( > + DriverBinding->ImageHandle, > + &gEfiLoadedImageProtocolGuid, > + (VOID**)&LoadedImage, > + gImageHandle, > + NULL, > + EFI_OPEN_PROTOCOL_GET_PROTOCOL > + ); > + if (!EFI_ERROR (Status)) { > + DevPathNode = LoadedImage->FilePath; > + if (DevPathNode == NULL) { > + return NULL; > + } > + while (!IsDevicePathEnd (DevPathNode)) { > + NameGuid = EfiGetNameGuidFromFwVolDevicePathNode ((MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *)DevPathNode); > + if (NameGuid != NULL) { > + Status = gBS->HandleProtocol ( > + LoadedImage->DeviceHandle, > + &gEfiFirmwareVolume2ProtocolGuid, > + &Fv2 > + ); > + if (!EFI_ERROR (Status)) { > + Status = Fv2->ReadSection ( > + Fv2, > + NameGuid, > + EFI_SECTION_USER_INTERFACE, > + 0, > + (VOID **)&ImageName, > + &BufferSize, > + &AuthenticationStatus > + ); > + if (!EFI_ERROR (Status)) { > + break; > + } > + ImageName = NULL; > + } > + } > + // > + // Next device path node > + // > + DevPathNode = NextDevicePathNode (DevPathNode); > + } > + if (ImageName == NULL) { > + ImageName = ConvertDevicePathToText (LoadedImage->FilePath, TRUE, TRUE); > + } > + } > + return ImageName; > +} > + > +/** > Function for 'drivers' command. > > @param[in] ImageHandle Handle to the Image (NULL if Internal). > @@ -186,6 +272,7 @@ ShellCommandRunDrivers ( > CHAR16 *Temp2; > CONST CHAR16 *FullDriverName; > CHAR16 *TruncatedDriverName; > + CHAR16 *ImageName; > CHAR16 *FormatString; > UINT32 DriverVersion; > BOOLEAN DriverConfig; > @@ -274,6 +361,7 @@ ShellCommandRunDrivers ( > DriverConfig = ReturnDriverConfig(*HandleWalker); > DriverDiag = ReturnDriverDiag (*HandleWalker); > FullDriverName = GetStringNameFromHandle(*HandleWalker, Language); > + ImageName = GetImageNameFromHandle (*HandleWalker); > > TruncatedDriverName = NULL; > if (!SfoFlag && (FullDriverName != NULL)) { > @@ -293,15 +381,18 @@ ShellCommandRunDrivers ( > DeviceCount, > ChildCount, > SfoFlag?FullDriverName:TruncatedDriverName, > - Temp2==NULL?L"":Temp2 > - ); > + SfoFlag ? (Temp2 == NULL ? L"" : Temp2) : (ImageName == NULL ? L"" : ImageName) > + ); > if (TruncatedDriverName != NULL) { > FreePool (TruncatedDriverName); > } > if (Temp2 != NULL) { > FreePool(Temp2); > } > - > + if (ImageName != NULL) { > + FreePool (ImageName); > + } > + > if (ShellGetExecutionBreakFlag ()) { > ShellStatus = SHELL_ABORTED; > break; > diff --git a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.h b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.h > index b061243af7..fa51677aa2 100644 > --- a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.h > +++ b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.h > @@ -24,6 +24,10 @@ > > #include > > +#include > +#include > +#include > + > #include > #include > #include > diff --git a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni > index 7a3e61e5fc..5ca548d9f6 100644 > --- a/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni > +++ b/ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1CommandsLib.uni > @@ -93,7 +93,7 @@ > " T D\r\n" > " Y C I\r\n" > " P F A\r\n" > -"DRV VERSION E G G #D #C DRIVER NAME IMAGE PATH\r\n" > +"DRV VERSION E G G #D #C DRIVER NAME IMAGE NAME\r\n" > "=== ======== = = = === === =================================== ==========\r\n" > #string STR_DRIVERS_ITEM_LINE #language en-US "%H%3x%N %08x %1c %1c %1c %3d %3d %-35s %s\r\n" > #string STR_DRIVERS_ITEM_LINE_SFO #language en-US "DriversInfo,"%x","%x","%c","%c","%c","%d","%d","%s","%s"\r\n" > -- > 2.12.2.windows.2 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel