patch-2.4.20 linux-2.4.20/drivers/char/wdt.c
Next file: linux-2.4.20/drivers/char/wdt977.c
Previous file: linux-2.4.20/drivers/char/wafer5823wdt.c
Back to the patch index
Back to the overall index
- Lines: 79
- Date:
Thu Nov 28 15:53:12 2002
- Orig file:
linux-2.4.19/drivers/char/wdt.c
- Orig date:
Fri Aug 2 17:39:43 2002
diff -urN linux-2.4.19/drivers/char/wdt.c linux-2.4.20/drivers/char/wdt.c
@@ -28,6 +28,7 @@
* Parameterized timeout
* Tigran Aivazian : Restructured wdt_init() to handle failures
* Joel Becker : Added WDIOC_GET/SETTIMEOUT
+ * Matt Domsch : Added nowayout module option
*/
#include <linux/config.h>
@@ -52,6 +53,7 @@
#include <linux/init.h>
static unsigned long wdt_is_open;
+static int expect_close;
/*
* You must set these - there is no sane way to probe for this board.
@@ -66,6 +68,15 @@
static int wd_margin = WD_TIMO;
+#ifdef CONFIG_WATCHDOG_NOWAYOUT
+static int nowayout = 1;
+#else
+static int nowayout = 0;
+#endif
+
+MODULE_PARM(nowayout,"i");
+MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CONFIG_WATCHDOG_NOWAYOUT)");
+
#ifndef MODULE
/**
@@ -243,6 +254,20 @@
if(count)
{
+ if (!nowayout) {
+ size_t i;
+
+ /* In case it was set long ago */
+ expect_close = 0;
+
+ for (i = 0; i != count; i++) {
+ char c;
+ if (get_user(c, buf + i))
+ return -EFAULT;
+ if (c == 'V')
+ expect_close = 1;
+ }
+ }
wdt_ping();
return 1;
}
@@ -304,7 +329,7 @@
{
WDIOF_OVERHEAT|WDIOF_POWERUNDER|WDIOF_POWEROVER
|WDIOF_EXTERN1|WDIOF_EXTERN2|WDIOF_FANFAULT
- |WDIOF_SETTIMEOUT,
+ |WDIOF_SETTIMEOUT|WDIOF_MAGICCLOSE,
1,
"WDT500/501"
};
@@ -394,10 +419,12 @@
{
if(MINOR(inode->i_rdev)==WATCHDOG_MINOR)
{
-#ifndef CONFIG_WATCHDOG_NOWAYOUT
- inb_p(WDT_DC); /* Disable counters */
- wdt_ctr_load(2,0); /* 0 length reset pulses now */
-#endif
+ if (expect_close) {
+ inb_p(WDT_DC); /* Disable counters */
+ wdt_ctr_load(2,0); /* 0 length reset pulses now */
+ } else {
+ printk(KERN_CRIT "wdt: WDT device closed unexpectedly. WDT will not stop!\n");
+ }
clear_bit(0, &wdt_is_open);
}
return 0;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)