[Intel-gfx] [PATCH] igt_core: Inject subtest message into dmesg

Daniel Vetter daniel at ffwll.ch
Thu Jul 24 14:36:54 CEST 2014


On Thu, Jul 24, 2014 at 12:48:33PM +0100, Chris Wilson wrote:
> One of the side-effects we test for are kernel oops and knowing the
> guilty subtest can help speed up debugging. We can write to /dev/kmsg to
> inject messages into dmesg, so let's do so before the start of every
> test.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

Should we change proc->comm too? Would help with the oops printing ... Ack
on the patch itself.
-Daniel
> ---
>  lib/igt_core.c | 29 ++++++++++++++++++++++++-----
>  1 file changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/igt_core.c b/lib/igt_core.c
> index b0800e8..deaf145 100644
> --- a/lib/igt_core.c
> +++ b/lib/igt_core.c
> @@ -269,8 +269,9 @@ static void print_version(void)
>  		uts.sysname, uts.release, uts.machine);
>  }
>  
> -static void print_usage(const char *command_str, const char *help_str,
> -			bool output_on_stderr)
> +static const char *command_str;
> +
> +static void print_usage(const char *help_str, bool output_on_stderr)
>  {
>  	FILE *f = output_on_stderr ? stderr : stdout;
>  
> @@ -306,7 +307,6 @@ static int common_init(int argc, char **argv,
>  		{"debug", 0, 0, 'd'},
>  		{"help", 0, 0, 'h'},
>  	};
> -	const char *command_str;
>  	char *short_opts;
>  	struct option *combined_opts;
>  	int extra_opt_count;
> @@ -364,11 +364,11 @@ static int common_init(int argc, char **argv,
>  				run_single_subtest = strdup(optarg);
>  			break;
>  		case 'h':
> -			print_usage(command_str, help_str, false);
> +			print_usage(help_str, false);
>  			ret = -1;
>  			goto out;
>  		case '?':
> -			print_usage(command_str, help_str, true);
> +			print_usage(help_str, true);
>  			ret = -2;
>  			goto out;
>  		default:
> @@ -498,6 +498,23 @@ void igt_simple_init_parse_opts(int argc, char **argv,
>  		    extra_opt_handler);
>  }
>  
> +__attribute__((format(printf, 2, 3)))
> +static void echo(const char *path, const char *format, ...)
> +{
> +	va_list ap;
> +	FILE *file;
> +
> +	file = fopen(path, "w");
> +	if (file == NULL)
> +		return;
> +
> +	va_start(ap, format);
> +	vfprintf(file, format, ap);
> +	va_end(ap);
> +
> +	fclose(file);
> +}
> +
>  /*
>   * Note: Testcases which use these helpers MUST NOT output anything to stdout
>   * outside of places protected by igt_run_subtest checks - the piglit
> @@ -529,6 +546,8 @@ bool __igt_run_subtest(const char *subtest_name)
>  		return false;
>  	}
>  
> +	echo("/dev/kmsg", "%s: starting subtest %s\n", command_str, subtest_name);
> +
>  	return (in_subtest = subtest_name);
>  }
>  
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list