From patchwork Wed Dec 10 17:24:07 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Wood X-Patchwork-Id: 5471041 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 4B5FBBEEA8 for ; Wed, 10 Dec 2014 17:24:16 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 52DFB200CF for ; Wed, 10 Dec 2014 17:24:15 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 379DB200BE for ; Wed, 10 Dec 2014 17:24:14 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9D5456E622; Wed, 10 Dec 2014 09:24:13 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) by gabe.freedesktop.org (Postfix) with ESMTP id 3DE6C6E5EE for ; Wed, 10 Dec 2014 09:24:12 -0800 (PST) Received: by mail-wi0-f182.google.com with SMTP id h11so5940956wiw.3 for ; Wed, 10 Dec 2014 09:24:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=0zDmw6iT0SPc7pPnlt1a9q6dfWVMsMNm069AqNHHTiQ=; b=CRJbmPNezEBXUlCmwn1Q4PY3V13/KDv+JogrjW2qHhW5Ji9LeyZbEUe54A78sk4CPU 7yN/M8e1MC6PbF8zwdqeZWmJ7dlzejsycaK1i2E+X1RAvJdi/KGLEkdbi9GRSPkP81jK XKqtPv54lWFyuooWgAJqgXzn2knWZqdm7QbH5jAVfkuqUXjSjtkd0TcCFHwFttQrkVkA M5s4cTQGPEuQ6cZijrCZ+fqVCg3gtTCV6FA0+sQ1pQ2Sc2ZL6nQpl625wRXYQZJh5jyC k1Kn79SB3b/5B7Gb36WcG5R+i/19aA4iobPnklKEjTGgcF31GOVjPAA8FbUulcHdj1qx QAwA== X-Gm-Message-State: ALoCoQlP/VwAmfZtrSokG9lbNyGRRnb/IjfFg72iUUwM8laWTpR2kuxbnzm4imaFQyndU14jeR8Q X-Received: by 10.180.221.201 with SMTP id qg9mr8213598wic.29.1418232251565; Wed, 10 Dec 2014 09:24:11 -0800 (PST) Received: from pistachio.icx.intel.com ([83.217.123.106]) by mx.google.com with ESMTPSA id d5sm6653988wjb.34.2014.12.10.09.24.10 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 10 Dec 2014 09:24:10 -0800 (PST) From: Thomas Wood To: intel-gfx@lists.freedesktop.org Date: Wed, 10 Dec 2014 17:24:07 +0000 Message-Id: <1418232248-25565-1-git-send-email-thomas.wood@intel.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: References: Subject: [Intel-gfx] [PATCH i-g-t v2 1/2] lib: introduce log domains X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Log domains can be used to identify the source of log messages, such as the test being run or the helper library. v2: Add separate domains for different parts of the helper library and use an empty default domain for applications. Expand the log output to include the process name and the log level of the message in addition to the domain and pid. Print the expanded message only for warning and information messages. Signed-off-by: Thomas Wood --- lib/Makefile.am | 3 ++- lib/igt_core.c | 28 ++++++++++++++++++++++------ lib/igt_core.h | 18 +++++++++++------- lib/igt_kms.c | 2 +- 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/lib/Makefile.am b/lib/Makefile.am index ab82302..3826a1c 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -10,7 +10,8 @@ noinst_HEADERS = check-ndebug.h AM_CPPFLAGS = -I$(top_srcdir) AM_CFLAGS = $(DRM_CFLAGS) $(CWARNFLAGS) \ - -DIGT_DATADIR=\""$(abs_top_srcdir)/tests"\" + -DIGT_DATADIR=\""$(abs_top_srcdir)/tests"\" \ + -DIGT_LOG_DOMAIN=\""$(subst _,-,$*)"\" LDADD = $(CAIRO_LIBS) diff --git a/lib/igt_core.c b/lib/igt_core.c index 13a52a5..b6852dd 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -1429,12 +1429,12 @@ void igt_skip_on_simulation(void) * are disabled. "none" completely disables all output and is not recommended * since crucial issues only reported at the IGT_LOG_WARN level are ignored. */ -void igt_log(enum igt_log_level level, const char *format, ...) +void igt_log(const char *domain, enum igt_log_level level, const char *format, ...) { va_list args; va_start(args, format); - igt_vlog(level, format, args); + igt_vlog(domain, level, format, args); va_end(args); } @@ -1451,8 +1451,16 @@ void igt_log(enum igt_log_level level, const char *format, ...) * If there is no need to wrap up a vararg list in the caller it is simpler to * just use igt_log(). */ -void igt_vlog(enum igt_log_level level, const char *format, va_list args) +void igt_vlog(const char *domain, enum igt_log_level level, const char *format, va_list args) { + FILE *file; + const char *igt_log_level_str[] = { + "DEBUG", + "INFO", + "WARNING", + "NONE" + }; + assert(format); if (list_subtests) @@ -1462,10 +1470,18 @@ void igt_vlog(enum igt_log_level level, const char *format, va_list args) return; if (level == IGT_LOG_WARN) { + file = stderr; fflush(stdout); - vfprintf(stderr, format, args); - } else - vprintf(format, args); + } + else + file = stdout; + + if (level != IGT_LOG_INFO) { + fprintf(file, "(%s:%d) %s%s%s: ", program_invocation_short_name, + getpid(), (domain) ? domain : "", (domain) ? "-" : "", + igt_log_level_str[level]); + } + vfprintf(file, format, args); } static void igt_alarm_handler(int signal) diff --git a/lib/igt_core.h b/lib/igt_core.h index a258348..5c5ee25 100644 --- a/lib/igt_core.h +++ b/lib/igt_core.h @@ -512,16 +512,20 @@ bool igt_run_in_simulation(void); void igt_skip_on_simulation(void); /* structured logging */ +#ifndef IGT_LOG_DOMAIN +#define IGT_LOG_DOMAIN (NULL) +#endif + enum igt_log_level { IGT_LOG_DEBUG, IGT_LOG_INFO, IGT_LOG_WARN, IGT_LOG_NONE, }; -__attribute__((format(printf, 2, 3))) -void igt_log(enum igt_log_level level, const char *format, ...); -__attribute__((format(printf, 2, 0))) -void igt_vlog(enum igt_log_level level, const char *format, va_list args); +__attribute__((format(printf, 3, 4))) +void igt_log(const char *domain, enum igt_log_level level, const char *format, ...); +__attribute__((format(printf, 3, 0))) +void igt_vlog(const char *domain, enum igt_log_level level, const char *format, va_list args); /** * igt_debug: @@ -529,7 +533,7 @@ void igt_vlog(enum igt_log_level level, const char *format, va_list args); * * Wrapper for igt_log() for message at the IGT_LOG_DEBUG level. */ -#define igt_debug(f...) igt_log(IGT_LOG_DEBUG, f) +#define igt_debug(f...) igt_log(IGT_LOG_DOMAIN, IGT_LOG_DEBUG, f) /** * igt_info: @@ -537,7 +541,7 @@ void igt_vlog(enum igt_log_level level, const char *format, va_list args); * * Wrapper for igt_log() for message at the IGT_LOG_INFO level. */ -#define igt_info(f...) igt_log(IGT_LOG_INFO, f) +#define igt_info(f...) igt_log(IGT_LOG_DOMAIN, IGT_LOG_INFO, f) /** * igt_warn: @@ -545,7 +549,7 @@ void igt_vlog(enum igt_log_level level, const char *format, va_list args); * * Wrapper for igt_log() for message at the IGT_LOG_WARN level. */ -#define igt_warn(f...) igt_log(IGT_LOG_WARN, f) +#define igt_warn(f...) igt_log(IGT_LOG_DOMAIN, IGT_LOG_WARN, f) extern enum igt_log_level igt_log_level; /** diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 1387d01..042e90e 100644 --- a/lib/igt_kms.c +++ b/lib/igt_kms.c @@ -855,7 +855,7 @@ igt_display_log(igt_display_t *display, const char *fmt, ...) igt_debug("display: "); for (i = 0; i < display->log_shift; i++) igt_debug("%s", LOG_SPACES); - igt_vlog(IGT_LOG_DEBUG, fmt, args); + igt_vlog(IGT_LOG_DOMAIN, IGT_LOG_DEBUG, fmt, args); va_end(args); }