74 lines
1.6 KiB
C
74 lines
1.6 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1999 Intel Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
reset.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
|
||
|
Revision History
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "shell.h"
|
||
|
|
||
|
EFI_STATUS
|
||
|
InitializeReset (
|
||
|
IN EFI_HANDLE ImageHandle,
|
||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||
|
);
|
||
|
|
||
|
EFI_DRIVER_ENTRY_POINT(InitializeReset)
|
||
|
|
||
|
EFI_STATUS
|
||
|
InitializeReset (
|
||
|
IN EFI_HANDLE ImageHandle,
|
||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||
|
)
|
||
|
/*+++
|
||
|
|
||
|
reset [warm]
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
EFI_RESET_TYPE ResetType;
|
||
|
UINTN DataSize;
|
||
|
CHAR16 *ResetData, *Str;
|
||
|
|
||
|
InstallInternalShellCommand (
|
||
|
ImageHandle, SystemTable, InitializeReset,
|
||
|
L"reset", /* command */
|
||
|
L"reset [/warm] [reset string]", /* command syntax */
|
||
|
L"Cold or Warm reset", /* 1 line descriptor */
|
||
|
NULL /* command help page */
|
||
|
);
|
||
|
|
||
|
InitializeShellApplication (ImageHandle, SystemTable);
|
||
|
|
||
|
ResetType = EfiResetCold;
|
||
|
if (SI->Argc > 1) {
|
||
|
Str = SI->Argv[1];
|
||
|
if (Str[0] == '-' || Str[0] == '/') {
|
||
|
if (Str[1] = 'W' || Str[1] == 'w') {
|
||
|
ResetType = EfiResetWarm;
|
||
|
} else {
|
||
|
Print(L"reset [/warm] [reset string]\n");
|
||
|
return EFI_SUCCESS;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DataSize = 0;
|
||
|
ResetData = NULL;
|
||
|
if (SI->Argc > 2) {
|
||
|
ResetData = SI->Argv[2];
|
||
|
DataSize = StrSize(ResetData);
|
||
|
}
|
||
|
|
||
|
return RT->ResetSystem(ResetType, EFI_SUCCESS, DataSize, ResetData);
|
||
|
}
|
||
|
|