+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- WatchdogTimer.h\r
-\r
-Abstract:\r
-\r
- Watchdog Timer Architectural Protocol as defined in the DXE CIS\r
-\r
- Used to provide system watchdog timer services\r
-\r
---*/\r
-\r
-#ifndef _ARCH_PROTOCOL_WATCHDOG_TIMER_H_\r
-#define _ARCH_PROTOCOL_WATCHDOG_TIMER_H_\r
-\r
-//\r
-// Global ID for the Watchdog Timer Architectural Protocol\r
-//\r
-#define EFI_WATCHDOG_TIMER_ARCH_PROTOCOL_GUID \\r
- { 0x665E3FF5, 0x46CC, 0x11d4, {0x9A, 0x38, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D} }\r
-\r
-//\r
-// Declare forward reference for the Timer Architectural Protocol\r
-//\r
-EFI_FORWARD_DECLARATION (EFI_WATCHDOG_TIMER_ARCH_PROTOCOL);\r
-\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_WATCHDOG_TIMER_NOTIFY) (\r
- IN UINT64 Time\r
- );\r
-/*++\r
-\r
-Routine Description:\r
-\r
- A function of this type is called when the watchdog timer fires if a \r
- handler has been registered.\r
-\r
-Arguments:\r
-\r
- Time - The time in 100 ns units that has passed since the watchdog \r
- timer was armed. For the notify function to be called, this \r
- must be greater than TimerPeriod.\r
- \r
-Returns: \r
-\r
- None.\r
-\r
---*/\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_WATCHDOG_TIMER_REGISTER_HANDLER) (\r
- IN EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *This,\r
- IN EFI_WATCHDOG_TIMER_NOTIFY NotifyFunction\r
- );\r
-/*++\r
-\r
-Routine Description:\r
-\r
- This function registers a handler that is to be invoked when the watchdog \r
- timer fires. By default, the EFI_WATCHDOG_TIMER protocol will call the \r
- Runtime Service ResetSystem() when the watchdog timer fires. If a \r
- NotifyFunction is registered, then the NotifyFunction will be called before \r
- the Runtime Service ResetSystem() is called. If NotifyFunction is NULL, then \r
- the watchdog handler is unregistered. If a watchdog handler is registered, \r
- then EFI_SUCCESS is returned. If an attempt is made to register a handler \r
- when a handler is already registered, then EFI_ALREADY_STARTED is returned. \r
- If an attempt is made to uninstall a handler when a handler is not installed, \r
- then return EFI_INVALID_PARAMETER.\r
-\r
-Arguments:\r
-\r
- This - The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.\r
-\r
- NotifyFunction - The function to call when the watchdog timer fires. If this\r
- is NULL, then the handler will be unregistered.\r
-\r
-Returns: \r
-\r
- EFI_SUCCESS - The watchdog timer handler was registered or \r
- unregistered.\r
-\r
- EFI_ALREADY_STARTED - NotifyFunction is not NULL, and a handler is already \r
- registered.\r
-\r
- EFI_INVALID_PARAMETER - NotifyFunction is NULL, and a handler was not \r
- previously registered.\r
-\r
---*/\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_WATCHDOG_TIMER_SET_TIMER_PERIOD) (\r
- IN EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *This,\r
- IN UINT64 TimerPeriod\r
- );\r
-/*++\r
-\r
-Routine Description:\r
-\r
- This function sets the amount of time to wait before firing the watchdog \r
- timer to TimerPeriod 100 nS units. If TimerPeriod is 0, then the watchdog \r
- timer is disabled.\r
-\r
-Arguments:\r
-\r
- This - The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.\r
-\r
- TimerPeriod - The amount of time in 100 nS units to wait before the watchdog \r
- timer is fired. If TimerPeriod is zero, then the watchdog \r
- timer is disabled.\r
- \r
-Returns: \r
-\r
- EFI_SUCCESS - The watchdog timer has been programmed to fire in Time \r
- 100 nS units.\r
-\r
- EFI_DEVICE_ERROR - A watchdog timer could not be programmed due to a device \r
- error.\r
-\r
---*/\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_WATCHDOG_TIMER_GET_TIMER_PERIOD) (\r
- IN EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *This,\r
- OUT UINT64 *TimerPeriod\r
- );\r
-/*++\r
-\r
-Routine Description:\r
-\r
- This function retrieves the amount of time the system will wait before firing \r
- the watchdog timer. This period is returned in TimerPeriod, and EFI_SUCCESS \r
- is returned. If TimerPeriod is NULL, then EFI_INVALID_PARAMETER is returned.\r
-\r
-Arguments:\r
-\r
- This - The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.\r
-\r
- TimerPeriod - A pointer to the amount of time in 100 nS units that the system \r
- will wait before the watchdog timer is fired. If TimerPeriod of\r
- zero is returned, then the watchdog timer is disabled.\r
- \r
-Returns: \r
-\r
- EFI_SUCCESS - The amount of time that the system will wait before \r
- firing the watchdog timer was returned in TimerPeriod.\r
-\r
- EFI_INVALID_PARAMETER - TimerPeriod is NULL.\r
-\r
---*/\r
-\r
-//\r
-// Interface stucture for the Watchdog Timer Architectural Protocol\r
-//\r
-struct _EFI_WATCHDOG_TIMER_ARCH_PROTOCOL {\r
- EFI_WATCHDOG_TIMER_REGISTER_HANDLER RegisterHandler;\r
- EFI_WATCHDOG_TIMER_SET_TIMER_PERIOD SetTimerPeriod;\r
- EFI_WATCHDOG_TIMER_GET_TIMER_PERIOD GetTimerPeriod;\r
-};\r
-\r
-/*++\r
-\r
- Protocol Description:\r
- This protocol provides the services required to implement the Boot Service \r
- SetWatchdogTimer(). It provides a service to set the amount of time to wait \r
- before firing the watchdog timer, and it also provides a service to register \r
- a handler that is invoked when the watchdog timer fires. This protocol can \r
- implement the watchdog timer by using the event and timer Boot Services, or \r
- it can make use of custom hardware. When the watchdog timer fires, control \r
- will be passed to a handler if one has been registered. If no handler has \r
- been registered, or the registered handler returns, then the system will be \r
- reset by calling the Runtime Service ResetSystem().\r
- \r
- Parameters:\r
-\r
- RegisterHandler - Registers a handler that is invoked when the watchdog \r
- timer fires.\r
-\r
- SetTimerPeriod - Sets the amount of time in 100 ns units to wait before the \r
- watchdog timer is fired. If this function is supported, \r
- then the watchdog timer period will be rounded up to the \r
- nearest supported watchdog timer period.\r
-\r
- GetTimerPeriod - Retrieves the amount of time in 100 ns units that the \r
- system will wait before the watchdog timer is fired.\r
-\r
---*/\r
-\r
-extern EFI_GUID gEfiWatchdogTimerArchProtocolGuid;\r
-\r
-#endif\r
-\r