Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1179831

[PATCH v11 37/39] perf tools: Suppress probing messages when probing by BPF loading

From Wang Nan <wangnan0@huawei.com>
Newsgroups linux.kernel
Subject [PATCH v11 37/39] perf tools: Suppress probing messages when probing by BPF loading
Date 2015-07-08 15:30 +0200
Message-ID <pJXAg-3fG-63@gated-at.bofh.it> (permalink)
References <pJXqx-3bZ-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


This patch suppress message output by add_perf_probe_events() and
del_perf_probe_events() if they are triggered by BPF loading. Before
this patch, when using 'perf record' with BPF object/source as event
selector, following message will be output:

     Added new event:
           perf_bpf_probe:lock_page_ret (on __lock_page%return)
        You can now use it in all perf tools, such as:
	            perf record -e perf_bpf_probe:lock_page_ret -aR sleep 1
     ...
     Removed event: perf_bpf_probe:lock_page_ret

Which is misleading, especially 'use it in all perf tools' because they
will be removed after 'pref record' exit.

In this patch, a 'silent' field is appended into probe_conf to control
output. bpf__{,un}probe() set it to true when calling
{add,del}_perf_probe_events().

Signed-off-by: Wang Nan <wangnan0@huawei.com>
---
 tools/perf/util/bpf-loader.c  |  6 ++++++
 tools/perf/util/probe-event.c | 22 ++++++++++++++++------
 tools/perf/util/probe-event.h |  1 +
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index 63077b9..4aa372b 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -199,6 +199,7 @@ static bool is_probing;
 int bpf__unprobe(void)
 {
 	struct strfilter *delfilter;
+	bool old_silent = probe_conf.silent;
 	int ret;
 
 	if (!is_probing)
@@ -210,7 +211,9 @@ int bpf__unprobe(void)
 		return -ENOMEM;
 	}
 
+	probe_conf.silent = true;
 	ret = del_perf_probe_events(delfilter);
+	probe_conf.silent = old_silent;
 	strfilter__delete(delfilter);
 	if (ret < 0 && is_probing)
 		pr_err("Error: failed to delete events: %s\n",
@@ -223,15 +226,18 @@ int bpf__unprobe(void)
 int bpf__probe(void)
 {
 	int err;
+	bool old_silent = probe_conf.silent;
 
 	if (nr_probe_events <= 0)
 		return 0;
 
+	probe_conf.silent = true;
 	probe_conf.max_probes = MAX_PROBES;
 	/* Let add_perf_probe_events keeps probe_trace_event */
 	err = add_perf_probe_events(probe_event_array,
 				    nr_probe_events,
 				    false);
+	probe_conf.silent = old_silent;
 
 	/* add_perf_probe_events return negative when fail */
 	if (err < 0)
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 083e8b4..b9573c5 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -51,7 +51,9 @@
 #define PERFPROBE_GROUP "probe"
 
 bool probe_event_dry_run;	/* Dry run flag */
-struct probe_conf probe_conf;
+struct probe_conf probe_conf = {
+	.silent = false,
+};
 
 #define semantic_error(msg ...) pr_err("Semantic error :" msg)
 
@@ -2250,10 +2252,12 @@ static int show_perf_probe_event(const char *group, const char *event,
 
 	ret = perf_probe_event__sprintf(group, event, pev, module, &buf);
 	if (ret >= 0) {
-		if (use_stdout)
+		if (use_stdout && !probe_conf.silent)
 			printf("%s\n", buf.buf);
-		else
+		else if (!probe_conf.silent)
 			pr_info("%s\n", buf.buf);
+		else
+			pr_debug("%s\n", buf.buf);
 	}
 	strbuf_release(&buf);
 
@@ -2512,7 +2516,10 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
 
 	safename = (pev->point.function && !strisglob(pev->point.function));
 	ret = 0;
-	pr_info("Added new event%s\n", (ntevs > 1) ? "s:" : ":");
+	if (!probe_conf.silent)
+		pr_info("Added new event%s\n", (ntevs > 1) ? "s:" : ":");
+	else
+		pr_debug("Added new event%s\n", (ntevs > 1) ? "s:" : ":");
 	for (i = 0; i < ntevs; i++) {
 		tev = &tevs[i];
 		/* Skip if the symbol is out of .text or blacklisted */
@@ -2569,7 +2576,7 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
 		warn_uprobe_event_compat(tev);
 
 	/* Note that it is possible to skip all events because of blacklist */
-	if (ret >= 0 && event) {
+	if (ret >= 0 && event && !probe_conf.silent) {
 		/* Show how to use the event. */
 		pr_info("\nYou can now use it in all perf tools, such as:\n\n");
 		pr_info("\tperf record -e %s:%s -aR sleep 1\n\n", group, event);
@@ -2865,7 +2872,10 @@ static int __del_trace_probe_event(int fd, struct str_node *ent)
 		goto error;
 	}
 
-	pr_info("Removed event: %s\n", ent->s);
+	if (!probe_conf.silent)
+		pr_info("Removed event: %s\n", ent->s);
+	else
+		pr_debug("Removed event: %s\n", ent->s);
 	return 0;
 error:
 	pr_warning("Failed to delete event: %s\n",
diff --git a/tools/perf/util/probe-event.h b/tools/perf/util/probe-event.h
index 4b7a951..116b0aa 100644
--- a/tools/perf/util/probe-event.h
+++ b/tools/perf/util/probe-event.h
@@ -13,6 +13,7 @@ struct probe_conf {
 	bool	force_add;
 	bool	no_inlines;
 	int	max_probes;
+	bool	silent;
 };
 extern struct probe_conf probe_conf;
 extern bool probe_event_dry_run;
-- 
1.8.3.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v11 00/39] perf tools: filtering events using eBPF programs - part1 Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 03/39] bpf tools: Introduce 'bpf' library and add bpf feature check Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 35/39] perf tools: Add bpf_fd field to evsel and config it Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 28/39] perf tools: Make perf depend on libbpf Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 34/39] perf record: Load all eBPF object into kernel Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 13/39] bpf tools: Collect relocation sections from SHT_REL sections Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 22/39] bpf tools: Link all bpf objects onto a list Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 02/39] tracing, perf: Implement BPF programs attached to uprobes Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 07/39] bpf tools: Check endianness and make libbpf fail early Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 38/39] perf record: Add clang options for compiling BPF scripts Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 33/39] perf record: Probe at kprobe points Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 32/39] perf probe: Attach trace_probe_event with perf_probe_event Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 36/39] perf tools: Attach eBPF program to perf event Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 23/39] perf tools: Introduce llvm config options Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 11/39] bpf tools: Collect symbol table from SHT_SYMTAB section Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 10/39] bpf tools: Collect map definitions from 'maps' section Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:20 +0200
  [PATCH v11 19/39] bpf tools: Load eBPF programs in object files into kernel Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 18/39] bpf tools: Introduce bpf_load_program() to bpf.c Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 15/39] bpf tools: Add bpf.c/h for common bpf operations Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 29/39] perf record: Enable passing bpf object file to --event Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 05/39] bpf tools: Open eBPF object file and do basic validation Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 27/39] perf tests: Add LLVM test for eBPF on-the-fly compiling Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 09/39] bpf tools: Collect version and license from ELF sections Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 31/39] perf tools: Parse probe points of eBPF programs during preparation Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 17/39] bpf tools: Relocate eBPF programs Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 16/39] bpf tools: Create eBPF maps defined in an object file Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 14/39] bpf tools: Record map accessing instructions for each program Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 25/39] perf tools: Auto detecting kernel build directory Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 39/39] bpf tools: Load a program with different instance using preprocessor Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 04/39] bpf tools: Allow caller to set printing function Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 21/39] bpf tools: Introduce accessors for struct bpf_object Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 06/39] bpf tools: Read eBPF object from buffer Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 24/39] perf tools: Call clang to compile C source to object code Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 20/39] bpf tools: Introduce accessors for struct bpf_program Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 37/39] perf tools: Suppress probing messages when probing by BPF loading Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  [PATCH v11 26/39] perf tools: Auto detecting kernel include options Wang Nan <wangnan0@huawei.com> - 2015-07-08 15:30 +0200
  Re: [PATCH v11 00/39] perf tools: filtering events using eBPF  programs - part1 Arnaldo Carvalho de Melo <acme@kernel.org> - 2015-07-08 16:10 +0200

csiph-web