lkml.org 
[lkml]   [2012]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/12] perf report: Show leader events only when event group is enabled
    Date
    From: Namhyung Kim <namhyung.kim@lge.com>

    Since we have all necessary information in the leader events and
    other members don't, show only leaders.

    Cc: Stephane Eranian <eranian@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    ---
    tools/perf/builtin-report.c | 4 ++++
    tools/perf/ui/browsers/hists.c | 38 ++++++++++++++++++++++++++++++++------
    tools/perf/ui/gtk/browser.c | 4 ++++
    3 files changed, 40 insertions(+), 6 deletions(-)

    diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
    index 46ed9c2ad4ed..6f34a2d6e5a8 100644
    --- a/tools/perf/builtin-report.c
    +++ b/tools/perf/builtin-report.c
    @@ -318,6 +318,10 @@ static int perf_evlist__tty_browse_hists(struct perf_evlist *evlist,
    struct hists *hists = &pos->hists;
    const char *evname = perf_evsel__name(pos);

    + if (symbol_conf.report_group &&
    + !perf_evsel__is_group_leader(pos))
    + continue;
    +
    hists__fprintf_nr_sample_events(hists, evname, stdout);
    hists__fprintf(hists, NULL, false, true, 0, 0, stdout);
    fprintf(stdout, "\n\n");
    diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
    index bdb1b2f9f819..dbd6995609bf 100644
    --- a/tools/perf/ui/browsers/hists.c
    +++ b/tools/perf/ui/browsers/hists.c
    @@ -1567,8 +1567,18 @@ out:
    return key;
    }

    +static bool filter_group_entries(struct ui_browser *self __used, void *entry)
    +{
    + struct perf_evsel *evsel = list_entry(entry, struct perf_evsel, node);
    +
    + if (symbol_conf.report_group && !perf_evsel__is_group_leader(evsel))
    + return true;
    +
    + return false;
    +}
    +
    static int __perf_evlist__tui_browse_hists(struct perf_evlist *evlist,
    - const char *help,
    + int nr_entries, const char *help,
    void(*timer)(void *arg), void *arg,
    int delay_secs)
    {
    @@ -1579,7 +1589,8 @@ static int __perf_evlist__tui_browse_hists(struct perf_evlist *evlist,
    .refresh = ui_browser__list_head_refresh,
    .seek = ui_browser__list_head_seek,
    .write = perf_evsel_menu__write,
    - .nr_entries = evlist->nr_entries,
    + .filter = filter_group_entries,
    + .nr_entries = nr_entries,
    .priv = evlist,
    },
    };
    @@ -1594,7 +1605,7 @@ static int __perf_evlist__tui_browse_hists(struct perf_evlist *evlist,
    menu.b.width = line_len;
    }

    - return perf_evsel_menu__run(&menu, evlist->nr_entries, help, timer,
    + return perf_evsel_menu__run(&menu, nr_entries, help, timer,
    arg, delay_secs);
    }

    @@ -1602,15 +1613,30 @@ int perf_evlist__tui_browse_hists(struct perf_evlist *evlist, const char *help,
    void(*timer)(void *arg), void *arg,
    int delay_secs)
    {
    - if (evlist->nr_entries == 1) {
    + int nr_entries = evlist->nr_entries;
    +
    +single_entry:
    + if (nr_entries == 1) {
    struct perf_evsel *first = list_entry(evlist->entries.next,
    struct perf_evsel, node);
    const char *ev_name = perf_evsel__name(first);
    - return perf_evsel__hists_browse(first, evlist->nr_entries, help,
    + return perf_evsel__hists_browse(first, nr_entries, help,
    ev_name, false, timer, arg,
    delay_secs);
    }

    - return __perf_evlist__tui_browse_hists(evlist, help,
    + if (symbol_conf.report_group) {
    + struct perf_evsel *pos;
    +
    + nr_entries = 0;
    + list_for_each_entry(pos, &evlist->entries, node)
    + if (perf_evsel__is_group_leader(pos))
    + nr_entries++;
    +
    + if (nr_entries == 1)
    + goto single_entry;
    + }
    +
    + return __perf_evlist__tui_browse_hists(evlist, nr_entries, help,
    timer, arg, delay_secs);
    }
    diff --git a/tools/perf/ui/gtk/browser.c b/tools/perf/ui/gtk/browser.c
    index e39c83cd5ac5..cc53a01ba14b 100644
    --- a/tools/perf/ui/gtk/browser.c
    +++ b/tools/perf/ui/gtk/browser.c
    @@ -306,6 +306,10 @@ int perf_evlist__gtk_browse_hists(struct perf_evlist *evlist,
    GtkWidget *scrolled_window;
    GtkWidget *tab_label;

    + if (symbol_conf.report_group &&
    + !perf_evsel__is_group_leader(pos))
    + continue;
    +
    scrolled_window = gtk_scrolled_window_new(NULL, NULL);

    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
    --
    1.7.10.4


    \
     
     \ /
      Last update: 2012-07-24 12:01    [W:0.029 / U:118.352 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site