Commit-ID:  f6d8b0571c9ac8f273d18c112c2fc3c9533c9f0a
Gitweb:     http://git.kernel.org/tip/f6d8b0571c9ac8f273d18c112c2fc3c9533c9f0a
Author:     Arnaldo Carvalho de Melo <a...@redhat.com>
AuthorDate: Wed, 8 Jan 2014 14:45:24 -0300
Committer:  Arnaldo Carvalho de Melo <a...@redhat.com>
CommitDate: Mon, 13 Jan 2014 10:06:25 -0300

perf report: Move histogram entries collapsing to separate function

Further uncluttering the main 'report' function by group related code in
separate function.

Cc: Adrian Hunter <adrian.hun...@intel.com>
Cc: David Ahern <dsah...@gmail.com>
Cc: Frederic Weisbecker <fweis...@gmail.com>
Cc: Jiri Olsa <jo...@redhat.com>
Cc: Mike Galbraith <efa...@gmx.de>
Cc: Namhyung Kim <namhy...@kernel.org>
Cc: Paul Mackerras <pau...@samba.org>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Stephane Eranian <eran...@google.com>
Link: http://lkml.kernel.org/n/tip-b594zsbwke8khir13kudw...@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com>
---
 tools/perf/builtin-report.c | 73 ++++++++++++++++++++++++++++-----------------
 1 file changed, 45 insertions(+), 28 deletions(-)

diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 03941ad..cff9465 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -486,13 +486,55 @@ static int report__browse_hists(struct report *rep)
        return ret;
 }
 
+static u64 report__collapse_hists(struct report *rep)
+{
+       struct ui_progress prog;
+       struct perf_evsel *pos;
+       u64 nr_samples = 0;
+       /*
+        * Count number of histogram entries to use when showing progress,
+        * reusing nr_samples variable.
+        */
+       list_for_each_entry(pos, &rep->session->evlist->entries, node)
+               nr_samples += pos->hists.nr_entries;
+
+       ui_progress__init(&prog, nr_samples, "Merging related events...");
+       /*
+        * Count total number of samples, will be used to check if this
+        * session had any.
+        */
+       nr_samples = 0;
+
+       list_for_each_entry(pos, &rep->session->evlist->entries, node) {
+               struct hists *hists = &pos->hists;
+
+               if (pos->idx == 0)
+                       hists->symbol_filter_str = rep->symbol_filter_str;
+
+               hists__collapse_resort(hists, &prog);
+               nr_samples += hists->stats.nr_events[PERF_RECORD_SAMPLE];
+
+               /* Non-group events are considered as leader */
+               if (symbol_conf.event_group &&
+                   !perf_evsel__is_group_leader(pos)) {
+                       struct hists *leader_hists = &pos->leader->hists;
+
+                       hists__match(leader_hists, hists);
+                       hists__link(leader_hists, hists);
+               }
+       }
+
+       ui_progress__finish();
+
+       return nr_samples;
+}
+
 static int __cmd_report(struct report *rep)
 {
-       int ret = -EINVAL;
+       int ret;
        u64 nr_samples;
        struct perf_session *session = rep->session;
        struct perf_evsel *pos;
-       struct ui_progress prog;
        struct perf_data_file *file = session->file;
 
        signal(SIGINT, sig_handler);
@@ -530,32 +572,7 @@ static int __cmd_report(struct report *rep)
                }
        }
 
-       nr_samples = 0;
-       list_for_each_entry(pos, &session->evlist->entries, node)
-               nr_samples += pos->hists.nr_entries;
-
-       ui_progress__init(&prog, nr_samples, "Merging related events...");
-
-       nr_samples = 0;
-       list_for_each_entry(pos, &session->evlist->entries, node) {
-               struct hists *hists = &pos->hists;
-
-               if (pos->idx == 0)
-                       hists->symbol_filter_str = rep->symbol_filter_str;
-
-               hists__collapse_resort(hists, &prog);
-               nr_samples += hists->stats.nr_events[PERF_RECORD_SAMPLE];
-
-               /* Non-group events are considered as leader */
-               if (symbol_conf.event_group &&
-                   !perf_evsel__is_group_leader(pos)) {
-                       struct hists *leader_hists = &pos->leader->hists;
-
-                       hists__match(leader_hists, hists);
-                       hists__link(leader_hists, hists);
-               }
-       }
-       ui_progress__finish();
+       nr_samples = report__collapse_hists(rep);
 
        if (session_done())
                return 0;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to