aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/evsel_fprintf.c
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung@kernel.org>2016-11-24 10:11:13 +0900
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-11-25 10:49:38 -0300
commit2d9bbf6eb3825739efa9e91c256ce7ead60d8367 (patch)
tree025e9cd32a8c78812251594f6308217138ebb884 /tools/perf/util/evsel_fprintf.c
parentperf annotate: Initial PowerPC support (diff)
downloadlinux-dev-2d9bbf6eb3825739efa9e91c256ce7ead60d8367.tar.xz
linux-dev-2d9bbf6eb3825739efa9e91c256ce7ead60d8367.zip
perf callchain: Add option to skip ignore symbol when printing callchains
For tracepoint events, callchains always contain certain functions. Sometimes it'd be better to skip those functions as they have no value. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/20161124011114.7102-2-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/evsel_fprintf.c')
-rw-r--r--tools/perf/util/evsel_fprintf.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/tools/perf/util/evsel_fprintf.c b/tools/perf/util/evsel_fprintf.c
index 53bb614feafb..5a6f52284452 100644
--- a/tools/perf/util/evsel_fprintf.c
+++ b/tools/perf/util/evsel_fprintf.c
@@ -109,6 +109,7 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
int print_srcline = print_opts & EVSEL__PRINT_SRCLINE;
int print_unknown_as_addr = print_opts & EVSEL__PRINT_UNKNOWN_AS_ADDR;
int print_arrow = print_opts & EVSEL__PRINT_CALLCHAIN_ARROW;
+ int print_skip_ignored = print_opts & EVSEL__PRINT_SKIP_IGNORED;
char s = print_oneline ? ' ' : '\t';
bool first = true;
@@ -124,6 +125,9 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
if (!node)
break;
+ if (node->sym && node->sym->ignore && print_skip_ignored)
+ goto next;
+
printed += fprintf(fp, "%-*.*s", left_alignment, left_alignment, " ");
if (print_arrow && !first)
@@ -162,8 +166,9 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment,
if (!print_oneline)
printed += fprintf(fp, "\n");
- callchain_cursor_advance(cursor);
first = false;
+next:
+ callchain_cursor_advance(cursor);
}
}