This is a preparation for perf report multi-thread support.  When
multi-thread is enable, each thread will have its own hists during the
sample processing.

Signed-off-by: Namhyung Kim <[email protected]>
---
 tools/perf/builtin-report.c       |  1 +
 tools/perf/builtin-top.c          |  1 +
 tools/perf/tests/hists_cumulate.c |  1 +
 tools/perf/tests/hists_filter.c   |  1 +
 tools/perf/tests/hists_output.c   |  1 +
 tools/perf/util/hist.c            | 22 ++++++++--------------
 tools/perf/util/hist.h            |  1 +
 7 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index aeced4fa27e8..f6e000b87108 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -145,6 +145,7 @@ static int process_sample_event(struct perf_tool *tool,
        struct addr_location al;
        struct hist_entry_iter iter = {
                .evsel                  = evsel,
+               .hists                  = evsel__hists(evsel),
                .sample                 = sample,
                .hide_unresolved        = rep->hide_unresolved,
                .add_entry_cb           = hist_iter__report_callback,
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 6f641fd68296..e1ead08755c8 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -787,6 +787,7 @@ static void perf_event__process_sample(struct perf_tool 
*tool,
                struct hists *hists = evsel__hists(evsel);
                struct hist_entry_iter iter = {
                        .evsel          = evsel,
+                       .hists          = evsel__hists(evsel),
                        .sample         = sample,
                        .add_entry_cb   = hist_iter__top_callback,
                };
diff --git a/tools/perf/tests/hists_cumulate.c 
b/tools/perf/tests/hists_cumulate.c
index 7ed737019de7..0c046dde9a64 100644
--- a/tools/perf/tests/hists_cumulate.c
+++ b/tools/perf/tests/hists_cumulate.c
@@ -88,6 +88,7 @@ static int add_hist_entries(struct hists *hists, struct 
machine *machine)
                };
                struct hist_entry_iter iter = {
                        .evsel = evsel,
+                       .hists = evsel__hists(evsel),
                        .sample = &sample,
                        .hide_unresolved = false,
                };
diff --git a/tools/perf/tests/hists_filter.c b/tools/perf/tests/hists_filter.c
index 818acf875dd0..b866a5389a1d 100644
--- a/tools/perf/tests/hists_filter.c
+++ b/tools/perf/tests/hists_filter.c
@@ -65,6 +65,7 @@ static int add_hist_entries(struct perf_evlist *evlist,
                        };
                        struct hist_entry_iter iter = {
                                .evsel = evsel,
+                               .hists = evsel__hists(evsel),
                                .sample = &sample,
                                .ops = &hist_iter_normal,
                                .hide_unresolved = false,
diff --git a/tools/perf/tests/hists_output.c b/tools/perf/tests/hists_output.c
index adbebc852cc8..bf9efe145260 100644
--- a/tools/perf/tests/hists_output.c
+++ b/tools/perf/tests/hists_output.c
@@ -58,6 +58,7 @@ static int add_hist_entries(struct hists *hists, struct 
machine *machine)
                };
                struct hist_entry_iter iter = {
                        .evsel = evsel,
+                       .hists = evsel__hists(evsel),
                        .sample = &sample,
                        .ops = &hist_iter_normal,
                        .hide_unresolved = false,
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 10454197a508..045313c219b6 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -511,7 +511,7 @@ iter_add_single_mem_entry(struct hist_entry_iter *iter, 
struct addr_location *al
        u64 cost;
        struct mem_info *mi = iter->priv;
        struct perf_sample *sample = iter->sample;
-       struct hists *hists = evsel__hists(iter->evsel);
+       struct hists *hists = iter->hists;
        struct hist_entry *he;
 
        if (mi == NULL)
@@ -541,8 +541,7 @@ static int
 iter_finish_mem_entry(struct hist_entry_iter *iter,
                      struct addr_location *al __maybe_unused)
 {
-       struct perf_evsel *evsel = iter->evsel;
-       struct hists *hists = evsel__hists(evsel);
+       struct hists *hists = iter->hists;
        struct hist_entry *he = iter->he;
        int err = -EINVAL;
 
@@ -614,8 +613,7 @@ static int
 iter_add_next_branch_entry(struct hist_entry_iter *iter, struct addr_location 
*al)
 {
        struct branch_info *bi;
-       struct perf_evsel *evsel = iter->evsel;
-       struct hists *hists = evsel__hists(evsel);
+       struct hists *hists = iter->hists;
        struct hist_entry *he = NULL;
        int i = iter->curr;
        int err = 0;
@@ -663,11 +661,10 @@ iter_prepare_normal_entry(struct hist_entry_iter *iter 
__maybe_unused,
 static int
 iter_add_single_normal_entry(struct hist_entry_iter *iter, struct 
addr_location *al)
 {
-       struct perf_evsel *evsel = iter->evsel;
        struct perf_sample *sample = iter->sample;
        struct hist_entry *he;
 
-       he = __hists__add_entry(evsel__hists(evsel), al, iter->parent, NULL, 
NULL,
+       he = __hists__add_entry(iter->hists, al, iter->parent, NULL, NULL,
                                sample->period, sample->weight,
                                sample->transaction, sample->time, true);
        if (he == NULL)
@@ -682,7 +679,6 @@ iter_finish_normal_entry(struct hist_entry_iter *iter,
                         struct addr_location *al __maybe_unused)
 {
        struct hist_entry *he = iter->he;
-       struct perf_evsel *evsel = iter->evsel;
        struct perf_sample *sample = iter->sample;
 
        if (he == NULL)
@@ -690,7 +686,7 @@ iter_finish_normal_entry(struct hist_entry_iter *iter,
 
        iter->he = NULL;
 
-       hists__inc_nr_samples(evsel__hists(evsel), he->filtered);
+       hists__inc_nr_samples(iter->hists, he->filtered);
 
        return hist_entry__append_callchain(he, sample);
 }
@@ -722,8 +718,7 @@ static int
 iter_add_single_cumulative_entry(struct hist_entry_iter *iter,
                                 struct addr_location *al)
 {
-       struct perf_evsel *evsel = iter->evsel;
-       struct hists *hists = evsel__hists(evsel);
+       struct hists *hists = iter->hists;
        struct perf_sample *sample = iter->sample;
        struct hist_entry **he_cache = iter->priv;
        struct hist_entry *he;
@@ -768,12 +763,11 @@ static int
 iter_add_next_cumulative_entry(struct hist_entry_iter *iter,
                               struct addr_location *al)
 {
-       struct perf_evsel *evsel = iter->evsel;
        struct perf_sample *sample = iter->sample;
        struct hist_entry **he_cache = iter->priv;
        struct hist_entry *he;
        struct hist_entry he_tmp = {
-               .hists = evsel__hists(evsel),
+               .hists = iter->hists,
                .cpu = al->cpu,
                .thread = al->thread,
                .comm = thread__comm_by_time(al->thread, sample->time),
@@ -803,7 +797,7 @@ iter_add_next_cumulative_entry(struct hist_entry_iter *iter,
                }
        }
 
-       he = __hists__add_entry(evsel__hists(evsel), al, iter->parent, NULL, 
NULL,
+       he = __hists__add_entry(iter->hists, al, iter->parent, NULL, NULL,
                                sample->period, sample->weight,
                                sample->transaction, sample->time, false);
        if (he == NULL)
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 7fbb60857f26..081a1f7ffb84 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -92,6 +92,7 @@ struct hist_entry_iter {
        bool hide_unresolved;
        int max_stack;
 
+       struct hists *hists;
        struct perf_evsel *evsel;
        struct perf_sample *sample;
        struct hist_entry *he;
-- 
2.6.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
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