From: Namhyung Kim <namhyung....@lge.com>

Like group_stats in hist_entry, total periods information also need to
be known to the leader.

Cc: Jiri Olsa <jo...@redhat.com>
Cc: Stephane Eranian <eran...@google.com>
Signed-off-by: Namhyung Kim <namhy...@kernel.org>
---
 tools/perf/util/hist.c | 25 +++++++++++++++++++++++++
 tools/perf/util/hist.h |  1 +
 2 files changed, 26 insertions(+)

diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 319822dee77b..8f01fc46ca88 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -194,6 +194,28 @@ static void hist_entry__add_group_stat(struct hist_entry 
*he_dest,
                he_stat__add_stat(&he_dest->group_stats[evsel->group_idx], src);
 }
 
+static void hists__add_group_stat(struct hists *hists)
+{
+       struct perf_evsel *evsel = hists_2_evsel(hists);
+       struct perf_evsel *leader = evsel->leader;
+       struct hists *leader_hists;
+
+       if (perf_evsel__is_group_leader(evsel))
+               return;
+
+       leader_hists = &leader->hists;
+
+       if (!leader_hists->group_stats) {
+               leader_hists->group_stats = calloc(leader->nr_members,
+                                                  sizeof(struct events_stats));
+               if (!leader_hists->group_stats)
+                       return;
+       }
+
+       memcpy(&leader_hists->group_stats[evsel->group_idx],
+              &hists->stats, sizeof(struct events_stats));
+}
+
 static void hist_entry__decay(struct hist_entry *he)
 {
        he->stat.period = (he->stat.period * 7) / 8;
@@ -557,6 +579,9 @@ static void __hists__collapse_resort(struct hists *hists, 
bool threaded)
                        hists__apply_filters(hists, n);
                }
        }
+
+       if (symbol_conf.event_group)
+               hists__add_group_stat(hists);
 }
 
 void hists__collapse_resort(struct hists *hists)
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index f011ad4756e8..e13db91bc246 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -66,6 +66,7 @@ struct hists {
        const char              *symbol_filter_str;
        pthread_mutex_t         lock;
        struct events_stats     stats;
+       struct events_stats     *group_stats;
        u64                     event_stream;
        u16                     col_len[HISTC_NR_COLS];
 };
-- 
1.7.11.4

--
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