]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellLevel1CommandsLib/Stall.c
ShellPkg: acpiview: Add GT Frame Number validation to GTDT parser
[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
25 EFI_STATUS Status;\r
26 LIST_ENTRY *Package;\r
27 CHAR16 *ProblemParam;\r
28 SHELL_STATUS ShellStatus;\r
29 UINT64 Intermediate;\r
30\r
31 ShellStatus = SHELL_SUCCESS;\r
32\r
33 //\r
34 // initialize the shell lib (we must be in non-auto-init...)\r
35 //\r
36 Status = ShellInitialize();\r
37 ASSERT_EFI_ERROR(Status);\r
38\r
39 Status = CommandInit();\r
40 ASSERT_EFI_ERROR(Status);\r
41\r
42 //\r
43 // parse the command line\r
44 //\r
45 Status = ShellCommandLineParse (EmptyParamList, &Package, &ProblemParam, TRUE);\r
46 if (EFI_ERROR(Status)) {\r
47 if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
ba0014b9 48 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel1HiiHandle, L"stall", ProblemParam);\r
77dcec12 49 FreePool(ProblemParam);\r
50 ShellStatus = SHELL_INVALID_PARAMETER;\r
51 } else {\r
52 ASSERT(FALSE);\r
53 }\r
54 } else {\r
55 if (ShellCommandLineGetRawValue(Package, 2) != NULL) {\r
ba0014b9 56 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellLevel1HiiHandle, L"stall");\r
77dcec12 57 ShellStatus = SHELL_INVALID_PARAMETER;\r
58 } else if (ShellCommandLineGetRawValue(Package, 1) == NULL) {\r
ba0014b9 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
62 Status = ShellConvertStringToUint64(ShellCommandLineGetRawValue(Package, 1), &Intermediate, FALSE, FALSE);\r
63 if (EFI_ERROR(Status) || ((UINT64)(UINTN)(Intermediate)) != Intermediate) {\r
ba0014b9 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
67 Status = gBS->Stall((UINTN)Intermediate);\r
68 if (EFI_ERROR(Status)) {\r
ba0014b9 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
74 ShellCommandLineFreeVarList (Package);\r
75 }\r
76 return (ShellStatus);\r
77}\r
78\r