diff options
author | Namhyung Kim <namhyung.kim@lge.com> | 2013-01-22 04:09:32 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-01-31 11:07:44 -0500 |
commit | 6e1f601a10cbaa5cda869f844292dd81c519a8e7 (patch) | |
tree | 6098ee693839a46bd7407954f337b9c69fc89461 /tools/perf | |
parent | a8bb559bd4eff5c71601e2e61a4bd1deef44a03c (diff) |
perf report: Make another loop for linking group hists
Now the event grouping viewing requires linking all member hists in a
group to the leader's. Thus hists__output_resort should be called after
linking all events in evlist.
Introduce symbol_conf.event_group flag to determine whether the feature
is enabled or not.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1358845787-1350-5-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/builtin-report.c | 13 | ||||
-rw-r--r-- | tools/perf/util/symbol.h | 3 |
2 files changed, 14 insertions, 2 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 47a864478543..fd2503a5f876 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
@@ -416,8 +416,16 @@ static int __cmd_report(struct perf_report *rep) | |||
416 | hists->symbol_filter_str = rep->symbol_filter_str; | 416 | hists->symbol_filter_str = rep->symbol_filter_str; |
417 | 417 | ||
418 | hists__collapse_resort(hists); | 418 | hists__collapse_resort(hists); |
419 | hists__output_resort(hists); | ||
420 | nr_samples += hists->stats.nr_events[PERF_RECORD_SAMPLE]; | 419 | nr_samples += hists->stats.nr_events[PERF_RECORD_SAMPLE]; |
420 | |||
421 | /* Non-group events are considered as leader */ | ||
422 | if (symbol_conf.event_group && | ||
423 | !perf_evsel__is_group_leader(pos)) { | ||
424 | struct hists *leader_hists = &pos->leader->hists; | ||
425 | |||
426 | hists__match(leader_hists, hists); | ||
427 | hists__link(leader_hists, hists); | ||
428 | } | ||
421 | } | 429 | } |
422 | 430 | ||
423 | if (nr_samples == 0) { | 431 | if (nr_samples == 0) { |
@@ -425,6 +433,9 @@ static int __cmd_report(struct perf_report *rep) | |||
425 | goto out_delete; | 433 | goto out_delete; |
426 | } | 434 | } |
427 | 435 | ||
436 | list_for_each_entry(pos, &session->evlist->entries, node) | ||
437 | hists__output_resort(&pos->hists); | ||
438 | |||
428 | if (use_browser > 0) { | 439 | if (use_browser > 0) { |
429 | if (use_browser == 1) { | 440 | if (use_browser == 1) { |
430 | perf_evlist__tui_browse_hists(session->evlist, help, | 441 | perf_evlist__tui_browse_hists(session->evlist, help, |
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h index d97377ac2f16..b62ca37c4b77 100644 --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h | |||
@@ -96,7 +96,8 @@ struct symbol_conf { | |||
96 | initialized, | 96 | initialized, |
97 | kptr_restrict, | 97 | kptr_restrict, |
98 | annotate_asm_raw, | 98 | annotate_asm_raw, |
99 | annotate_src; | 99 | annotate_src, |
100 | event_group; | ||
100 | const char *vmlinux_name, | 101 | const char *vmlinux_name, |
101 | *kallsyms_name, | 102 | *kallsyms_name, |
102 | *source_prefix, | 103 | *source_prefix, |