summaryrefslogtreecommitdiffstats
path: root/Documentation/watchdog/src/watchdog-test.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-07-31 21:32:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-07-31 21:32:22 -0400
commit27acbec338113a75b9d72aeb53149a3538031dda (patch)
tree1aa1b9c650491fe19925173296a948170cb82394 /Documentation/watchdog/src/watchdog-test.c
parentba929b6646c5b87c7bb15cd8d3e51617725c983b (diff)
parent1ac06563434e5f3302259608d3589bf7002431fe (diff)
downloadop-kernel-dev-27acbec338113a75b9d72aeb53149a3538031dda.zip
op-kernel-dev-27acbec338113a75b9d72aeb53149a3538031dda.tar.gz
Merge git://www.linux-watchdog.org/linux-watchdog
Pull watchdog updates from Wim Van Sebroeck: "Core: - min and max timeout improvements, WDOG_HW_RUNNING improvements, status funtionality - Add a device managed API for watchdog_register_device() New watchdog drivers: - Aspeed SoCs - Maxim PMIC MAX77620 - Amlogic Meson GXBB SoC Enhancements: - support for the r8a7796 watchdog device - support for F81866 watchdog device - support for 5th variation of Apollo Lake - support for MCP78S chipset - clean-up of softdog.c watchdog device driver - pic32-wdt and pic32-dmt fixes - Documentation/watchdog: watchdog-test improvements - several other fixes and improvements" * git://www.linux-watchdog.org/linux-watchdog: (50 commits) watchdog: gpio_wdt: Fix missing platform_set_drvdata() in gpio_wdt_probe() watchdog: core: Clear WDOG_HW_RUNNING before calling the stop function watchdog: core: Fix error handling of watchdog_dev_init() watchdog: pic32-wdt: Fix return value check in pic32_wdt_drv_probe() watchdog: pic32-dmt: Remove .owner field for driver watchdog: pic32-wdt: Remove .owner field for driver watchdog: renesas-wdt: Add support for the r8a7796 wdt Documentation/watchdog: check return value for magic close watchdog: sbsa: Drop status function watchdog: Implement status function in watchdog core watchdog: tangox: Set max_hw_heartbeat_ms instead of max_timeout watchdog: change watchdog_need_worker logic watchdog: add support for MCP78S chipset in nv_tco watchdog: bcm2835_wdt: remove redundant ->set_timeout callback watchdog: bcm2835_wdt: constify _ops and _info structures dt-bindings: watchdog: Add Meson GXBB Watchdog bindings watchdog: Add Meson GXBB Watchdog Driver watchdog: qcom: configure BARK time in addition to BITE time watchdog: qcom: add option for standalone watchdog not in timer block watchdog: qcom: update device tree bindings ...
Diffstat (limited to 'Documentation/watchdog/src/watchdog-test.c')
-rw-r--r--Documentation/watchdog/src/watchdog-test.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/Documentation/watchdog/src/watchdog-test.c b/Documentation/watchdog/src/watchdog-test.c
index fcdde8f..6983d05 100644
--- a/Documentation/watchdog/src/watchdog-test.c
+++ b/Documentation/watchdog/src/watchdog-test.c
@@ -2,6 +2,7 @@
* Watchdog Driver Test Program
*/
+#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -13,6 +14,7 @@
#include <linux/watchdog.h>
int fd;
+const char v = 'V';
/*
* This function simply sends an IOCTL to the driver, which in turn ticks
@@ -23,6 +25,7 @@ static void keep_alive(void)
{
int dummy;
+ printf(".");
ioctl(fd, WDIOC_KEEPALIVE, &dummy);
}
@@ -33,8 +36,13 @@ static void keep_alive(void)
static void term(int sig)
{
+ int ret = write(fd, &v, 1);
+
close(fd);
- fprintf(stderr, "Stopping watchdog ticks...\n");
+ if (ret < 0)
+ printf("\nStopping watchdog ticks failed (%d)...\n", errno);
+ else
+ printf("\nStopping watchdog ticks...\n");
exit(0);
}
@@ -42,12 +50,14 @@ int main(int argc, char *argv[])
{
int flags;
unsigned int ping_rate = 1;
+ int ret;
+
+ setbuf(stdout, NULL);
fd = open("/dev/watchdog", O_WRONLY);
if (fd == -1) {
- fprintf(stderr, "Watchdog device not enabled.\n");
- fflush(stderr);
+ printf("Watchdog device not enabled.\n");
exit(-1);
}
@@ -55,36 +65,30 @@ int main(int argc, char *argv[])
if (!strncasecmp(argv[1], "-d", 2)) {
flags = WDIOS_DISABLECARD;
ioctl(fd, WDIOC_SETOPTIONS, &flags);
- fprintf(stderr, "Watchdog card disabled.\n");
- fflush(stderr);
+ printf("Watchdog card disabled.\n");
goto end;
} else if (!strncasecmp(argv[1], "-e", 2)) {
flags = WDIOS_ENABLECARD;
ioctl(fd, WDIOC_SETOPTIONS, &flags);
- fprintf(stderr, "Watchdog card enabled.\n");
- fflush(stderr);
+ printf("Watchdog card enabled.\n");
goto end;
} else if (!strncasecmp(argv[1], "-t", 2) && argv[2]) {
flags = atoi(argv[2]);
ioctl(fd, WDIOC_SETTIMEOUT, &flags);
- fprintf(stderr, "Watchdog timeout set to %u seconds.\n", flags);
- fflush(stderr);
+ printf("Watchdog timeout set to %u seconds.\n", flags);
goto end;
} else if (!strncasecmp(argv[1], "-p", 2) && argv[2]) {
ping_rate = strtoul(argv[2], NULL, 0);
- fprintf(stderr, "Watchdog ping rate set to %u seconds.\n", ping_rate);
- fflush(stderr);
+ printf("Watchdog ping rate set to %u seconds.\n", ping_rate);
} else {
- fprintf(stderr, "-d to disable, -e to enable, -t <n> to set " \
+ printf("-d to disable, -e to enable, -t <n> to set " \
"the timeout,\n-p <n> to set the ping rate, and \n");
- fprintf(stderr, "run by itself to tick the card.\n");
- fflush(stderr);
+ printf("run by itself to tick the card.\n");
goto end;
}
}
- fprintf(stderr, "Watchdog Ticking Away!\n");
- fflush(stderr);
+ printf("Watchdog Ticking Away!\n");
signal(SIGINT, term);
@@ -93,6 +97,9 @@ int main(int argc, char *argv[])
sleep(ping_rate);
}
end:
+ ret = write(fd, &v, 1);
+ if (ret < 0)
+ printf("Stopping watchdog ticks failed (%d)...\n", errno);
close(fd);
return 0;
}
OpenPOWER on IntegriCloud