i2cdump: don't read block data in non-block modes
[oweals/busybox.git] / miscutils / watchdog.c
index e334d0189cd5537b77f81c78e6b9d8238f7b6d8d..d3a76edf07260bb30dae417d5299886db22f2e9c 100644 (file)
@@ -6,9 +6,19 @@
  * Copyright (C) 2006  Bernhard Reutner-Fischer <busybox@busybox.net>
  * Copyright (C) 2008  Darius Augulis <augulis.darius@gmail.com>
  *
- * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
+//usage:#define watchdog_trivial_usage
+//usage:       "[-t N[ms]] [-T N[ms]] [-F] DEV"
+//usage:#define watchdog_full_usage "\n\n"
+//usage:       "Periodically write to watchdog device DEV\n"
+//usage:     "\n       -T N    Reboot after N seconds if not reset (default 60)"
+//usage:     "\n       -t N    Reset every N seconds (default 30)"
+//usage:     "\n       -F      Run in foreground"
+//usage:     "\n"
+//usage:     "\nUse 500ms to specify period in milliseconds"
+
 #include "libbb.h"
 #include "linux/types.h" /* for __u32 */
 #include "linux/watchdog.h"
@@ -21,10 +31,11 @@ static void watchdog_shutdown(int sig UNUSED_PARAM)
 {
        static const char V = 'V';
 
-       write(3, &V, 1);        /* Magic, see watchdog-api.txt in kernel */
+       remove_pidfile(CONFIG_PID_FILE_PATH "/watchdog.pid");
+       write(3, &V, 1);  /* Magic, see watchdog-api.txt in kernel */
        if (ENABLE_FEATURE_CLEAN_UP)
                close(3);
-       exit(EXIT_SUCCESS);
+       _exit(EXIT_SUCCESS);
 }
 
 int watchdog_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@@ -33,7 +44,7 @@ int watchdog_main(int argc, char **argv)
        static const struct suffix_mult suffixes[] = {
                { "ms", 1 },
                { "", 1000 },
-               { }
+               { "", 0 }
        };
 
        unsigned opts;
@@ -85,6 +96,8 @@ int watchdog_main(int argc, char **argv)
                stimer_duration, htimer_duration * 1000);
 #endif
 
+       write_pidfile(CONFIG_PID_FILE_PATH "/watchdog.pid");
+
        while (1) {
                /*
                 * Make sure we clear the counter before sleeping,