selftests: watchdog: avoid keepalive flood
authorEugeniu Rosca <erosca@de.adit-jv.com>
Sat, 1 Jul 2017 12:57:29 +0000 (14:57 +0200)
committerShuah Khan <shuahkh@osg.samsung.com>
Mon, 24 Jul 2017 18:37:01 +0000 (12:37 -0600)
Calling `watchdog-test [options] -p 0` results in flooding the kernel
with WDIOC_KEEPALIVE. Fix this by enforcing 1 second as minimal/default
keepalive/ping rate.

Signed-off-by: Eugeniu Rosca <erosca@de.adit-jv.com>
Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
tools/testing/selftests/watchdog/watchdog-test.c

index 41f40c3c4d958f8af120289955980aedaefd5531..9b34b319fc91f18756c1df6c4639e7e5e2ae6db4 100644 (file)
@@ -14,6 +14,8 @@
 #include <linux/types.h>
 #include <linux/watchdog.h>
 
+#define DEFAULT_PING_RATE      1
+
 int fd;
 const char v = 'V';
 static const char sopts[] = "dehp:t:";
@@ -64,7 +66,7 @@ static void usage(char *progname)
        printf(" -d, --disable       Turn off the watchdog timer\n");
        printf(" -e, --enable        Turn on the watchdog timer\n");
        printf(" -h, --help          Print the help message\n");
-       printf(" -p, --pingrate=P    Set ping rate to P seconds\n");
+       printf(" -p, --pingrate=P    Set ping rate to P seconds (default %d)\n", DEFAULT_PING_RATE);
        printf(" -t, --timeout=T     Set timeout to T seconds\n");
        printf("\n");
        printf("Parameters are parsed left-to-right in real-time.\n");
@@ -74,7 +76,7 @@ static void usage(char *progname)
 int main(int argc, char *argv[])
 {
        int flags;
-       unsigned int ping_rate = 1;
+       unsigned int ping_rate = DEFAULT_PING_RATE;
        int ret;
        int c;
 
@@ -107,6 +109,8 @@ int main(int argc, char *argv[])
                        break;
                case 'p':
                        ping_rate = strtoul(optarg, NULL, 0);
+                       if (!ping_rate)
+                               ping_rate = DEFAULT_PING_RATE;
                        printf("Watchdog ping rate set to %u seconds.\n", ping_rate);
                        break;
                case 't':