[igt-dev] [PATCH i-g-t 1/3] runner: Log when watchdog handling fails
Ser, Simon
simon.ser at intel.com
Fri Jun 14 08:16:07 UTC 2019
On Fri, 2019-06-14 at 11:08 +0300, Arkadiusz Hiler wrote:
> If write or ioctl on a watchdog ever fails it will be logged.
>
> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler at intel.com>
Reviewed-by: Simon Ser <simon.ser 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);
Nit: this is a ssize_t
> + 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));
> }
> }
>
More information about the igt-dev
mailing list