| Watchdog Timer Interfaces For The Linux Operating System |
| |
| Alan Cox <alan@lxorguk.ukuu.org.uk> |
| |
| Custom Linux Driver And Program Development |
| |
| |
| The following watchdog drivers are currently implemented: |
| |
| ICS WDT501-P |
| ICS WDT501-P (no fan tachometer) |
| ICS WDT500-P |
| Software Only |
| SA1100 Internal Watchdog |
| Berkshire Products PC Watchdog Revision A & C (by Ken Hollis) |
| |
| |
| All six interfaces provide /dev/watchdog, which when open must be written |
| to within a timeout or the machine will reboot. Each write delays the reboot |
| time another timeout. In the case of the software watchdog the ability to |
| reboot will depend on the state of the machines and interrupts. The hardware |
| boards physically pull the machine down off their own onboard timers and |
| will reboot from almost anything. |
| |
| A second temperature monitoring interface is available on the WDT501P cards |
| and some Berkshire cards. This provides /dev/temperature. This is the machine |
| internal temperature in degrees Fahrenheit. Each read returns a single byte |
| giving the temperature. |
| |
| The third interface logs kernel messages on additional alert events. |
| |
| Both software and hardware watchdog drivers are available in the standard |
| kernel. If you are using the software watchdog, you probably also want |
| to use "panic=60" as a boot argument as well. |
| |
| The wdt card cannot be safely probed for. Instead you need to pass |
| wdt=ioaddr,irq as a boot parameter - eg "wdt=0x240,11". |
| |
| The SA1100 watchdog module can be configured with the "sa1100_margin" |
| commandline argument which specifies timeout value in seconds. |
| |
| The i810 TCO watchdog modules can be configured with the "i810_margin" |
| commandline argument which specifies the counter initial value. The counter |
| is decremented every 0.6 seconds and default to 50 (30 seconds). Values can |
| range between 3 and 63. |
| |
| The i810 TCO watchdog driver also implements the WDIOC_GETSTATUS and |
| WDIOC_GETBOOTSTATUS ioctl()s. WDIOC_GETSTATUS returns the actual counter value |
| and WDIOC_GETBOOTSTATUS returns the value of TCO2 Status Register (see Intel's |
| documentation for the 82801AA and 82801AB datasheet). |
| |
| Features |
| -------- |
| WDT501P WDT500P Software Berkshire i810 TCO SA1100WD |
| Reboot Timer X X X X X X |
| External Reboot X X o o o X |
| I/O Port Monitor o o o X o o |
| Temperature X o o X o o |
| Fan Speed X o o o o o |
| Power Under X o o o o o |
| Power Over X o o o o o |
| Overheat X o o o o o |
| |
| The external event interfaces on the WDT boards are not currently supported. |
| Minor numbers are however allocated for it. |
| |
| |
| Example Watchdog Driver |
| ----------------------- |
| |
| #include <stdio.h> |
| #include <unistd.h> |
| #include <fcntl.h> |
| |
| int main(int argc, const char *argv[]) |
| { |
| int fd=open("/dev/watchdog",O_WRONLY); |
| if(fd==-1) |
| { |
| perror("watchdog"); |
| exit(1); |
| } |
| while(1) |
| { |
| write(fd,"\0",1); |
| fsync(fd); |
| sleep(10); |
| } |
| } |
| |
| |
| Contact Information |
| |
| People keep asking about the WDT watchdog timer hardware: The phone contacts |
| for Industrial Computer Source are: |
| |
| Industrial Computer Source |
| http://www.indcompsrc.com |
| ICS Advent, San Diego |
| 6260 Sequence Dr. |
| San Diego, CA 92121-4371 |
| Phone (858) 677-0877 |
| FAX: (858) 677-0895 |
| > |
| ICS Advent Europe, UK |
| Oving Road |
| Chichester, |
| West Sussex, |
| PO19 4ET, UK |
| Phone: 00.44.1243.533900 |
| |
| |
| and please mention Linux when enquiring. |
| |
| For full information about the PCWD cards see the pcwd-watchdog.txt document. |