[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