116 lines
3.7 KiB
Text
116 lines
3.7 KiB
Text
|
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.
|