svn commit: trunk/busybox: include miscutils

vda at busybox.net vda at busybox.net
Wed Sep 5 12:13:52 UTC 2007


Author: vda
Date: 2007-09-05 05:13:51 -0700 (Wed, 05 Sep 2007)
New Revision: 19793

Log:
watchdog: allow millisecond spec (-t 250ms)

function                                             old     new   delta
packed_usage                                       23069   23113     +44
static.suffixes                                        -      24     +24
watchdog_main                                        147     160     +13
static.V                                               -       1      +1
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 2/0 up/down: 82/0)               Total: 82 bytes




Modified:
   trunk/busybox/include/usage.h
   trunk/busybox/miscutils/watchdog.c


Changeset:
Modified: trunk/busybox/include/usage.h
===================================================================
--- trunk/busybox/include/usage.h	2007-09-05 11:48:32 UTC (rev 19792)
+++ trunk/busybox/include/usage.h	2007-09-05 12:13:51 UTC (rev 19793)
@@ -3843,7 +3843,7 @@
 #define watch_full_usage \
        "Execute a program periodically" \
        "\n\nOptions:\n" \
-       "	-n	Loop period in seconds - default is 2\n" \
+       "	-n	Loop period in seconds (default 2)\n" \
        "	-t	Don't print header"
 #define watch_example_usage \
        "$ watch date\n" \
@@ -3852,12 +3852,14 @@
        "Mon Dec 17 10:31:44 GMT 2000"
 
 #define watchdog_trivial_usage \
-       "[-t seconds] [-F] DEV"
+       "[-t N[ms]] [-F] DEV"
 #define watchdog_full_usage \
        "Periodically write to watchdog device DEV" \
-       "\n\nOptions:\n" \
-       "	-t	Timer period in seconds - default is 30\n" \
-       "	-F	Stay in the foreground and don't fork"
+       "\n\nOptions:" \
+     "\n	-t N	Timer period (default 30)" \
+     "\n	-F	Stay in the foreground and don't fork" \
+     "\n" \
+     "\nUse -t 500ms to specify period in milliseconds"
 
 #define wc_trivial_usage \
        "[OPTION]... [FILE]..."

Modified: trunk/busybox/miscutils/watchdog.c
===================================================================
--- trunk/busybox/miscutils/watchdog.c	2007-09-05 11:48:32 UTC (rev 19792)
+++ trunk/busybox/miscutils/watchdog.c	2007-09-05 12:13:51 UTC (rev 19793)
@@ -16,7 +16,9 @@
 static void watchdog_shutdown(int ATTRIBUTE_UNUSED sig) ATTRIBUTE_NORETURN;
 static void watchdog_shutdown(int ATTRIBUTE_UNUSED sig)
 {
-	write(3, "V", 1);	/* Magic, see watchdog-api.txt in kernel */
+	static const char V = 'V';
+
+	write(3, &V, 1);	/* Magic, see watchdog-api.txt in kernel */
 	if (ENABLE_FEATURE_CLEAN_UP)
 		close(3);
 	exit(0);
@@ -26,14 +28,20 @@
 int watchdog_main(int argc, char **argv)
 {
 	unsigned opts;
-	unsigned timer_duration = 30; /* Userspace timer duration, in seconds */
+	unsigned timer_duration = 30000; /* Userspace timer duration, in milliseconds */
 	char *t_arg;
 
 	opt_complementary = "=1"; /* must have 1 argument */
 	opts = getopt32(argv, "Ft:", &t_arg);
 
-	if (opts & OPT_TIMER)
-		timer_duration = xatou(t_arg);
+	if (opts & OPT_TIMER) {
+		static const struct suffix_mult suffixes[] = {
+			{ "ms", 1 },
+			{ "", 1000 },
+			{ }
+		};
+		timer_duration = xatou_sfx(t_arg, suffixes);
+	}
 
 	if (!(opts & OPT_FOREGROUND)) {
 		bb_daemonize_or_rexec(DAEMON_CHDIR_ROOT, argv);
@@ -50,10 +58,8 @@
 		 * Make sure we clear the counter before sleeping, as the counter value
 		 * is undefined at this point -- PFM
 		 */
-		write(3, "", 1);
-		sleep(timer_duration);
+		write(3, "", 1); /* write zero byte */
+		usleep(timer_duration * 1000L);
 	}
-
-	watchdog_shutdown(0);
-	/* return EXIT_SUCCESS; */
+	return EXIT_SUCCESS; /* - not reached, but gcc 4.2.1 is too dumb! */
 }




More information about the busybox-cvs mailing list