kern_shutdown - Add led and wdog magic
authorAlex Hornung <ahornung@gmail.com>
Fri, 2 Oct 2009 21:14:01 +0000 (22:14 +0100)
committerAlex Hornung <ahornung@gmail.com>
Sun, 4 Oct 2009 13:03:13 +0000 (14:03 +0100)
* If the relevant options are set, try to enable the 'error' led and
 disable the watchdog(s).

sys/kern/kern_shutdown.c

index 1ec437f..7e89212 100644 (file)
@@ -84,6 +84,9 @@
 
 #include <sys/signalvar.h>
 
+#include <sys/wdog.h>
+#include <dev/misc/gpio/gpio.h>
+
 #ifndef PANIC_REBOOT_WAIT_TIME
 #define PANIC_REBOOT_WAIT_TIME 15 /* default to 15 seconds */
 #endif
@@ -793,6 +796,14 @@ panic(const char *fmt, ...)
        kprintf("cpuid = %d\n", mycpu->gd_cpuid);
 #endif
 
+#if (NGPIO > 0) && defined(ERROR_LED_ON_PANIC)
+       led_switch("error", 1);
+#endif
+
+#if defined(WDOG_DISABLE_ON_PANIC) && defined(WATCHDOG_ENABLE)
+       wdog_disable();
+#endif
+
 #if defined(DDB)
        if (newpanic && trace_on_panic)
                print_backtrace();