From 5fe9c88bdad9bf54013b58f2324b7b47d92ca09d Mon Sep 17 00:00:00 2001 From: Thomas Wood Date: Tue, 2 Dec 2014 11:37:26 +0000 Subject: lib: add optional log domain filtering v2: add an "application" filter for the default domain (used by applications) Signed-off-by: Thomas Wood --- docs/reference/intel-gpu-tools/igt_test_programs.xml | 6 ++++-- lib/igt_core.c | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/docs/reference/intel-gpu-tools/igt_test_programs.xml b/docs/reference/intel-gpu-tools/igt_test_programs.xml index 970ecb9c..36ad1f35 100644 --- a/docs/reference/intel-gpu-tools/igt_test_programs.xml +++ b/docs/reference/intel-gpu-tools/igt_test_programs.xml @@ -35,9 +35,11 @@ - + - print extra debugging information when running tests + print extra debugging information when running tests and + optionaly only show the messages from the specified log domain + (use "application" to specifiy the default application domain) diff --git a/lib/igt_core.c b/lib/igt_core.c index b247a03a..e12b5663 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -228,6 +228,8 @@ enum { OPT_HELP = 'h' }; +static char* igt_log_domain_filter; + __attribute__((format(printf, 1, 2))) static void kmsg(const char *format, ...) #define KERN_EMER "<0>" @@ -390,7 +392,7 @@ static void print_usage(const char *help_str, bool output_on_stderr) fprintf(f, "Usage: %s [OPTIONS]\n", command_str); fprintf(f, " --list-subtests\n" " --run-subtest \n" - " --debug\n" + " --debug[=log-domain]\n" " --help-description\n" " --help\n"); if (help_str) @@ -422,7 +424,7 @@ static int common_init(int argc, char **argv, {"list-subtests", 0, 0, OPT_LIST_SUBTESTS}, {"run-subtest", 1, 0, OPT_RUN_SUBTEST}, {"help-description", 0, 0, OPT_DESCRIPTION}, - {"debug", 0, 0, OPT_DEBUG}, + {"debug", optional_argument, 0, OPT_DEBUG}, {"help", 0, 0, OPT_HELP}, {0, 0, 0, 0} }; @@ -510,6 +512,8 @@ static int common_init(int argc, char **argv, switch(c) { case OPT_DEBUG: igt_log_level = IGT_LOG_DEBUG; + if (optarg && strlen(optarg) > 0) + igt_log_domain_filter = strdup(optarg); break; case OPT_LIST_SUBTESTS: if (!run_single_subtest) @@ -1476,6 +1480,15 @@ void igt_vlog(const char *domain, enum igt_log_level level, const char *format, if (igt_log_level > level) return; + if (igt_log_domain_filter) { + /* if null domain and filter is not "application", return */ + if (!domain && strcmp(igt_log_domain_filter, "application")) + return; + /* else if domain and filter do not match, return */ + else if (domain && strcmp(igt_log_domain_filter, domain)) + return; + } + if (level == IGT_LOG_WARN) { file = stderr; fflush(stdout); -- cgit v1.2.3