summaryrefslogtreecommitdiff
path: root/runner/executor.c
diff options
context:
space:
mode:
authorArkadiusz Hiler <arkadiusz.hiler@intel.com>2019-06-14 11:08:14 +0300
committerArkadiusz Hiler <arkadiusz.hiler@intel.com>2019-06-24 13:18:12 +0300
commit288fd5c092a6438fe97db84504a3c461af13027e (patch)
tree3551b969ad07c88b6873caafb899dbeb7c75f619 /runner/executor.c
parent22850c1906550fb97b405c019275dcfb34be8cf7 (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.c24
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));
}
}