lkml.org 
[lkml]   [2012]   [Mar]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] perf: Add a new sort order: SORT_INCLUSIVE (v3)
    On Wed, Mar 14, 2012 at 11:50:53AM +0900, Namhyung Kim wrote:
    > Hi Arun,
    > [...]

    Thanks for reviewing. Please take a look at this incremental patch.
    I'll mail the v4 patch next.

    -Arun

    diff --git a/tools/perf/util/callchain.c b/tools/perf/util/callchain.c
    index aa4acde..2b824a5 100644
    --- a/tools/perf/util/callchain.c
    +++ b/tools/perf/util/callchain.c
    @@ -465,7 +465,8 @@ int callchain_get(struct callchain_cursor *cursor,
    {
    struct callchain_cursor_node *node = cursor->curr;

    - if (node == NULL) return -1;
    + if (node == NULL)
    + return -1;

    al->map = node->map;
    al->sym = node->sym;
    diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
    index 9d703ec..f3200ea 100644
    --- a/tools/perf/util/hist.c
    +++ b/tools/perf/util/hist.c
    @@ -79,7 +79,6 @@ static void hists__calc_col_len(struct hists *hists, struct hist_entry *h)
    static void hist_entry__add_cpumode_period(struct hist_entry *he,
    unsigned int cpumode, u64 period)
    {
    - he->period_self += period;
    switch (cpumode) {
    case PERF_RECORD_MISC_KERNEL:
    he->period_sys += period;
    @@ -213,7 +212,6 @@ static struct hist_entry *___hists__add_entry(struct hists *hists,
    .ip = al->addr,
    .level = al->level,
    .period = period,
    - .period_self = period,
    .parent = sym_parent,
    .filtered = symbol__parent_filter(sym_parent),
    };
    @@ -280,13 +278,11 @@ static struct hist_entry *__hists__add_entry_inclusive(struct hists *hists,

    new_cursor.first = iter.curr;
    new_cursor.nr = cursor->nr - i;
    - if (i != 0)
    - he->period_self -= period;
    - else
    + if (i == 0) {
    + he->period_self += period;
    orig_he = he;
    - err = callchain_append(he->callchain,
    - &new_cursor,
    - period);
    + }
    + err = callchain_append(he->callchain, &new_cursor, period);
    if (err)
    return NULL;
    callchain_cursor_advance(&iter);
    @@ -306,6 +302,7 @@ static struct hist_entry *__hists__add_entry_single(struct hists *hists,
    he = ___hists__add_entry(hists, al, sym_parent, period);
    if (he == NULL)
    return NULL;
    + he->period_self += period;
    if (symbol_conf.use_callchain) {
    err = callchain_append(he->callchain, cursor, period);
    if (err)
    @@ -322,7 +319,7 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
    {
    struct hist_entry *he;

    - if (sort__first_dimension == SORT_INCLUSIVE)
    + if (sort__has_inclusive && symbol_conf.use_callchain)
    he = __hists__add_entry_inclusive(hists, al, parent,
    cursor, period);
    else
    diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
    index f7c93d9..9033a62 100644
    --- a/tools/perf/util/sort.c
    +++ b/tools/perf/util/sort.c
    @@ -8,6 +8,7 @@ const char default_sort_order[] = "comm,dso,symbol";
    const char *sort_order = default_sort_order;
    int sort__need_collapse = 0;
    int sort__has_parent = 0;
    +int sort__has_inclusive = 0;

    enum sort_type sort__first_dimension;

    @@ -291,6 +292,9 @@ int sort_dimension__add(const char *tok)
    sort__has_parent = 1;
    }

    + if (sd->entry == &sort_sym_inclusive)
    + sort__has_inclusive = 1;
    +
    if (sd->taken)
    return 0;

    diff --git a/tools/perf/util/sort.h b/tools/perf/util/sort.h
    index efb145f..97f67d5 100644
    --- a/tools/perf/util/sort.h
    +++ b/tools/perf/util/sort.h
    @@ -31,6 +31,7 @@ extern const char *parent_pattern;
    extern const char default_sort_order[];
    extern int sort__need_collapse;
    extern int sort__has_parent;
    +extern int sort__has_inclusive;
    extern char *field_sep;
    extern struct sort_entry sort_comm;
    extern struct sort_entry sort_dso;

    \
     
     \ /
      Last update: 2012-03-14 18:39    [W:0.028 / U:0.228 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site