From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
Huajing Li <huajing.li@intel.com>
Subject: Re: [PATCH 1/2] ShellPkg/driver: Show Image Name in non-SFO mode
Date: Thu, 10 Aug 2017 08:53:11 +0100 [thread overview]
Message-ID: <CAKv+Gu8_8f60y0cYnOYTax0hbeuu2HOeaag53q6gaFzLxPq9Ug@mail.gmail.com> (raw)
In-Reply-To: <20170809074935.230172-2-ruiyu.ni@intel.com>
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 <ruiyu.ni@intel.com> wrote:
> From: Huajing Li <huajing.li@intel.com>
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Huajing Li <huajing.li@intel.com>
> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
> ---
> .../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.<BR>
> - Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
> + Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR>
> 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 <IndustryStandard/Pci.h>
>
> +#include <Pi/PiFirmwareVolume.h>
> +#include <Pi/PiFirmwareFile.h>
> +#include <Protocol/FirmwareVolume2.h>
> +
> #include <Protocol/Shell.h>
> #include <Protocol/ShellParameters.h>
> #include <Protocol/DevicePath.h>
> 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
next prev parent reply other threads:[~2017-08-10 7:50 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20170809074935.230172-1-ruiyu.ni@intel.com>
2017-08-09 7:49 ` [PATCH 1/2] ShellPkg/driver: Show Image Name in non-SFO mode Ruiyu Ni
2017-08-10 7:53 ` Ard Biesheuvel [this message]
2017-08-10 10:14 ` Leif Lindholm
2017-08-09 7:49 ` [PATCH 2/2] ShellPkg/driver: Show "-" " Ruiyu Ni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAKv+Gu8_8f60y0cYnOYTax0hbeuu2HOeaag53q6gaFzLxPq9Ug@mail.gmail.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox