| /*++ | |
| Copyright (c) 2006, Intel Corporation | |
| All rights reserved. This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| Module Name: | |
| SetWatchdogTimer.c | |
| Abstract: | |
| Tiano Miscellaneous Services SetWatchdogTimer service implementation | |
| --*/ | |
| #include <DxeMain.h> | |
| #define WATCHDOG_TIMER_CALIBRATE_PER_SECOND 10000000 | |
| EFI_STATUS | |
| EFIAPI | |
| CoreSetWatchdogTimer ( | |
| IN UINTN Timeout, | |
| IN UINT64 WatchdogCode, | |
| IN UINTN DataSize, | |
| IN CHAR16 *WatchdogData OPTIONAL | |
| ) | |
| /*++ | |
| Routine Description: | |
| Sets the system's watchdog timer. | |
| Arguments: | |
| Timeout The number of seconds. Zero disables the timer. | |
| ///////following three parameters are left for platform specific using | |
| WatchdogCode The numberic code to log. 0x0 to 0xffff are firmware | |
| DataSize Size of the optional data | |
| WatchdogData Optional Null terminated unicode string followed by binary | |
| data. | |
| Returns: | |
| EFI_SUCCESS Timeout has been set | |
| EFI_NOT_AVAILABLE_YET WatchdogTimer is not available yet | |
| EFI_UNSUPPORTED System does not have a timer (currently not used) | |
| EFI_DEVICE_ERROR Could not complete due to hardware error | |
| --*/ | |
| { | |
| EFI_STATUS Status; | |
| // | |
| // Check our architectural protocol | |
| // | |
| if (gWatchdogTimer == NULL) { | |
| return EFI_NOT_AVAILABLE_YET; | |
| } | |
| // | |
| // Attempt to set the timeout | |
| // | |
| Status = gWatchdogTimer->SetTimerPeriod (gWatchdogTimer, MultU64x32 (Timeout, WATCHDOG_TIMER_CALIBRATE_PER_SECOND)); | |
| // | |
| // Check for errors | |
| // | |
| if (EFI_ERROR (Status)) { | |
| return EFI_DEVICE_ERROR; | |
| } | |
| return EFI_SUCCESS; | |
| } |