[edk2-devel] [PATCH 30/35] ShellPkg: stop taking EFI_HANDLE in place of SHELL_FILE_HANDLE
Laszlo Ersek
lersek at redhat.com
Thu Sep 26 12:08:51 UTC 2019
On 09/26/19 04:53, Gao, Zhichao wrote:
>
>
>> -----Original Message-----
>> From: devel at edk2.groups.io [mailto:devel at edk2.groups.io] On Behalf Of
>> Laszlo Ersek
>> Sent: Wednesday, September 18, 2019 3:50 AM
>> To: edk2-devel-groups-io <devel at edk2.groups.io>
>> Cc: Carsey, Jaben <jaben.carsey at intel.com>; Ni, Ray <ray.ni at intel.com>;
>> Gao, Zhichao <zhichao.gao at 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 at intel.com>
>> Cc: Ray Ni <ray.ni at intel.com>
>> Cc: Zhichao Gao <zhichao.gao at intel.com>
>> Signed-off-by: Laszlo Ersek <lersek at 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 at edk2.groups.io
>> Unsubscribe: https://edk2.groups.io/g/devel/unsub
>> [zhichao.gao at intel.com]
>> -=-=-=-=-=-=
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#48092): https://edk2.groups.io/g/devel/message/48092
Mute This Topic: https://groups.io/mt/34180233/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list