lkml.org 
[lkml]   [2010]   [Jan]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5/6] perf tools: Use rb_for_each_entry
    Date
    From: Arnaldo Carvalho de Melo <acme@redhat.com>

    Cc: Frédéric Weisbecker <fweisbec@gmail.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Paul Mackerras <paulus@samba.org>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/builtin-annotate.c | 19 ++++++-------------
    tools/perf/builtin-diff.c | 5 ++---
    tools/perf/builtin-kmem.c | 12 +++++-------
    tools/perf/builtin-sched.c | 10 ++--------
    tools/perf/builtin-top.c | 10 +++-------
    tools/perf/util/symbol.c | 16 ++++++----------
    6 files changed, 24 insertions(+), 48 deletions(-)

    diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
    index 117bbae..61b644e 100644
    --- a/tools/perf/builtin-annotate.c
    +++ b/tools/perf/builtin-annotate.c
    @@ -349,19 +349,12 @@ static void print_summary(const char *filename)
    return;
    }

    - node = rb_first(&root_sym_ext);
    - while (node) {
    - double percent;
    - const char *color;
    - char *path;
    -
    - sym_ext = rb_entry(node, struct sym_ext, node);
    - percent = sym_ext->percent;
    - color = get_percent_color(percent);
    - path = sym_ext->path;
    + rb_for_each_entry(sym_ext, node, &root_sym_ext, node) {
    + double percent = sym_ext->percent;
    + const char *color = get_percent_color(percent);
    + char *path = sym_ext->path;

    color_fprintf(stdout, color, " %7.2f %s", percent, path);
    - node = rb_next(node);
    }
    }

    @@ -428,9 +421,9 @@ static void annotate_sym(struct hist_entry *he)
    static void perf_session__find_annotations(struct perf_session *self)
    {
    struct rb_node *nd;
    + struct hist_entry *he;

    - for (nd = rb_first(&self->hists); nd; nd = rb_next(nd)) {
    - struct hist_entry *he = rb_entry(nd, struct hist_entry, rb_node);
    + rb_for_each_entry(he, nd, &self->hists, rb_node) {
    struct sym_priv *priv;

    if (he->sym == NULL)
    diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
    index 924bfb7..48a1e61 100644
    --- a/tools/perf/builtin-diff.c
    +++ b/tools/perf/builtin-diff.c
    @@ -143,11 +143,10 @@ static void perf_session__match_hists(struct perf_session *old_session,
    struct perf_session *new_session)
    {
    struct rb_node *nd;
    + struct hist_entry *pos;

    - for (nd = rb_first(&new_session->hists); nd; nd = rb_next(nd)) {
    - struct hist_entry *pos = rb_entry(nd, struct hist_entry, rb_node);
    + rb_for_each_entry(pos, nd, &new_session->hists, rb_node)
    pos->pair = perf_session__find_hist_entry(old_session, pos);
    - }
    }

    static int __cmd_diff(void)
    diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c
    index 88c570c..2d2990d 100644
    --- a/tools/perf/builtin-kmem.c
    +++ b/tools/perf/builtin-kmem.c
    @@ -354,21 +354,21 @@ static void __print_result(struct rb_root *root, struct perf_session *session,
    int n_lines, int is_caller)
    {
    struct rb_node *next;
    + struct alloc_stat *data;

    printf("%.102s\n", graph_dotted_line);
    printf(" %-34s |", is_caller ? "Callsite": "Alloc Ptr");
    printf(" Total_alloc/Per | Total_req/Per | Hit | Ping-pong | Frag\n");
    printf("%.102s\n", graph_dotted_line);

    - next = rb_first(root);
    -
    - while (next && n_lines--) {
    - struct alloc_stat *data = rb_entry(next, struct alloc_stat,
    - node);
    + rb_for_each_entry(data, next, root, node) {
    struct symbol *sym = NULL;
    char buf[BUFSIZ];
    u64 addr;

    + if (n_lines--)
    + break;
    +
    if (is_caller) {
    addr = data->call_site;
    if (!raw_ip)
    @@ -391,8 +391,6 @@ static void __print_result(struct rb_root *root, struct perf_session *session,
    (unsigned long)data->hit,
    (unsigned long)data->pingpong,
    fragmentation(data->bytes_req, data->bytes_alloc));
    -
    - next = rb_next(next);
    }

    if (n_lines == -1)
    diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
    index 702322f..88be245 100644
    --- a/tools/perf/builtin-sched.c
    +++ b/tools/perf/builtin-sched.c
    @@ -1706,6 +1706,7 @@ static void print_bad_events(void)
    static void __cmd_lat(void)
    {
    struct rb_node *next;
    + struct work_atoms *work_list;

    setup_pager();
    read_events();
    @@ -1715,15 +1716,8 @@ static void __cmd_lat(void)
    printf(" Task | Runtime ms | Switches | Average delay ms | Maximum delay ms | Maximum delay at |\n");
    printf(" ---------------------------------------------------------------------------------------------------------------\n");

    - next = rb_first(&sorted_atom_root);
    -
    - while (next) {
    - struct work_atoms *work_list;
    -
    - work_list = rb_entry(next, struct work_atoms, node);
    + rb_for_each_entry(work_list, next, &sorted_atom_root, node)
    output_lat_thread(work_list);
    - next = rb_next(next);
    - }

    printf(" -----------------------------------------------------------------------------------------\n");
    printf(" TOTAL: |%11.3f ms |%9Ld |\n",
    diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
    index ddc584b..8f0c837 100644
    --- a/tools/perf/builtin-top.c
    +++ b/tools/perf/builtin-top.c
    @@ -532,8 +532,7 @@ static void print_sym_table(void)
    /*
    * Find the longest symbol name that will be displayed
    */
    - for (nd = rb_first(&tmp); nd; nd = rb_next(nd)) {
    - syme = rb_entry(nd, struct sym_entry, rb_node);
    + rb_for_each_entry(syme, nd, &tmp, rb_node) {
    if (++printed > print_entries ||
    (int)syme->snap_count < count_filter)
    continue;
    @@ -567,13 +566,10 @@ static void print_sym_table(void)
    printf(" %-*.*s", dso_width, dso_width, graph_line);
    puts("\n");

    - for (nd = rb_first(&tmp); nd; nd = rb_next(nd)) {
    - struct symbol *sym;
    + rb_for_each_entry(syme, nd, &tmp, rb_node) {
    + struct symbol *sym = sym_entry__symbol(syme);
    double pcnt;

    - syme = rb_entry(nd, struct sym_entry, rb_node);
    - sym = sym_entry__symbol(syme);
    -
    if (++printed > print_entries || (int)syme->snap_count < count_filter)
    continue;

    diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
    index 8e6627e..85b96ea 100644
    --- a/tools/perf/util/symbol.c
    +++ b/tools/perf/util/symbol.c
    @@ -292,11 +292,10 @@ static void symbols__insert_by_name(struct rb_root *self, struct symbol *sym)
    static void symbols__sort_by_name(struct rb_root *self, struct rb_root *source)
    {
    struct rb_node *nd;
    + struct symbol *pos;

    - for (nd = rb_first(source); nd; nd = rb_next(nd)) {
    - struct symbol *pos = rb_entry(nd, struct symbol, rb_node);
    + rb_for_each_entry(pos, nd, source, rb_node)
    symbols__insert_by_name(self, pos);
    - }
    }

    static struct symbol *symbols__find_by_name(struct rb_root *self, const char *name)
    @@ -371,14 +370,13 @@ size_t dso__fprintf_buildid(struct dso *self, FILE *fp)
    size_t dso__fprintf(struct dso *self, enum map_type type, FILE *fp)
    {
    struct rb_node *nd;
    + struct symbol *pos;
    size_t ret = fprintf(fp, "dso: %s (", self->short_name);

    ret += dso__fprintf_buildid(self, fp);
    ret += fprintf(fp, ")\n");
    - for (nd = rb_first(&self->symbols[type]); nd; nd = rb_next(nd)) {
    - struct symbol *pos = rb_entry(nd, struct symbol, rb_node);
    + rb_for_each_entry(pos, nd, &self->symbols[type], rb_node)
    ret += symbol__fprintf(pos, fp);
    - }

    return ret;
    }
    @@ -1339,13 +1337,11 @@ struct map *map_groups__find_by_name(struct map_groups *self,
    enum map_type type, const char *name)
    {
    struct rb_node *nd;
    + struct map *map;

    - for (nd = rb_first(&self->maps[type]); nd; nd = rb_next(nd)) {
    - struct map *map = rb_entry(nd, struct map, rb_node);
    -
    + rb_for_each_entry(map, nd, &self->maps[type], rb_node)
    if (map->dso && strcmp(map->dso->name, name) == 0)
    return map;
    - }

    return NULL;
    }
    --
    1.6.2.5
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2010-01-07 23:03    [W:0.033 / U:92.220 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site