lkml.org 
[lkml]   [2016]   [Jan]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 01/59] perf hist: Pass struct sample to __hists__add_entry()
    Date
    From: Namhyung Kim <namhyung@kernel.org>

    This is a preparation to add more info into the hist_entry. Also it
    already passes too many argument, so passing sample directly will reduce
    the overhead of the function call.

    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1450804030-29193-2-git-send-email-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/builtin-annotate.c | 7 +++++--
    tools/perf/builtin-diff.c | 11 +++++------
    tools/perf/tests/hists_link.c | 6 +++---
    tools/perf/util/hist.c | 31 +++++++++++++++++--------------
    tools/perf/util/hist.h | 4 ++--
    5 files changed, 32 insertions(+), 27 deletions(-)

    diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
    index e18f1b995ffd..b5b8db0b0338 100644
    --- a/tools/perf/builtin-annotate.c
    +++ b/tools/perf/builtin-annotate.c
    @@ -47,7 +47,7 @@ struct perf_annotate {
    };

    static int perf_evsel__add_sample(struct perf_evsel *evsel,
    - struct perf_sample *sample __maybe_unused,
    + struct perf_sample *sample,
    struct addr_location *al,
    struct perf_annotate *ann)
    {
    @@ -72,7 +72,10 @@ static int perf_evsel__add_sample(struct perf_evsel *evsel,
    return 0;
    }

    - he = __hists__add_entry(hists, al, NULL, NULL, NULL, 1, 1, 0, true);
    + sample->period = 1;
    + sample->weight = 1;
    +
    + he = __hists__add_entry(hists, al, NULL, NULL, NULL, sample, true);
    if (he == NULL)
    return -ENOMEM;

    diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
    index 0b180a885ba3..69f5b1feff39 100644
    --- a/tools/perf/builtin-diff.c
    +++ b/tools/perf/builtin-diff.c
    @@ -311,11 +311,11 @@ static int formula_fprintf(struct hist_entry *he, struct hist_entry *pair,
    }

    static int hists__add_entry(struct hists *hists,
    - struct addr_location *al, u64 period,
    - u64 weight, u64 transaction)
    + struct addr_location *al,
    + struct perf_sample *sample)
    {
    - if (__hists__add_entry(hists, al, NULL, NULL, NULL, period, weight,
    - transaction, true) != NULL)
    + if (__hists__add_entry(hists, al, NULL, NULL, NULL,
    + sample, true) != NULL)
    return 0;
    return -ENOMEM;
    }
    @@ -336,8 +336,7 @@ static int diff__process_sample_event(struct perf_tool *tool __maybe_unused,
    return -1;
    }

    - if (hists__add_entry(hists, &al, sample->period,
    - sample->weight, sample->transaction)) {
    + if (hists__add_entry(hists, &al, sample)) {
    pr_warning("problem incrementing symbol period, skipping event\n");
    goto out_put;
    }
    diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c
    index 6243e2b2a245..9eac98daecb8 100644
    --- a/tools/perf/tests/hists_link.c
    +++ b/tools/perf/tests/hists_link.c
    @@ -64,7 +64,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
    struct perf_evsel *evsel;
    struct addr_location al;
    struct hist_entry *he;
    - struct perf_sample sample = { .period = 1, };
    + struct perf_sample sample = { .period = 1, .weight = 1, };
    size_t i = 0, k;

    /*
    @@ -90,7 +90,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
    goto out;

    he = __hists__add_entry(hists, &al, NULL,
    - NULL, NULL, 1, 1, 0, true);
    + NULL, NULL, &sample, true);
    if (he == NULL) {
    addr_location__put(&al);
    goto out;
    @@ -116,7 +116,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
    goto out;

    he = __hists__add_entry(hists, &al, NULL,
    - NULL, NULL, 1, 1, 0, true);
    + NULL, NULL, &sample, true);
    if (he == NULL) {
    addr_location__put(&al);
    goto out;
    diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
    index 56e97f5af598..039bb91d0a92 100644
    --- a/tools/perf/util/hist.c
    +++ b/tools/perf/util/hist.c
    @@ -461,7 +461,7 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
    struct symbol *sym_parent,
    struct branch_info *bi,
    struct mem_info *mi,
    - u64 period, u64 weight, u64 transaction,
    + struct perf_sample *sample,
    bool sample_self)
    {
    struct hist_entry entry = {
    @@ -478,15 +478,15 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
    .level = al->level,
    .stat = {
    .nr_events = 1,
    - .period = period,
    - .weight = weight,
    + .period = sample->period,
    + .weight = sample->weight,
    },
    .parent = sym_parent,
    .filtered = symbol__parent_filter(sym_parent) | al->filtered,
    .hists = hists,
    .branch_info = bi,
    .mem_info = mi,
    - .transaction = transaction,
    + .transaction = sample->transaction,
    };

    return hists__findnew_entry(hists, &entry, al, sample_self);
    @@ -526,12 +526,13 @@ iter_add_single_mem_entry(struct hist_entry_iter *iter, struct addr_location *al
    u64 cost;
    struct mem_info *mi = iter->priv;
    struct hists *hists = evsel__hists(iter->evsel);
    + struct perf_sample *sample = iter->sample;
    struct hist_entry *he;

    if (mi == NULL)
    return -EINVAL;

    - cost = iter->sample->weight;
    + cost = sample->weight;
    if (!cost)
    cost = 1;

    @@ -542,8 +543,10 @@ iter_add_single_mem_entry(struct hist_entry_iter *iter, struct addr_location *al
    * and this is indirectly achieved by passing period=weight here
    * and the he_stat__add_period() function.
    */
    + sample->period = cost;
    +
    he = __hists__add_entry(hists, al, iter->parent, NULL, mi,
    - cost, cost, 0, true);
    + sample, true);
    if (!he)
    return -ENOMEM;

    @@ -630,6 +633,7 @@ iter_add_next_branch_entry(struct hist_entry_iter *iter, struct addr_location *a
    struct branch_info *bi;
    struct perf_evsel *evsel = iter->evsel;
    struct hists *hists = evsel__hists(evsel);
    + struct perf_sample *sample = iter->sample;
    struct hist_entry *he = NULL;
    int i = iter->curr;
    int err = 0;
    @@ -643,9 +647,11 @@ iter_add_next_branch_entry(struct hist_entry_iter *iter, struct addr_location *a
    * The report shows the percentage of total branches captured
    * and not events sampled. Thus we use a pseudo period of 1.
    */
    + sample->period = 1;
    + sample->weight = bi->flags.cycles ? bi->flags.cycles : 1;
    +
    he = __hists__add_entry(hists, al, iter->parent, &bi[i], NULL,
    - 1, bi->flags.cycles ? bi->flags.cycles : 1,
    - 0, true);
    + sample, true);
    if (he == NULL)
    return -ENOMEM;

    @@ -682,8 +688,7 @@ iter_add_single_normal_entry(struct hist_entry_iter *iter, struct addr_location
    struct hist_entry *he;

    he = __hists__add_entry(evsel__hists(evsel), al, iter->parent, NULL, NULL,
    - sample->period, sample->weight,
    - sample->transaction, true);
    + sample, true);
    if (he == NULL)
    return -ENOMEM;

    @@ -744,8 +749,7 @@ iter_add_single_cumulative_entry(struct hist_entry_iter *iter,
    int err = 0;

    he = __hists__add_entry(hists, al, iter->parent, NULL, NULL,
    - sample->period, sample->weight,
    - sample->transaction, true);
    + sample, true);
    if (he == NULL)
    return -ENOMEM;

    @@ -818,8 +822,7 @@ iter_add_next_cumulative_entry(struct hist_entry_iter *iter,
    }

    he = __hists__add_entry(evsel__hists(evsel), al, iter->parent, NULL, NULL,
    - sample->period, sample->weight,
    - sample->transaction, false);
    + sample, false);
    if (he == NULL)
    return -ENOMEM;

    diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
    index a48a2078d288..36439bfad059 100644
    --- a/tools/perf/util/hist.h
    +++ b/tools/perf/util/hist.h
    @@ -114,8 +114,8 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
    struct addr_location *al,
    struct symbol *parent,
    struct branch_info *bi,
    - struct mem_info *mi, u64 period,
    - u64 weight, u64 transaction,
    + struct mem_info *mi,
    + struct perf_sample *sample,
    bool sample_self);
    int hist_entry_iter__add(struct hist_entry_iter *iter, struct addr_location *al,
    int max_stack_depth, void *arg);
    --
    2.1.0
    \
     
     \ /
      Last update: 2016-01-08 20:01    [W:4.781 / U:0.564 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site