From: "Laszlo Ersek" <lersek@redhat.com>
To: "Gao, Zhichao" <zhichao.gao@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Carsey, Jaben" <jaben.carsey@intel.com>, "Ni, Ray" <ray.ni@intel.com>
Subject: Re: [edk2-devel] [PATCH 30/35] ShellPkg: stop taking EFI_HANDLE in place of SHELL_FILE_HANDLE
Date: Mon, 30 Sep 2019 21:52:04 +0200 [thread overview]
Message-ID: <0a2e62d1-ab60-ef1f-512c-27df61b4c592@redhat.com> (raw)
In-Reply-To: <3CE959C139B4C44DBEA1810E3AA6F9000B83F4CC@SHSMSX101.ccr.corp.intel.com>
On 09/26/19 16:43, Gao, Zhichao wrote:
> OK. I didn't view the whole calling stack. Thanks for your clear explain.
> Then why we need two exact same handle type?
Unfortunately, I have no clue.
> May be we should keep only one of them. Same with the DEBUG_XXX and EFI_D_XXX.
In the long term, EFI_FILE_HANDLE should likely be eliminated
completely. It starts with the EFI_ prefix, suggesting it's a standard
type. But none of the UEFI, PI, and Shell specs define EFI_FILE_HANDLE.
The Shell spec does define SHELL_FILE_HANDLE, so that should be
preserved in the long term. Luckily, that's what the patch uses anyway.
>
> Back to the patch, it is OK to me now. Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
Thank you!
Laszlo
>
>> -----Original Message-----
>> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
>> Laszlo Ersek
>> Sent: Thursday, September 26, 2019 8:09 PM
>> To: devel@edk2.groups.io; Gao, Zhichao <zhichao.gao@intel.com>
>> Cc: Carsey, Jaben <jaben.carsey@intel.com>; Ni, Ray <ray.ni@intel.com>
>> Subject: Re: [edk2-devel] [PATCH 30/35] ShellPkg: stop taking EFI_HANDLE in
>> place of SHELL_FILE_HANDLE
>>
>> On 09/26/19 04:53, Gao, Zhichao wrote:
>>>
>>>
>>>> -----Original Message-----
>>>> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
>>>> Laszlo Ersek
>>>> Sent: Wednesday, September 18, 2019 3:50 AM
>>>> To: edk2-devel-groups-io <devel@edk2.groups.io>
>>>> Cc: Carsey, Jaben <jaben.carsey@intel.com>; Ni, Ray
>>>> <ray.ni@intel.com>; Gao, Zhichao <zhichao.gao@intel.com>
>>>> Subject: [edk2-devel] [PATCH 30/35] ShellPkg: stop taking EFI_HANDLE
>>>> in place of SHELL_FILE_HANDLE
>>>>
>>>> The TouchFileByHandle() and IsDirectoryEmpty() functions are passed
>>>> SHELL_FILE_HANDLE parameters, and they use those parameters
>> correctly.
>>>> However, their parameter lists say EFI_HANDLE.
>>>>
>>>> Spell out the right type in the parameter lists.
>>>>
>>>> In practice, this change is a no-op (because, quite regrettably, both
>>>> EFI_HANDLE and SHELL_FILE_HANDLE are specified to be typedefs of
>>>> (VOID*)).
>>>>
>>>> Cc: Jaben Carsey <jaben.carsey@intel.com>
>>>> Cc: Ray Ni <ray.ni@intel.com>
>>>> Cc: Zhichao Gao <zhichao.gao@intel.com>
>>>> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
>>>> ---
>>>>
>>>> Notes:
>>>> tested: rm, touch
>>>>
>>>> ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c | 2 +-
>>>> ShellPkg/Library/UefiShellLevel3CommandsLib/Touch.c | 2 +-
>>>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c
>>>> b/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c
>>>> index 3a1196f1529e..59f7eec376f2 100644
>>>> --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c
>>>> +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c
>>>> @@ -24,7 +24,7 @@ STATIC CONST SHELL_PARAM_ITEM ParamList[] =
>> { **/
>>>> BOOLEAN IsDirectoryEmpty (
>>>> - IN EFI_HANDLE FileHandle
>>>> + IN SHELL_FILE_HANDLE FileHandle
>>>
>>> Here may be EFI_FILE_HANDLE.
>>
>> Yes, it *may*, but doesn't *have* to.
>>
>> We have the following call tree:
>>
>> CascadeDelete()
>> IsDirectoryEmpty()
>> FileHandleFindFirstFile()
>> FileHandleFindNextFile()
>>
>> With this patch, we have:
>>
>> "Node->Handle"
>> |
>> [SHELL_FILE_HANDLE]
>> |
>> v
>> CascadeDelete()
>> |
>> [SHELL_FILE_HANDLE]
>> |
>> v
>> IsDirectoryEmpty()
>> |
>> [EFI_FILE_HANDLE]
>> |
>> v
>> FileHandleFindFirstFile()
>> FileHandleFindNextFile()
>>
>> with your proposal, we would have:
>>
>> "Node->Handle"
>> |
>> [SHELL_FILE_HANDLE]
>> |
>> v
>> CascadeDelete()
>> |
>> [EFI_FILE_HANDLE]
>> |
>> v
>> IsDirectoryEmpty()
>> |
>> [EFI_FILE_HANDLE]
>> |
>> v
>> FileHandleFindFirstFile()
>> FileHandleFindNextFile()
>>
>> In both cases, we depend on SHELL_FILE_HANDLE being equivalent to
>> EFI_FILE_HANDLE. In the end, both types are:
>>
>> (struct _EFI_FILE_PROTOCOL *)
>>
>> In both cases, we go from SHELL_FILE_HANDLE to EFI_FILE_HANDLE, and
>> exploit that they are identical; the difference is only *where* we exploit that.
>>
>> - In this patch, we exploit the identity in IsDirectoryEmpty(): we take a
>> SHELL_FILE_HANDLE, and give it to functions that take EFI_FILE_HANDLE.
>>
>> - In your proposal, we would exploit the exact same identity, just in
>> CascadeDelete(): "Node->Handle" is a SHELL_FILE_HANDLE (see
>> EFI_SHELL_FILE_INFO.Handle), and we'd pass it to a function (namely
>> IsDirectoryEmpty()) taking an EFI_FILE_HANDLE.
>>
>> Given that your proposal wouldn't change our dependence on the
>> SHELL_FILE_HANDLE===EFI_FILE_HANDLE identity, I prefer to stick with the
>> current patch.
>>
>> Thanks
>> Laszlo
>>
>>>
>>>> )
>>>> {
>>>> EFI_STATUS Status;
>>>> diff --git a/ShellPkg/Library/UefiShellLevel3CommandsLib/Touch.c
>>>> b/ShellPkg/Library/UefiShellLevel3CommandsLib/Touch.c
>>>> index 0f00344c815e..a215f5774c69 100644
>>>> --- a/ShellPkg/Library/UefiShellLevel3CommandsLib/Touch.c
>>>> +++ b/ShellPkg/Library/UefiShellLevel3CommandsLib/Touch.c
>>>> @@ -21,7 +21,7 @@
>>>> **/
>>>> EFI_STATUS
>>>> TouchFileByHandle (
>>>> - IN EFI_HANDLE Handle
>>>> + IN SHELL_FILE_HANDLE Handle
>>>
>>> Here is OK.
>>>
>>> Thanks,
>>> Zhichao
>>>
>>>> )
>>>> {
>>>> EFI_STATUS Status;
>>>> --
>>>> 2.19.1.3.g30247aa5d201
>>>>
>>>>
>>>>
>>>> -=-=-=-=-=-=
>>>> Groups.io Links: You receive all messages sent to this group.
>>>>
>>>> View/Reply Online (#47417):
>>>> https://edk2.groups.io/g/devel/message/47417
>>>> Mute This Topic: https://groups.io/mt/34180233/1768756
>>>> Group Owner: devel+owner@edk2.groups.io
>>>> Unsubscribe: https://edk2.groups.io/g/devel/unsub
>>>> [zhichao.gao@intel.com]
>>>> -=-=-=-=-=-=
>>>
>>>
>>>
>>>
>>
>>
>>
>
next prev parent reply other threads:[~2019-09-30 19:52 UTC|newest]
Thread overview: 155+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-17 19:49 [PATCH 00/35] edk2: clean up the usage of standardized (VOID*) typedefs Laszlo Ersek
2019-09-17 19:49 ` [PATCH 01/35] DO NOT APPLY: edk2: turn standard handle types into pointers to non-VOID Laszlo Ersek
2019-09-17 20:06 ` [edk2-devel] " Ni, Ray
2019-09-17 20:22 ` Andrew Fish
2019-09-17 20:28 ` Ni, Ray
2019-09-17 21:07 ` Andrew Fish
2019-09-17 21:11 ` Michael D Kinney
2019-09-18 8:41 ` Laszlo Ersek
2019-09-18 15:16 ` Michael D Kinney
2019-09-18 17:41 ` Laszlo Ersek
2019-09-18 15:55 ` Andrew Fish
2019-09-18 16:16 ` Leif Lindholm
2019-09-18 17:45 ` Laszlo Ersek
2019-09-18 8:36 ` Laszlo Ersek
2019-09-17 19:49 ` [PATCH 02/35] EmbeddedPkg: add missing EFIAPI calling convention specifiers Laszlo Ersek
2019-09-18 17:41 ` Leif Lindholm
2019-09-17 19:49 ` [PATCH 03/35] EmbeddedPkg/AndroidFastbootTransportTcpDxe: fix DestroyChild() call Laszlo Ersek
2019-09-24 10:47 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 12:12 ` Laszlo Ersek
2019-09-26 12:16 ` Ard Biesheuvel
2019-09-17 19:49 ` [PATCH 04/35] EmbeddedPkg/Universal/MmcDxe: "fix" CloseProtocol() call in BindingStop() Laszlo Ersek
2019-09-25 15:52 ` Ard Biesheuvel
2019-09-17 19:49 ` [PATCH 05/35] EmulatorPkg/DxeTimerLib: drop superfluous cast Laszlo Ersek
2019-09-17 20:02 ` Ni, Ray
2019-09-20 15:00 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-17 19:49 ` [PATCH 06/35] EmulatorPkg: stop abusing EFI_HANDLE for keystroke notify registration Laszlo Ersek
2019-09-17 20:01 ` Ni, Ray
2019-09-24 10:44 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-17 19:49 ` [PATCH 07/35] MdeModulePkg: fix cast in GetModuleInfoFromHandle() calls Laszlo Ersek
2019-09-19 1:46 ` Dandan Bi
2019-09-24 10:43 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-17 19:49 ` [PATCH 08/35] MdeModulePkg/UefiHiiLib: stop using EFI_HANDLE in place of EFI_HII_HANDLE Laszlo Ersek
2019-09-19 1:46 ` Dandan Bi
2019-09-24 10:49 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-17 19:49 ` [PATCH 09/35] MdeModulePkg: stop abusing EFI_EVENT for protocol notify registration Laszlo Ersek
2019-09-17 20:17 ` Ni, Ray
2019-09-25 16:02 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 12:10 ` Laszlo Ersek
2019-09-17 19:49 ` [PATCH 10/35] MdeModulePkg/PlatformVarCleanupLib: fix HiiConstructConfigHdr() call Laszlo Ersek
2019-09-23 11:45 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-24 17:28 ` Laszlo Ersek
2019-09-17 19:49 ` [PATCH 11/35] MdeModulePkg: document workaround for EFI_RUNTIME_EVENT_ENTRY PI spec bug Laszlo Ersek
2019-09-19 1:47 ` Dandan Bi
2019-09-17 19:49 ` [PATCH 12/35] MdeModulePkg: stop abusing EFI_HANDLE for keystroke notify registration Laszlo Ersek
2019-09-17 20:16 ` [edk2-devel] " Ni, Ray
2019-09-19 1:47 ` Dandan Bi
2019-09-24 10:54 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-17 19:49 ` [PATCH 13/35] MdeModulePkg: PEI Core: clean up "AprioriFile" handling in FindFileEx() Laszlo Ersek
2019-09-19 1:46 ` Dandan Bi
2019-09-24 15:40 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-17 19:49 ` [PATCH 14/35] MdeModulePkg: fix UninstallMultipleProtocolInterfaces() calls Laszlo Ersek
2019-09-17 20:16 ` Ni, Ray
2019-09-17 19:49 ` [PATCH 15/35] MdeModulePkg/PiSmmCore: make type punning consistent Laszlo Ersek
2019-09-18 2:38 ` Dong, Eric
2019-09-17 19:49 ` [PATCH 16/35] MdeModulePkg/S3SaveState: cast Position for S3BootScriptLib explicitly Laszlo Ersek
2019-09-19 1:47 ` [edk2-devel] " Dandan Bi
2019-09-17 19:49 ` [PATCH 17/35] MdePkg/DxeServicesLib: remove bogus cast Laszlo Ersek
2019-09-18 4:47 ` [edk2-devel] " Liming Gao
2019-09-24 15:38 ` Philippe Mathieu-Daudé
2019-09-17 19:49 ` [PATCH 18/35] NetworkPkg/DxeNetLib: fix type typo in NetLibGetMacAddress() Laszlo Ersek
2019-09-24 11:00 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-10-08 0:32 ` Siyuan, Fu
2019-10-08 23:36 ` Laszlo Ersek
2019-09-26 12:14 ` Laszlo Ersek
2019-10-03 11:05 ` Laszlo Ersek
2019-10-04 19:18 ` Laszlo Ersek
2019-10-07 18:15 ` Michael D Kinney
2019-09-17 19:49 ` [PATCH 19/35] NetworkPkg: fix CloseProtocol & UninstallMultipleProtocolInterfaces calls Laszlo Ersek
2019-09-26 12:14 ` [edk2-devel] " Laszlo Ersek
2019-09-26 12:42 ` Philippe Mathieu-Daudé
2019-09-30 20:16 ` Laszlo Ersek
2019-10-01 7:18 ` Philippe Mathieu-Daudé
2019-09-27 0:03 ` Siyuan, Fu
2019-09-17 19:49 ` [PATCH 20/35] NetworkPkg/Ip4Dxe: fix NetLibDestroyServiceChild() call Laszlo Ersek
2019-09-23 16:03 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-27 0:04 ` Siyuan, Fu
2019-09-26 12:14 ` Laszlo Ersek
2019-09-17 19:49 ` [PATCH 21/35] NetworkPkg/TcpDxe: fix SockFreeFoo() parameter list Laszlo Ersek
2019-09-23 15:09 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 12:14 ` Laszlo Ersek
2019-09-27 0:06 ` Siyuan, Fu
2019-09-17 19:49 ` [PATCH 22/35] OvmfPkg/XenBusDxe: fix UninstallMultipleProtocolInterfaces() call Laszlo Ersek
2019-09-18 9:32 ` Anthony PERARD
2019-09-18 10:30 ` Julien Grall
2019-09-23 15:03 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-17 19:49 ` [PATCH 23/35] OvmfPkg/VirtioNetDxe: fix SignalEvent() call Laszlo Ersek
2019-09-20 14:59 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 12:16 ` Laszlo Ersek
2019-09-26 12:17 ` Ard Biesheuvel
2019-09-17 19:49 ` [PATCH 24/35] OvmfPkg/PlatformDxe: fix EFI_HII_HANDLE parameters of internal functions Laszlo Ersek
2019-09-20 14:56 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-25 15:57 ` Ard Biesheuvel
2019-09-17 19:49 ` [PATCH 25/35] OvmfPkg/VideoDxe: document EFI_EDID_OVERRIDE_PROTOCOL.GetEdid() call Laszlo Ersek
2019-09-23 15:59 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 12:43 ` Laszlo Ersek
2019-10-04 20:01 ` Laszlo Ersek
2019-09-17 19:49 ` [PATCH 26/35] SecurityPkg: fix UninstallMultipleProtocolInterfaces() calls Laszlo Ersek
2019-09-23 9:55 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 12:45 ` Laszlo Ersek
2019-10-03 11:06 ` Laszlo Ersek
2019-10-04 0:05 ` Yao, Jiewen
2019-10-04 13:14 ` Zhang, Chao B
2019-10-04 18:15 ` Laszlo Ersek
2019-10-05 14:28 ` Zhang, Chao B
2019-10-07 18:14 ` Laszlo Ersek
2019-09-17 19:49 ` [PATCH 27/35] SecurityPkg: stop abusing EFI_EVENT for protocol notify registration Laszlo Ersek
2019-09-23 9:56 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 12:46 ` Laszlo Ersek
2019-10-03 11:06 ` Laszlo Ersek
2019-10-04 0:05 ` Yao, Jiewen
2019-10-04 13:16 ` Zhang, Chao B
2019-10-05 14:28 ` Zhang, Chao B
2019-09-17 19:49 ` [PATCH 28/35] ShellPkg/UefiShellDriver1CommandsLib: fix parameter list typo Laszlo Ersek
2019-09-24 15:44 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 2:46 ` Gao, Zhichao
2019-09-17 19:49 ` [PATCH 29/35] ShellPkg: stop using EFI_HANDLE in place of EFI_HII_HANDLE Laszlo Ersek
2019-09-25 18:04 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 11:48 ` Laszlo Ersek
2019-09-26 2:43 ` Gao, Zhichao
2019-09-17 19:49 ` [PATCH 30/35] ShellPkg: stop taking EFI_HANDLE in place of SHELL_FILE_HANDLE Laszlo Ersek
2019-09-23 9:58 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-26 2:53 ` Gao, Zhichao
2019-09-26 12:08 ` Laszlo Ersek
2019-09-26 14:43 ` Gao, Zhichao
2019-09-30 19:52 ` Laszlo Ersek [this message]
2019-09-17 19:49 ` [PATCH 31/35] ShellPkg/UefiShellDebug1CommandsLib: fix ShellCloseFile() call Laszlo Ersek
2019-09-23 10:01 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-23 14:28 ` Carsey, Jaben
2019-09-24 1:18 ` Gao, Zhichao
2019-09-17 19:49 ` [PATCH 32/35] ShellPkg/UefiShellLib: clarify workaround for unfixable EdkShell bug Laszlo Ersek
2019-09-26 12:47 ` [edk2-devel] " Laszlo Ersek
2019-09-26 14:05 ` Gao, Zhichao
2019-09-26 14:58 ` Carsey, Jaben
2019-09-17 19:49 ` [PATCH 33/35] StandaloneMmPkg/Core: stop abusing EFI_HANDLE for FwVolHeader tracking Laszlo Ersek
2019-09-26 12:48 ` [edk2-devel] " Laszlo Ersek
2019-10-03 11:10 ` Laszlo Ersek
2019-10-03 11:17 ` Achin Gupta
2019-10-04 0:10 ` Yao, Jiewen
2019-10-04 14:53 ` Achin Gupta
2019-09-17 19:49 ` [PATCH 34/35] UefiPayloadPkg/BlSupportPei: fix MMCONFIG assignment from XSDT Laszlo Ersek
2019-09-23 2:30 ` Guo Dong
2019-09-26 13:17 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-17 19:49 ` [PATCH 35/35] UefiPayloadPkg/BlSupportDxe: fix ReserveResourceInGcd() calls Laszlo Ersek
2019-09-23 2:28 ` [edk2-devel] " Guo Dong
2019-09-23 15:08 ` Philippe Mathieu-Daudé
2019-09-23 16:02 ` Guo Dong
2019-09-23 16:04 ` Philippe Mathieu-Daudé
2019-09-24 17:29 ` Laszlo Ersek
2019-09-19 0:32 ` [edk2-devel] [PATCH 00/35] edk2: clean up the usage of standardized (VOID*) typedefs Wu, Hao A
2019-09-23 16:27 ` Marvin Häuser
2019-09-24 20:26 ` Laszlo Ersek
2019-09-25 8:13 ` Marvin Häuser
2019-09-25 15:54 ` Laszlo Ersek
2019-10-08 23:49 ` Laszlo Ersek
2019-10-09 9:50 ` Laszlo Ersek
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=0a2e62d1-ab60-ef1f-512c-27df61b4c592@redhat.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