+++ /dev/null
-/** @file\r
- Watchdog Timer Architectural Protocol as defined in the DXE CIS\r
-\r
- Used to provide system watchdog timer services\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. 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: WatchdogTimer.h\r
-\r
- @par Revision Reference:\r
- Version 0.91B.\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
-typedef struct _EFI_WATCHDOG_TIMER_ARCH_PROTOCOL EFI_WATCHDOG_TIMER_ARCH_PROTOCOL;\r
-\r
-/**\r
- A function of this type is called when the watchdog timer fires if a \r
- handler has been registered.\r
-\r
- @param 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
- @return None.\r
-\r
-**/\r
-typedef\r
-VOID\r
-(EFIAPI *EFI_WATCHDOG_TIMER_NOTIFY) (\r
- IN UINT64 Time\r
- );\r
-\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
- @param This The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.\r
- @param NotifyFunction The function to call when the watchdog timer fires. If this\r
- is NULL, then the handler will be unregistered.\r
-\r
- @retval EFI_SUCCESS The watchdog timer handler was registered or\r
- unregistered.\r
- @retval EFI_ALREADY_STARTED NotifyFunction is not NULL, and a handler is already\r
- registered.\r
- @retval EFI_INVALID_PARAMETER NotifyFunction is NULL, and a handler was not\r
- previously registered.\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
- 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
- @param This The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.\r
- @param 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
- @retval EFI_SUCCESS The watchdog timer has been programmed to fire in Time\r
- 100 nS units.\r
- @retval EFI_DEVICE_ERROR A watchdog timer could not be programmed due to a device\r
- error.\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
- 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
- @param This The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.\r
- @param 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
- @retval EFI_SUCCESS The amount of time that the system will wait before\r
- firing the watchdog timer was returned in TimerPeriod.\r
- @retval EFI_INVALID_PARAMETER TimerPeriod is NULL.\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
-/**\r
- Interface stucture for the Watchdog Timer Architectural Protocol.\r
-\r
- @par 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
- @param RegisterHandler Registers a handler that is invoked when the watchdog\r
- timer fires.\r
-\r
- @param 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
- @param 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
-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
-extern EFI_GUID gEfiWatchdogTimerArchProtocolGuid;\r
-\r
-#endif\r
-\r