diff options
-rw-r--r-- | Documentation/watchdog/watchdog-api.txt | 30 | ||||
-rw-r--r-- | include/linux/watchdog.h | 3 |
2 files changed, 32 insertions, 1 deletions
diff --git a/Documentation/watchdog/watchdog-api.txt b/Documentation/watchdog/watchdog-api.txt index 21ed51173662..7dc2c1c6f779 100644 --- a/Documentation/watchdog/watchdog-api.txt +++ b/Documentation/watchdog/watchdog-api.txt | |||
@@ -110,7 +110,31 @@ current timeout using the GETTIMEOUT ioctl. | |||
110 | ioctl(fd, WDIOC_GETTIMEOUT, &timeout); | 110 | ioctl(fd, WDIOC_GETTIMEOUT, &timeout); |
111 | printf("The timeout was is %d seconds\n", timeout); | 111 | printf("The timeout was is %d seconds\n", timeout); |
112 | 112 | ||
113 | Envinronmental monitoring: | 113 | Pretimeouts: |
114 | |||
115 | Some watchdog timers can be set to have a trigger go off before the | ||
116 | actual time they will reset the system. This can be done with an NMI, | ||
117 | interrupt, or other mechanism. This allows Linux to record useful | ||
118 | information (like panic information and kernel coredumps) before it | ||
119 | resets. | ||
120 | |||
121 | pretimeout = 10; | ||
122 | ioctl(fd, WDIOC_SETPRETIMEOUT, &pretimeout); | ||
123 | |||
124 | Note that the pretimeout is the number of seconds before the time | ||
125 | when the timeout will go off. It is not the number of seconds until | ||
126 | the pretimeout. So, for instance, if you set the timeout to 60 seconds | ||
127 | and the pretimeout to 10 seconds, the pretimout will go of in 50 | ||
128 | seconds. Setting a pretimeout to zero disables it. | ||
129 | |||
130 | There is also a get function for getting the pretimeout: | ||
131 | |||
132 | ioctl(fd, WDIOC_GETPRETIMEOUT, &timeout); | ||
133 | printf("The pretimeout was is %d seconds\n", timeout); | ||
134 | |||
135 | Not all watchdog drivers will support a pretimeout. | ||
136 | |||
137 | Environmental monitoring: | ||
114 | 138 | ||
115 | All watchdog drivers are required return more information about the system, | 139 | All watchdog drivers are required return more information about the system, |
116 | some do temperature, fan and power level monitoring, some can tell you | 140 | some do temperature, fan and power level monitoring, some can tell you |
@@ -169,6 +193,10 @@ The watchdog saw a keepalive ping since it was last queried. | |||
169 | 193 | ||
170 | WDIOF_SETTIMEOUT Can set/get the timeout | 194 | WDIOF_SETTIMEOUT Can set/get the timeout |
171 | 195 | ||
196 | The watchdog can do pretimeouts. | ||
197 | |||
198 | WDIOF_PRETIMEOUT Pretimeout (in seconds), get/set | ||
199 | |||
172 | 200 | ||
173 | For those drivers that return any bits set in the option field, the | 201 | For those drivers that return any bits set in the option field, the |
174 | GETSTATUS and GETBOOTSTATUS ioctls can be used to ask for the current | 202 | GETSTATUS and GETBOOTSTATUS ioctls can be used to ask for the current |
diff --git a/include/linux/watchdog.h b/include/linux/watchdog.h index 1192ed8f4fe8..a99c937f665e 100644 --- a/include/linux/watchdog.h +++ b/include/linux/watchdog.h | |||
@@ -28,6 +28,8 @@ struct watchdog_info { | |||
28 | #define WDIOC_KEEPALIVE _IOR(WATCHDOG_IOCTL_BASE, 5, int) | 28 | #define WDIOC_KEEPALIVE _IOR(WATCHDOG_IOCTL_BASE, 5, int) |
29 | #define WDIOC_SETTIMEOUT _IOWR(WATCHDOG_IOCTL_BASE, 6, int) | 29 | #define WDIOC_SETTIMEOUT _IOWR(WATCHDOG_IOCTL_BASE, 6, int) |
30 | #define WDIOC_GETTIMEOUT _IOR(WATCHDOG_IOCTL_BASE, 7, int) | 30 | #define WDIOC_GETTIMEOUT _IOR(WATCHDOG_IOCTL_BASE, 7, int) |
31 | #define WDIOC_SETPRETIMEOUT _IOWR(WATCHDOG_IOCTL_BASE, 8, int) | ||
32 | #define WDIOC_GETPRETIMEOUT _IOR(WATCHDOG_IOCTL_BASE, 9, int) | ||
31 | 33 | ||
32 | #define WDIOF_UNKNOWN -1 /* Unknown flag error */ | 34 | #define WDIOF_UNKNOWN -1 /* Unknown flag error */ |
33 | #define WDIOS_UNKNOWN -1 /* Unknown status error */ | 35 | #define WDIOS_UNKNOWN -1 /* Unknown status error */ |
@@ -41,6 +43,7 @@ struct watchdog_info { | |||
41 | #define WDIOF_POWEROVER 0x0040 /* Power over voltage */ | 43 | #define WDIOF_POWEROVER 0x0040 /* Power over voltage */ |
42 | #define WDIOF_SETTIMEOUT 0x0080 /* Set timeout (in seconds) */ | 44 | #define WDIOF_SETTIMEOUT 0x0080 /* Set timeout (in seconds) */ |
43 | #define WDIOF_MAGICCLOSE 0x0100 /* Supports magic close char */ | 45 | #define WDIOF_MAGICCLOSE 0x0100 /* Supports magic close char */ |
46 | #define WDIOF_PRETIMEOUT 0x0200 /* Pretimeout (in seconds), get/set */ | ||
44 | #define WDIOF_KEEPALIVEPING 0x8000 /* Keep alive ping reply */ | 47 | #define WDIOF_KEEPALIVEPING 0x8000 /* Keep alive ping reply */ |
45 | 48 | ||
46 | #define WDIOS_DISABLECARD 0x0001 /* Turn off the watchdog timer */ | 49 | #define WDIOS_DISABLECARD 0x0001 /* Turn off the watchdog timer */ |