]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellLevel1CommandsLib/Stall.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / ShellPkg / Library / UefiShellLevel1CommandsLib / Stall.c
CommitLineData
77dcec12 1/** @file\r
2 Main file for stall shell level 1 function.\r
3\r
c011b6c9 4 (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
ba0014b9 5 Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
56ba3746 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
77dcec12 7\r
8**/\r
9\r
10#include "UefiShellLevel1CommandsLib.h"\r
11\r
12/**\r
13 Function for 'stall' command.\r
14\r
15 @param[in] ImageHandle Handle to the Image (NULL if Internal).\r
16 @param[in] SystemTable Pointer to the System Table (NULL if Internal).\r
17**/\r
18SHELL_STATUS\r
19EFIAPI\r
20ShellCommandRunStall (\r
21 IN EFI_HANDLE ImageHandle,\r
22 IN EFI_SYSTEM_TABLE *SystemTable\r
23 )\r
24{\r
47d20b54
MK
25 EFI_STATUS Status;\r
26 LIST_ENTRY *Package;\r
27 CHAR16 *ProblemParam;\r
28 SHELL_STATUS ShellStatus;\r
29 UINT64 Intermediate;\r
77dcec12 30\r
47d20b54 31 ShellStatus = SHELL_SUCCESS;\r
77dcec12 32\r
33 //\r
34 // initialize the shell lib (we must be in non-auto-init...)\r
35 //\r
47d20b54
MK
36 Status = ShellInitialize ();\r
37 ASSERT_EFI_ERROR (Status);\r
77dcec12 38\r
47d20b54
MK
39 Status = CommandInit ();\r
40 ASSERT_EFI_ERROR (Status);\r
77dcec12 41\r
42 //\r
43 // parse the command line\r
44 //\r
45 Status = ShellCommandLineParse (EmptyParamList, &Package, &ProblemParam, TRUE);\r
47d20b54
MK
46 if (EFI_ERROR (Status)) {\r
47 if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {\r
48 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel1HiiHandle, L"stall", ProblemParam);\r
49 FreePool (ProblemParam);\r
77dcec12 50 ShellStatus = SHELL_INVALID_PARAMETER;\r
51 } else {\r
47d20b54 52 ASSERT (FALSE);\r
77dcec12 53 }\r
54 } else {\r
47d20b54
MK
55 if (ShellCommandLineGetRawValue (Package, 2) != NULL) {\r
56 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel1HiiHandle, L"stall");\r
77dcec12 57 ShellStatus = SHELL_INVALID_PARAMETER;\r
47d20b54
MK
58 } else if (ShellCommandLineGetRawValue (Package, 1) == NULL) {\r
59 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel1HiiHandle, L"stall");\r
77dcec12 60 ShellStatus = SHELL_INVALID_PARAMETER;\r
61 } else {\r
47d20b54
MK
62 Status = ShellConvertStringToUint64 (ShellCommandLineGetRawValue (Package, 1), &Intermediate, FALSE, FALSE);\r
63 if (EFI_ERROR (Status) || (((UINT64)(UINTN)(Intermediate)) != Intermediate)) {\r
64 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellLevel1HiiHandle, L"stall", ShellCommandLineGetRawValue (Package, 1));\r
77dcec12 65 ShellStatus = SHELL_INVALID_PARAMETER;\r
66 } else {\r
47d20b54
MK
67 Status = gBS->Stall ((UINTN)Intermediate);\r
68 if (EFI_ERROR (Status)) {\r
69 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_STALL_FAILED), gShellLevel1HiiHandle, L"stall");\r
77dcec12 70 ShellStatus = SHELL_DEVICE_ERROR;\r
71 }\r
72 }\r
73 }\r
47d20b54 74\r
77dcec12 75 ShellCommandLineFreeVarList (Package);\r
76 }\r
47d20b54 77\r
77dcec12 78 return (ShellStatus);\r
79}\r