lkml.org 
[lkml]   [2015]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 09/10] perf hists browser: Simplify zooming code a bit
    Date
    Introduce pstack_peek() and reuse do_zoom_dso/thread() function.

    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    ---
    tools/perf/ui/browsers/hists.c | 18 +++++-------------
    tools/perf/util/pstack.c | 7 +++++++
    tools/perf/util/pstack.h | 1 +
    3 files changed, 13 insertions(+), 13 deletions(-)

    diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
    index 9bd7b38de64c..a0da3f9f0513 100644
    --- a/tools/perf/ui/browsers/hists.c
    +++ b/tools/perf/ui/browsers/hists.c
    @@ -1860,19 +1860,11 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
    goto out_free_stack;
    continue;
    }
    - top = pstack__pop(browser->pstack);
    - if (top == &browser->hists->dso_filter) {
    - perf_hpp__set_elide(HISTC_DSO, false);
    - browser->hists->dso_filter = NULL;
    - hists__filter_by_dso(browser->hists);
    - }
    - if (top == &browser->hists->thread_filter) {
    - perf_hpp__set_elide(HISTC_THREAD, false);
    - thread__zput(browser->hists->thread_filter);
    - hists__filter_by_thread(browser->hists);
    - }
    - ui_helpline__pop();
    - hist_browser__reset(browser);
    + top = pstack__peek(browser->pstack);
    + if (top == &browser->hists->dso_filter)
    + do_zoom_dso(browser, actions);
    + if (top == &browser->hists->thread_filter)
    + do_zoom_thread(browser, actions);
    continue;
    }
    case K_ESC:
    diff --git a/tools/perf/util/pstack.c b/tools/perf/util/pstack.c
    index a126e6cc6e73..b234a6e3d0d4 100644
    --- a/tools/perf/util/pstack.c
    +++ b/tools/perf/util/pstack.c
    @@ -74,3 +74,10 @@ void *pstack__pop(struct pstack *pstack)
    pstack->entries[pstack->top] = NULL;
    return ret;
    }
    +
    +void *pstack__peek(struct pstack *pstack)
    +{
    + if (pstack->top == 0)
    + return NULL;
    + return pstack->entries[pstack->top - 1];
    +}
    diff --git a/tools/perf/util/pstack.h b/tools/perf/util/pstack.h
    index c3cb6584d527..ded7f2e36624 100644
    --- a/tools/perf/util/pstack.h
    +++ b/tools/perf/util/pstack.h
    @@ -10,5 +10,6 @@ bool pstack__empty(const struct pstack *pstack);
    void pstack__remove(struct pstack *pstack, void *key);
    void pstack__push(struct pstack *pstack, void *key);
    void *pstack__pop(struct pstack *pstack);
    +void *pstack__peek(struct pstack *pstack);

    #endif /* _PERF_PSTACK_ */
    --
    2.3.5


    \
     
     \ /
      Last update: 2015-04-22 09:41    [W:2.237 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site