lkml.org 
[lkml]   [2015]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC/PATCH 27/38] perf hists: Pass hists struct to hist_entry_iter struct
    Date
    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 <namhyung@kernel.org>
    ---
    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


    \
     
     \ /
      Last update: 2015-10-02 07:41    [W:4.270 / U:0.464 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site