diff options
author | Arkadiusz Hiler <arkadiusz.hiler@intel.com> | 2019-06-14 11:08:14 +0300 |
---|---|---|
committer | Arkadiusz Hiler <arkadiusz.hiler@intel.com> | 2019-06-24 13:18:12 +0300 |
commit | 288fd5c092a6438fe97db84504a3c461af13027e (patch) | |
tree | 3551b969ad07c88b6873caafb899dbeb7c75f619 /runner/executor.c | |
parent | 22850c1906550fb97b405c019275dcfb34be8cf7 (diff) |
runner: Log when watchdog handling fails
If write or ioctl on a watchdog ever fails it will be logged.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Simon Ser <simon.ser@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Diffstat (limited to 'runner/executor.c')
-rw-r--r-- | runner/executor.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/runner/executor.c b/runner/executor.c index 7e5fbe8f..e562d5b2 100644 --- a/runner/executor.c +++ b/runner/executor.c @@ -25,6 +25,17 @@ static struct { size_t num_dogs; } watchdogs; +static void __close_watchdog(int fd) +{ + ssize_t ret = write(fd, "V", 1); + + if (ret == -1) + fprintf(stderr, "Failed to stop a watchdog: %s\n", + strerror(errno)); + + close(fd); +} + static void close_watchdogs(struct settings *settings) { size_t i; @@ -33,8 +44,7 @@ static void close_watchdogs(struct settings *settings) printf("Closing watchdogs\n"); for (i = 0; i < watchdogs.num_dogs; i++) { - write(watchdogs.fds[i], "V", 1); - close(watchdogs.fds[i]); + __close_watchdog(watchdogs.fds[i]); } } @@ -81,8 +91,7 @@ static int watchdogs_set_timeout(int timeout) for (i = 0; i < watchdogs.num_dogs; i++) { if (ioctl(watchdogs.fds[i], WDIOC_SETTIMEOUT, &timeout)) { - write(watchdogs.fds[i], "V", 1); - close(watchdogs.fds[i]); + __close_watchdog(watchdogs.fds[i]); watchdogs.fds[i] = -1; continue; } @@ -102,9 +111,14 @@ static int watchdogs_set_timeout(int timeout) static void ping_watchdogs(void) { size_t i; + int ret; for (i = 0; i < watchdogs.num_dogs; i++) { - ioctl(watchdogs.fds[i], WDIOC_KEEPALIVE, 0); + ret = ioctl(watchdogs.fds[i], WDIOC_KEEPALIVE, NULL); + + if (ret == -1) + fprintf(stderr, "Failed to ping a watchdog: %s\n", + strerror(errno)); } } |