lkml.org 
[lkml]   [2016]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] perf probe: Add helper function to check if probe with variable
    Commit-ID:  b3f33f930606a55b547ac4ef5a32df2c23a44ec1
    Gitweb: http://git.kernel.org/tip/b3f33f930606a55b547ac4ef5a32df2c23a44ec1
    Author: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    AuthorDate: Wed, 3 Aug 2016 14:28:44 +0530
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Thu, 1 Sep 2016 12:42:25 -0300

    perf probe: Add helper function to check if probe with variable

    Introduce helper function instead of inline code and replace hardcoded
    strings "$vars" and "$params" with their corresponding macros.

    perf_probe_with_var() is not declared as static since it will be called
    from different file in subsequent patch.

    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
    Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1470214725-5023-1-git-send-email-ravi.bangoria@linux.vnet.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/util/probe-event.c | 22 +++++++++++++++-------
    tools/perf/util/probe-event.h | 2 ++
    2 files changed, 17 insertions(+), 7 deletions(-)

    diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
    index 8a1e9e6..a543e9c 100644
    --- a/tools/perf/util/probe-event.c
    +++ b/tools/perf/util/probe-event.c
    @@ -1618,19 +1618,27 @@ out:
    return ret;
    }

    +/* Returns true if *any* ARG is either C variable, $params or $vars. */
    +bool perf_probe_with_var(struct perf_probe_event *pev)
    +{
    + int i = 0;
    +
    + for (i = 0; i < pev->nargs; i++)
    + if (is_c_varname(pev->args[i].var) ||
    + !strcmp(pev->args[i].var, PROBE_ARG_PARAMS) ||
    + !strcmp(pev->args[i].var, PROBE_ARG_VARS))
    + return true;
    + return false;
    +}
    +
    /* Return true if this perf_probe_event requires debuginfo */
    bool perf_probe_event_need_dwarf(struct perf_probe_event *pev)
    {
    - int i;
    -
    if (pev->point.file || pev->point.line || pev->point.lazy_line)
    return true;

    - for (i = 0; i < pev->nargs; i++)
    - if (is_c_varname(pev->args[i].var) ||
    - !strcmp(pev->args[i].var, "$params") ||
    - !strcmp(pev->args[i].var, "$vars"))
    - return true;
    + if (perf_probe_with_var(pev))
    + return true;

    return false;
    }
    diff --git a/tools/perf/util/probe-event.h b/tools/perf/util/probe-event.h
    index 6209408..8091d15 100644
    --- a/tools/perf/util/probe-event.h
    +++ b/tools/perf/util/probe-event.h
    @@ -128,6 +128,8 @@ char *synthesize_perf_probe_point(struct perf_probe_point *pp);
    int perf_probe_event__copy(struct perf_probe_event *dst,
    struct perf_probe_event *src);

    +bool perf_probe_with_var(struct perf_probe_event *pev);
    +
    /* Check the perf_probe_event needs debuginfo */
    bool perf_probe_event_need_dwarf(struct perf_probe_event *pev);

    \
     
     \ /
      Last update: 2016-09-17 09:58    [W:6.246 / U:0.280 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site