All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] perf probe: Do not use map_load filters for function
@ 2016-08-31 13:04 Arnaldo Carvalho de Melo
  2016-08-31 23:42 ` Masami Hiramatsu
  2016-09-05 13:21 ` [tip:perf/core] " tip-bot for Arnaldo Carvalho de Melo
  0 siblings, 2 replies; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-08-31 13:04 UTC (permalink / raw)
  To: Masami Hiramatsu
  Cc: Adrian Hunter, David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan,
	Linux Kernel Mailing List

From: Arnaldo Carvalho de Melo <acme@redhat.com>

It is simpler to just do the loop, no need for globals and the last user
of such facility disappears.

Testing:

  # perf probe -F [a-z]*recvmsg
  aead_recvmsg
  compat_SyS_recvmsg
  compat_sys_recvmsg
  hash_recvmsg
  inet_recvmsg
  kernel_recvmsg
  netlink_recvmsg
  packet_recvmsg
  ping_recvmsg
  raw_recvmsg
  rawv6_recvmsg
  rng_recvmsg
  security_socket_recvmsg
  selinux_socket_recvmsg
  skcipher_recvmsg
  sock_common_recvmsg
  sock_no_recvmsg
  sock_recvmsg
  sys_recvmsg
  tcp_recvmsg
  udp_recvmsg
  udpv6_recvmsg
  unix_dgram_recvmsg
  unix_seqpacket_recvmsg
  unix_stream_recvmsg
  #

Without filters:

  # perf probe -F | tail -5
  zswap_pool_create
  zswap_pool_current
  zswap_update_total_size
  zswap_writeback_entry
  zswap_zpool_param_set
  #
  # perf probe -F | wc -l
  33311
  #

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-tc6y64i698cddufwe5ppn2k3@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/probe-event.c | 29 ++++++++++-------------------
 1 file changed, 10 insertions(+), 19 deletions(-)

diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 28733962cd80..0bed2ee16292 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -3289,24 +3289,10 @@ out:
 	return ret;
 }
 
-/* TODO: don't use a global variable for filter ... */
-static struct strfilter *available_func_filter;
-
-/*
- * If a symbol corresponds to a function with global binding and
- * matches filter return 0. For all others return 1.
- */
-static int filter_available_functions(struct map *map __maybe_unused,
-				      struct symbol *sym)
-{
-	if (strfilter__compare(available_func_filter, sym->name))
-		return 0;
-	return 1;
-}
-
 int show_available_funcs(const char *target, struct strfilter *_filter,
 					bool user)
 {
+        struct rb_node *nd;
 	struct map *map;
 	int ret;
 
@@ -3324,9 +3310,7 @@ int show_available_funcs(const char *target, struct strfilter *_filter,
 		return -EINVAL;
 	}
 
-	/* Load symbols with given filter */
-	available_func_filter = _filter;
-	ret = map__load(map, filter_available_functions);
+	ret = map__load(map, NULL);
 	if (ret) {
 		if (ret == -2) {
 			char *str = strfilter__string(_filter);
@@ -3343,7 +3327,14 @@ int show_available_funcs(const char *target, struct strfilter *_filter,
 
 	/* Show all (filtered) symbols */
 	setup_pager();
-	dso__fprintf_symbols_by_name(map->dso, map->type, stdout);
+
+        for (nd = rb_first(&map->dso->symbol_names[map->type]); nd; nd = rb_next(nd)) {
+		struct symbol_name_rb_node *pos = rb_entry(nd, struct symbol_name_rb_node, rb_node);
+
+		if (strfilter__compare(_filter, pos->sym.name))
+			printf("%s\n", pos->sym.name);
+        }
+
 end:
 	if (user) {
 		map__put(map);
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-09-05 13:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-31 13:04 [PATCH 1/1] perf probe: Do not use map_load filters for function Arnaldo Carvalho de Melo
2016-08-31 23:42 ` Masami Hiramatsu
2016-09-05 13:21 ` [tip:perf/core] " tip-bot for Arnaldo Carvalho de Melo

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.