From 5e5ca3fb8b81ce062b2dc2ea87481dda6cf4a8fb Mon Sep 17 00:00:00 2001 From: vit9696 Date: Mon, 20 Apr 2020 15:33:43 +0300 Subject: [PATCH] OcMiscLib: Introduce GetArguments function --- Application/ChipTune/ChipTune.c | 25 ----------- Application/ChipTune/ChipTune.inf | 1 - Application/OpenControl/OpenControl.c | 26 +---------- Application/OpenControl/OpenControl.inf | 2 +- Application/ResetSystem/ResetSystem.c | 41 ------------------ Application/ResetSystem/ResetSystem.inf | 4 -- Application/RtcRw/RtcRw.c | 26 ----------- Application/RtcRw/RtcRw.inf | 4 +- Include/Library/OcMiscLib.h | 16 +++++++ Library/OcMiscLib/OcMiscLib.inf | 4 +- ...ProtocolInterfaces.c => ProtocolSupport.c} | 43 ++++++++++++++++--- 11 files changed, 60 insertions(+), 132 deletions(-) rename Library/OcMiscLib/{UninstallAllProtocolInterfaces.c => ProtocolSupport.c} (62%) diff --git a/Application/ChipTune/ChipTune.c b/Application/ChipTune/ChipTune.c index 9dcfad34..e3142a00 100644 --- a/Application/ChipTune/ChipTune.c +++ b/Application/ChipTune/ChipTune.c @@ -24,31 +24,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include -#include - -STATIC -EFI_STATUS -GetArguments ( - OUT UINTN *Argc, - OUT CHAR16 ***Argv - ) -{ - EFI_STATUS Status; - EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters; - - Status = gBS->HandleProtocol ( - gImageHandle, - &gEfiShellParametersProtocolGuid, - (VOID**) &ShellParameters - ); - if (EFI_ERROR (Status)) { - return Status; - } - - *Argc = ShellParameters->Argc; - *Argv = ShellParameters->Argv; - return EFI_SUCCESS; -} EFI_STATUS EFIAPI diff --git a/Application/ChipTune/ChipTune.inf b/Application/ChipTune/ChipTune.inf index 818e4a66..2e6d3e08 100644 --- a/Application/ChipTune/ChipTune.inf +++ b/Application/ChipTune/ChipTune.inf @@ -35,7 +35,6 @@ ChipTune.c [Protocols] - gEfiShellParametersProtocolGuid gAppleHighDefinitionAudioProtocolGuid gAppleBeepGenProtocolGuid diff --git a/Application/OpenControl/OpenControl.c b/Application/OpenControl/OpenControl.c index c2c1bf94..2f4d357b 100644 --- a/Application/OpenControl/OpenControl.c +++ b/Application/OpenControl/OpenControl.c @@ -17,33 +17,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include +#include #include #include -#include - -STATIC -EFI_STATUS -GetArguments ( - OUT UINTN *Argc, - OUT CHAR16 ***Argv - ) -{ - EFI_STATUS Status; - EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters; - - Status = gBS->HandleProtocol ( - gImageHandle, - &gEfiShellParametersProtocolGuid, - (VOID**) &ShellParameters - ); - if (EFI_ERROR (Status)) { - return Status; - } - - *Argc = ShellParameters->Argc; - *Argv = ShellParameters->Argv; - return EFI_SUCCESS; -} EFI_STATUS EFIAPI diff --git a/Application/OpenControl/OpenControl.inf b/Application/OpenControl/OpenControl.inf index ca81d676..34635447 100644 --- a/Application/OpenControl/OpenControl.inf +++ b/Application/OpenControl/OpenControl.inf @@ -35,7 +35,6 @@ OpenControl.c [Protocols] - gEfiShellParametersProtocolGuid gOcFirmwareRuntimeProtocolGuid [Packages] @@ -47,6 +46,7 @@ BaseLib BaseMemoryLib OcConsoleControlEntryModeGenericLib + OcMiscLib UefiApplicationEntryPoint UefiBootServicesTableLib UefiLib diff --git a/Application/ResetSystem/ResetSystem.c b/Application/ResetSystem/ResetSystem.c index 8ebca40e..0ea7e3d2 100644 --- a/Application/ResetSystem/ResetSystem.c +++ b/Application/ResetSystem/ResetSystem.c @@ -20,47 +20,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include -#include -#include -#include - -STATIC -EFI_STATUS -GetArguments ( - OUT UINTN *Argc, - OUT CHAR16 ***Argv - ) -{ - EFI_STATUS Status; - EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters; - EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; - - Status = gBS->HandleProtocol ( - gImageHandle, - &gEfiShellParametersProtocolGuid, - (VOID**) &ShellParameters - ); - if (!EFI_ERROR (Status)) { - *Argc = ShellParameters->Argc; - *Argv = ShellParameters->Argv; - return EFI_SUCCESS; - } - - Status = gBS->HandleProtocol ( - gImageHandle, - &gEfiLoadedImageProtocolGuid, - (VOID**) &LoadedImage - ); - if (EFI_ERROR (Status) || LoadedImage->LoadOptions == NULL) { - return EFI_NOT_FOUND; - } - - STATIC CHAR16 *StArgv[2] = {L"Self", NULL}; - StArgv[1] = LoadedImage->LoadOptions; - *Argc = ARRAY_SIZE (StArgv); - *Argv = StArgv; - return EFI_SUCCESS; -} EFI_STATUS EFIAPI diff --git a/Application/ResetSystem/ResetSystem.inf b/Application/ResetSystem/ResetSystem.inf index a2cf1819..e3b171d3 100644 --- a/Application/ResetSystem/ResetSystem.inf +++ b/Application/ResetSystem/ResetSystem.inf @@ -34,10 +34,6 @@ [Sources] ResetSystem.c -[Protocols] - gEfiShellParametersProtocolGuid - gEfiLoadedImageProtocolGuid - [Packages] EfiPkg/EfiPkg.dec MdePkg/MdePkg.dec diff --git a/Application/RtcRw/RtcRw.c b/Application/RtcRw/RtcRw.c index 16c34e14..3b1d7f4d 100644 --- a/Application/RtcRw/RtcRw.c +++ b/Application/RtcRw/RtcRw.c @@ -22,32 +22,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include -#include -#include - -STATIC -EFI_STATUS -GetArguments ( - OUT UINTN *Argc, - OUT CHAR16 ***Argv - ) -{ - EFI_STATUS Status; - EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters; - - Status = gBS->HandleProtocol ( - gImageHandle, - &gEfiShellParametersProtocolGuid, - (VOID**) &ShellParameters - ); - if (EFI_ERROR (Status)) { - return Status; - } - - *Argc = ShellParameters->Argc; - *Argv = ShellParameters->Argv; - return EFI_SUCCESS; -} EFI_STATUS EFIAPI diff --git a/Application/RtcRw/RtcRw.inf b/Application/RtcRw/RtcRw.inf index d468cd01..991dad34 100644 --- a/Application/RtcRw/RtcRw.inf +++ b/Application/RtcRw/RtcRw.inf @@ -34,9 +34,6 @@ [Sources] RtcRw.c -[Protocols] - gEfiShellParametersProtocolGuid - [Packages] EfiPkg/EfiPkg.dec MdePkg/MdePkg.dec @@ -44,6 +41,7 @@ [LibraryClasses] OcConsoleLib + OcMiscLib OcRtcLib UefiApplicationEntryPoint UefiBootServicesTableLib diff --git a/Include/Library/OcMiscLib.h b/Include/Library/OcMiscLib.h index 6233c13c..a57d26f8 100755 --- a/Include/Library/OcMiscLib.h +++ b/Include/Library/OcMiscLib.h @@ -52,6 +52,22 @@ ApplyPatch ( ); /** + Obtain application arguments. + + @param[out] Argc Argument count. + @param[out] Argv Argument list. + + @retval EFI_SUCCESS on success. +**/ +EFI_STATUS +GetArguments ( + OUT UINTN *Argc, + OUT CHAR16 ***Argv + ); + +/** + Uninstall all protocols with the specified GUID. + @param[in] Protocol The published unique identifier of the protocol. It is the caller’s responsibility to pass in a valid GUID. diff --git a/Library/OcMiscLib/OcMiscLib.inf b/Library/OcMiscLib/OcMiscLib.inf index 3eb20703..87a4b8e3 100755 --- a/Library/OcMiscLib/OcMiscLib.inf +++ b/Library/OcMiscLib/OcMiscLib.inf @@ -34,6 +34,8 @@ [Protocols] gEfiPciIoProtocolGuid + gEfiShellParametersProtocolGuid + gEfiLoadedImageProtocolGuid [LibraryClasses] BaseLib @@ -46,5 +48,5 @@ DataPatcher.c DirectReset.c ReleaseUsbOwnership.c - UninstallAllProtocolInterfaces.c + ProtocolSupport.c Math.c diff --git a/Library/OcMiscLib/UninstallAllProtocolInterfaces.c b/Library/OcMiscLib/ProtocolSupport.c similarity index 62% rename from Library/OcMiscLib/UninstallAllProtocolInterfaces.c rename to Library/OcMiscLib/ProtocolSupport.c index 97fb15bf..7ce5910b 100644 --- a/Library/OcMiscLib/UninstallAllProtocolInterfaces.c +++ b/Library/OcMiscLib/ProtocolSupport.c @@ -17,13 +17,46 @@ #include #include #include +#include +#include -/** - @param[in] Protocol The published unique identifier of the protocol. It is the caller’s responsibility to pass in - a valid GUID. +EFI_STATUS +GetArguments ( + OUT UINTN *Argc, + OUT CHAR16 ***Argv + ) +{ + EFI_STATUS Status; + EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters; + EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; + + Status = gBS->HandleProtocol ( + gImageHandle, + &gEfiShellParametersProtocolGuid, + (VOID**) &ShellParameters + ); + if (!EFI_ERROR (Status)) { + *Argc = ShellParameters->Argc; + *Argv = ShellParameters->Argv; + return EFI_SUCCESS; + } + + Status = gBS->HandleProtocol ( + gImageHandle, + &gEfiLoadedImageProtocolGuid, + (VOID**) &LoadedImage + ); + if (EFI_ERROR (Status) || LoadedImage->LoadOptions == NULL) { + return EFI_NOT_FOUND; + } + + STATIC CHAR16 *StArgv[2] = {L"Self", NULL}; + StArgv[1] = LoadedImage->LoadOptions; + *Argc = ARRAY_SIZE (StArgv); + *Argv = StArgv; + return EFI_SUCCESS; +} - @retval EFI_SUCCESS on success. -**/ EFI_STATUS UninstallAllProtocolInstances ( EFI_GUID *Protocol