[igt-dev] [PATCH i-g-t 1/3] runner: Log when watchdog handling fails

Arkadiusz Hiler arkadiusz.hiler at intel.com
Fri Jun 14 08:08:14 UTC 2019


If write or ioctl on a watchdog ever fails it will be logged.

Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
---
 runner/executor.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/runner/executor.c b/runner/executor.c
index 7e5fbe8f..f9c69fef 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)
+{
+	int 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));
 	}
 }
 
-- 
2.21.0



More information about the igt-dev mailing list