OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [pcwd-watchdog.txt] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
                     Berkshire Products PC Watchdog Card
2
                   Support for ISA Cards  Revision A and C
3
           Documentation and Driver by Ken Hollis 
4
 
5
 The PC Watchdog is a card that offers the same type of functionality that
6
 the WDT card does, only it doesn't require an IRQ to run.  Furthermore,
7
 the Revision C card allows you to monitor any IO Port to automatically
8
 trigger the card into being reset.  This way you can make the card
9
 monitor hard drive status, or anything else you need.
10
 
11
 The Watchdog Driver has one basic role: to talk to the card and send
12
 signals to it so it doesn't reset your computer ... at least during
13
 normal operation.
14
 
15
 The Watchdog Driver will automatically find your watchdog card, and will
16
 attach a running driver for use with that card.  After the watchdog
17
 drivers have initialized, you can then talk to the card using the PC
18
 Watchdog program, available from http://ftp.bitgate.com/pcwd/.
19
 
20
 I suggest putting a "watchdog -d" before the beginning of an fsck, and
21
 a "watchdog -e -t 1" immediately after the end of an fsck.  (Remember
22
 to run the program with an "&" to run it in the background!)
23
 
24
 If you want to write a program to be compatible with the PC Watchdog
25
 driver, simply do the following:
26
 
27
-- Snippet of code --
28
/*
29
 * Watchdog Driver Test Program
30
 */
31
 
32
#include 
33
#include 
34
#include 
35
#include 
36
#include 
37
#include 
38
#include 
39
 
40
int fd;
41
 
42
/*
43
 * This function simply sends an IOCTL to the driver, which in turn ticks
44
 * the PC Watchdog card to reset its internal timer so it doesn't trigger
45
 * a computer reset.
46
 */
47
void keep_alive(void)
48
{
49
    int dummy;
50
 
51
    ioctl(fd, WDIOC_KEEPALIVE, &dummy);
52
}
53
 
54
/*
55
 * The main program.  Run the program with "-d" to disable the card,
56
 * or "-e" to enable the card.
57
 */
58
int main(int argc, char *argv[])
59
{
60
    fd = open("/dev/watchdog", O_WRONLY);
61
 
62
    if (fd == -1) {
63
        fprintf(stderr, "Watchdog device not enabled.\n");
64
        fflush(stderr);
65
        exit(-1);
66
    }
67
 
68
    if (argc > 1) {
69
        if (!strncasecmp(argv[1], "-d", 2)) {
70
            ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD);
71
            fprintf(stderr, "Watchdog card disabled.\n");
72
            fflush(stderr);
73
            exit(0);
74
        } else if (!strncasecmp(argv[1], "-e", 2)) {
75
            ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);
76
            fprintf(stderr, "Watchdog card enabled.\n");
77
            fflush(stderr);
78
            exit(0);
79
        } else {
80
            fprintf(stderr, "-d to disable, -e to enable.\n");
81
            fprintf(stderr, "run by itself to tick the card.\n");
82
            fflush(stderr);
83
            exit(0);
84
        }
85
    } else {
86
        fprintf(stderr, "Watchdog Ticking Away!\n");
87
        fflush(stderr);
88
    }
89
 
90
    while(1) {
91
        keep_alive();
92
        sleep(1);
93
    }
94
}
95
-- End snippet --
96
 
97
 Other IOCTL functions include:
98
 
99
        WDIOC_GETSUPPORT
100
                This returns the support of the card itself.  This
101
                returns in structure "PCWDS" which returns:
102
                        options = WDIOS_TEMPPANIC
103
                                  (This card supports temperature)
104
                        firmware_version = xxxx
105
                                  (Firmware version of the card)
106
 
107
        WDIOC_GETSTATUS
108
                This returns the status of the card, with the bits of
109
                WDIOF_* bitwise-anded into the value.  (The comments
110
                are in linux/pcwd.h)
111
 
112
        WDIOC_GETBOOTSTATUS
113
                This returns the status of the card that was reported
114
                at bootup.
115
 
116
        WDIOC_GETTEMP
117
                This returns the temperature of the card.  (You can also
118
                read /dev/watchdog, which gives a temperature update
119
                every second.)
120
 
121
        WDIOC_SETOPTIONS
122
                This lets you set the options of the card.  You can either
123
                enable or disable the card this way.
124
 
125
        WDIOC_KEEPALIVE
126
                This pings the card to tell it not to reset your computer.
127
 
128
 And that's all she wrote!
129
 
130
 -- Ken Hollis
131
    (kenji@bitgate.com)
132
 
133
(This documentation may be out of date.  Check
134
 http://ftp.bitgate.com/pcwd/ for the absolute latest additions.)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.