mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 17:41:22 +00:00
selftests: watchdog: accept multiple params on command line
Watchdog drivers are not required to retain programming information, such as timeouts, after the watchdog device is closed. Therefore, the watchdog test should be able to perform multiple actions after opening the watchdog device. For example, to set the timeout to 10s and ping every 5s: watchdog-test -t 10 -p 5 -e Also, display the periodic decimal point only if the keep-alive call succeeds. Signed-off-by: Timur Tabi <timur@codeaurora.org> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
This commit is contained in:
parent
83896c68fd
commit
1dbdcc8109
@ -24,9 +24,11 @@ const char v = 'V';
|
|||||||
static void keep_alive(void)
|
static void keep_alive(void)
|
||||||
{
|
{
|
||||||
int dummy;
|
int dummy;
|
||||||
|
int ret;
|
||||||
|
|
||||||
printf(".");
|
ret = ioctl(fd, WDIOC_KEEPALIVE, &dummy);
|
||||||
ioctl(fd, WDIOC_KEEPALIVE, &dummy);
|
if (!ret)
|
||||||
|
printf(".");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -51,6 +53,7 @@ int main(int argc, char *argv[])
|
|||||||
int flags;
|
int flags;
|
||||||
unsigned int ping_rate = 1;
|
unsigned int ping_rate = 1;
|
||||||
int ret;
|
int ret;
|
||||||
|
int i;
|
||||||
|
|
||||||
setbuf(stdout, NULL);
|
setbuf(stdout, NULL);
|
||||||
|
|
||||||
@ -61,31 +64,35 @@ int main(int argc, char *argv[])
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc > 1) {
|
for (i = 1; i < argc; i++) {
|
||||||
if (!strncasecmp(argv[1], "-d", 2)) {
|
if (!strncasecmp(argv[i], "-d", 2)) {
|
||||||
flags = WDIOS_DISABLECARD;
|
flags = WDIOS_DISABLECARD;
|
||||||
ioctl(fd, WDIOC_SETOPTIONS, &flags);
|
ret = ioctl(fd, WDIOC_SETOPTIONS, &flags);
|
||||||
printf("Watchdog card disabled.\n");
|
if (!ret)
|
||||||
goto end;
|
printf("Watchdog card disabled.\n");
|
||||||
} else if (!strncasecmp(argv[1], "-e", 2)) {
|
} else if (!strncasecmp(argv[i], "-e", 2)) {
|
||||||
flags = WDIOS_ENABLECARD;
|
flags = WDIOS_ENABLECARD;
|
||||||
ioctl(fd, WDIOC_SETOPTIONS, &flags);
|
ret = ioctl(fd, WDIOC_SETOPTIONS, &flags);
|
||||||
printf("Watchdog card enabled.\n");
|
if (!ret)
|
||||||
goto end;
|
printf("Watchdog card enabled.\n");
|
||||||
} else if (!strncasecmp(argv[1], "-t", 2) && argv[2]) {
|
} else if (!strncasecmp(argv[i], "-t", 2) && argv[2]) {
|
||||||
flags = atoi(argv[2]);
|
flags = atoi(argv[i + 1]);
|
||||||
ioctl(fd, WDIOC_SETTIMEOUT, &flags);
|
ret = ioctl(fd, WDIOC_SETTIMEOUT, &flags);
|
||||||
printf("Watchdog timeout set to %u seconds.\n", flags);
|
if (!ret)
|
||||||
goto end;
|
printf("Watchdog timeout set to %u seconds.\n", flags);
|
||||||
} else if (!strncasecmp(argv[1], "-p", 2) && argv[2]) {
|
i++;
|
||||||
ping_rate = strtoul(argv[2], NULL, 0);
|
} else if (!strncasecmp(argv[i], "-p", 2) && argv[2]) {
|
||||||
printf("Watchdog ping rate set to %u seconds.\n", ping_rate);
|
ping_rate = strtoul(argv[i + 1], NULL, 0);
|
||||||
} else {
|
printf("Watchdog ping rate set to %u seconds.\n", ping_rate);
|
||||||
printf("-d to disable, -e to enable, -t <n> to set " \
|
i++;
|
||||||
"the timeout,\n-p <n> to set the ping rate, and \n");
|
} else {
|
||||||
printf("run by itself to tick the card.\n");
|
printf("-d to disable, -e to enable, -t <n> to set "
|
||||||
goto end;
|
"the timeout,\n-p <n> to set the ping rate, and ");
|
||||||
}
|
printf("run by itself to tick the card.\n");
|
||||||
|
printf("Parameters are parsed left-to-right in real-time.\n");
|
||||||
|
printf("Example: %s -d -t 10 -p 5 -e\n", argv[0]);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Watchdog Ticking Away!\n");
|
printf("Watchdog Ticking Away!\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user