All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Namhyung Kim <namhyung@kernel.org>,
	Jiri Olsa <jolsa@redhat.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Wang Nan <wangnan0@huawei.com>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 02/23] perf test: Suppress libtraceevent warnings
Date: Mon, 19 Oct 2015 18:39:13 -0300	[thread overview]
Message-ID: <1445290774-13344-3-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1445290774-13344-1-git-send-email-acme@kernel.org>

From: Namhyung Kim <namhyung@kernel.org>

Currently libtraceevent emits warning on unsupported event formats.
However it'd be better to see them only -v option is given.  To do that,
it needs to override the warning() function which is used in the
libtracevent.  Thus add set_warning_routine() same as set_die_routine()
and check the verbose flag in our warning routine.

Before:
  # perf test 5
   5: parse events tests                                       :
    Warning: [kvmmmu:kvm_mmu_get_page] bad op token {
    Warning: [kvmmmu:kvm_mmu_sync_page] bad op token {
    Warning: [kvmmmu:kvm_mmu_unsync_page] bad op token {
    Warning: [kvmmmu:kvm_mmu_prepare_zap_page] bad op token {
    Warning: [kvmmmu:fast_page_fault] function is_writable_pte not defined
    ...
   Ok

After:
  # perf test 5
   5: parse events tests                                       : Ok

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Acked-by: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1445268229-1601-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/parse-events.c | 14 ++++++++++++++
 tools/perf/util/usage.c         |  5 +++++
 tools/perf/util/util.h          |  1 +
 3 files changed, 20 insertions(+)

diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c
index 0648b84a9171..636d7b42d844 100644
--- a/tools/perf/tests/parse-events.c
+++ b/tools/perf/tests/parse-events.c
@@ -5,6 +5,7 @@
 #include <api/fs/fs.h>
 #include "tests.h"
 #include "debug.h"
+#include "util.h"
 #include <linux/hw_breakpoint.h>
 #include <api/fs/fs.h>
 
@@ -1753,6 +1754,17 @@ static int test_pmu_events(void)
 	return ret;
 }
 
+static void debug_warn(const char *warn, va_list params)
+{
+	char msg[1024];
+
+	if (!verbose)
+		return;
+
+	vsnprintf(msg, sizeof(msg), warn, params);
+	fprintf(stderr, " Warning: %s\n", msg);
+}
+
 int test__parse_events(void)
 {
 	int ret1, ret2 = 0;
@@ -1764,6 +1776,8 @@ do {							\
 		ret2 = ret1;				\
 } while (0)
 
+	set_warning_routine(debug_warn);
+
 	TEST_EVENTS(test__events);
 
 	if (test_pmu())
diff --git a/tools/perf/util/usage.c b/tools/perf/util/usage.c
index 4007aca8e0ca..6adfa18cdd4e 100644
--- a/tools/perf/util/usage.c
+++ b/tools/perf/util/usage.c
@@ -50,6 +50,11 @@ void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN)
 	die_routine = routine;
 }
 
+void set_warning_routine(void (*routine)(const char *err, va_list params))
+{
+	warn_routine = routine;
+}
+
 void usage(const char *err)
 {
 	usage_routine(err);
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
index 3d5b01e8978f..4cfb913aa9e0 100644
--- a/tools/perf/util/util.h
+++ b/tools/perf/util/util.h
@@ -145,6 +145,7 @@ extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)))
 
 
 extern void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN);
+extern void set_warning_routine(void (*routine)(const char *err, va_list params));
 
 extern int prefixcmp(const char *str, const char *prefix);
 extern void set_buildid_dir(const char *dir);
-- 
2.1.0


  parent reply	other threads:[~2015-10-19 21:40 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-19 21:39 [GIT PULL 00/23] perf/core improvements and fixes Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 01/23] perf test: Silence tracepoint event failures Arnaldo Carvalho de Melo
2015-10-19 21:39 ` Arnaldo Carvalho de Melo [this message]
2015-10-19 21:39 ` [PATCH 03/23] perf bench: Improve the 'perf bench mem memcpy' code readability Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 04/23] perf bench: Default to all routines in 'perf bench mem' Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 05/23] perf bench: Eliminate unused argument from bench_mem_common() Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 06/23] perf bench: Rename 'mem-memcpy.c' => 'mem-functions.c' Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 07/23] perf bench: Remove the prefaulting complication from 'perf bench mem mem*' Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 08/23] perf bench: List output formatting options on 'perf bench -h' Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 09/23] perf bench mem: Change 'cycle' to 'cycles' Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 10/23] perf bench mem: Rename 'routine' to 'routine_str' Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 11/23] perf bench mem: Fix 'length' vs. 'size' naming confusion Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 12/23] perf bench mem: Improve user visible strings Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 13/23] perf bench mem: Reorganize the code a bit Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 14/23] perf bench: Harmonize all the -l/--nr_loops options Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 15/23] perf bench mem: Rename 'routine' to 'function' Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 16/23] perf bench: Run benchmarks, don't test them Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 17/23] perf help: Change 'usage' to 'Usage' for consistency Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 18/23] perf stat: Rename perf_stat struct into perf_stat_evsel Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 19/23] perf stat: Add AGGR_UNSET mode Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 20/23] perf cpu_map: Make cpu_map__build_map global Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 21/23] perf cpu_map: Add data arg to cpu_map__build_map callback Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 22/23] perf script: Check output fields only for samples Arnaldo Carvalho de Melo
2015-10-19 21:39 ` [PATCH 23/23] perf bench: Use named initializers in the trailer too Arnaldo Carvalho de Melo
2015-10-20  7:32 ` [GIT PULL 00/23] perf/core improvements and fixes Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1445290774-13344-3-git-send-email-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=wangnan0@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.