mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
This patch aims to help breaking down the long function present in the ShellPkg and reduce complexity/nested code and conditions. Lower the indentation level in the newly created MainCmdXXX() functions. Remove the ShellStatus variable which is not necessary. No functional change should be induced by this patch. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
98 lines
2.8 KiB
C
98 lines
2.8 KiB
C
/** @file
|
|
Main file for stall shell level 1 function.
|
|
|
|
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
|
|
Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#include "UefiShellLevel1CommandsLib.h"
|
|
|
|
/** Main function of the 'Stall' command.
|
|
|
|
@param[in] Package List of input parameter for the command.
|
|
**/
|
|
STATIC
|
|
SHELL_STATUS
|
|
MainCmdStall (
|
|
LIST_ENTRY *Package
|
|
)
|
|
{
|
|
EFI_STATUS Status;
|
|
UINT64 Intermediate;
|
|
|
|
if (ShellCommandLineGetRawValue (Package, 2) != NULL) {
|
|
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel1HiiHandle, L"stall");
|
|
return SHELL_INVALID_PARAMETER;
|
|
} else if (ShellCommandLineGetRawValue (Package, 1) == NULL) {
|
|
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel1HiiHandle, L"stall");
|
|
return SHELL_INVALID_PARAMETER;
|
|
}
|
|
|
|
Status = ShellConvertStringToUint64 (ShellCommandLineGetRawValue (Package, 1), &Intermediate, FALSE, FALSE);
|
|
if (EFI_ERROR (Status) || (((UINT64)(UINTN)(Intermediate)) != Intermediate)) {
|
|
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel1HiiHandle, L"stall", ShellCommandLineGetRawValue (Package, 1));
|
|
return SHELL_INVALID_PARAMETER;
|
|
}
|
|
|
|
Status = gBS->Stall ((UINTN)Intermediate);
|
|
if (EFI_ERROR (Status)) {
|
|
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_STALL_FAILED), gShellLevel1HiiHandle, L"stall");
|
|
return SHELL_DEVICE_ERROR;
|
|
}
|
|
|
|
return SHELL_SUCCESS;
|
|
}
|
|
|
|
/**
|
|
Function for 'stall' command.
|
|
|
|
@param[in] ImageHandle Handle to the Image (NULL if Internal).
|
|
@param[in] SystemTable Pointer to the System Table (NULL if Internal).
|
|
**/
|
|
SHELL_STATUS
|
|
EFIAPI
|
|
ShellCommandRunStall (
|
|
IN EFI_HANDLE ImageHandle,
|
|
IN EFI_SYSTEM_TABLE *SystemTable
|
|
)
|
|
{
|
|
EFI_STATUS Status;
|
|
LIST_ENTRY *Package;
|
|
CHAR16 *ProblemParam;
|
|
SHELL_STATUS ShellStatus;
|
|
|
|
ShellStatus = SHELL_SUCCESS;
|
|
|
|
//
|
|
// initialize the shell lib (we must be in non-auto-init...)
|
|
//
|
|
Status = ShellInitialize ();
|
|
ASSERT_EFI_ERROR (Status);
|
|
|
|
Status = CommandInit ();
|
|
ASSERT_EFI_ERROR (Status);
|
|
|
|
//
|
|
// parse the command line
|
|
//
|
|
Status = ShellCommandLineParse (EmptyParamList, &Package, &ProblemParam, TRUE);
|
|
if (EFI_ERROR (Status)) {
|
|
if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
|
|
ShellPrintHiiDefaultEx (STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel1HiiHandle, L"stall", ProblemParam);
|
|
FreePool (ProblemParam);
|
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
|
} else {
|
|
ASSERT (FALSE);
|
|
}
|
|
|
|
return ShellStatus;
|
|
}
|
|
|
|
ShellStatus = MainCmdStall (Package);
|
|
|
|
ShellCommandLineFreeVarList (Package);
|
|
|
|
return (ShellStatus);
|
|
}
|