lkml.org 
[lkml]   [2020]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 02/11] perf expr: Add expr_scanner_ctx object
    Date
    From: Jiri Olsa <jolsa@kernel.org>

    Adding expr_scanner_ctx object to hold user data
    for the expr scanner. Currently it holds only
    start_token, Kajol Jain will use it to hold 24x7
    runtime param.

    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    ---
    tools/perf/util/expr.c | 6 ++++--
    tools/perf/util/expr.h | 4 ++++
    tools/perf/util/expr.l | 10 +++++-----
    3 files changed, 13 insertions(+), 7 deletions(-)

    diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c
    index c8ccc548a585..c3382d58cf40 100644
    --- a/tools/perf/util/expr.c
    +++ b/tools/perf/util/expr.c
    @@ -3,7 +3,6 @@
    #include <assert.h>
    #include "expr.h"
    #include "expr-bison.h"
    -#define YY_EXTRA_TYPE int
    #include "expr-flex.h"

    #ifdef PARSER_DEBUG
    @@ -30,11 +29,14 @@ static int
    __expr__parse(double *val, struct expr_parse_ctx *ctx, const char *expr,
    int start)
    {
    + struct expr_scanner_ctx scanner_ctx = {
    + .start_token = start,
    + };
    YY_BUFFER_STATE buffer;
    void *scanner;
    int ret;

    - ret = expr_lex_init_extra(start, &scanner);
    + ret = expr_lex_init_extra(&scanner_ctx, &scanner);
    if (ret)
    return ret;

    diff --git a/tools/perf/util/expr.h b/tools/perf/util/expr.h
    index b9e53f2b5844..0938ad166ece 100644
    --- a/tools/perf/util/expr.h
    +++ b/tools/perf/util/expr.h
    @@ -15,6 +15,10 @@ struct expr_parse_ctx {
    struct expr_parse_id ids[MAX_PARSE_ID];
    };

    +struct expr_scanner_ctx {
    + int start_token;
    +};
    +
    void expr__ctx_init(struct expr_parse_ctx *ctx);
    void expr__add_id(struct expr_parse_ctx *ctx, const char *id, double val);
    int expr__parse(double *final_val, struct expr_parse_ctx *ctx, const char *expr);
    diff --git a/tools/perf/util/expr.l b/tools/perf/util/expr.l
    index eaad29243c23..2582c2464938 100644
    --- a/tools/perf/util/expr.l
    +++ b/tools/perf/util/expr.l
    @@ -76,13 +76,13 @@ sym [0-9a-zA-Z_\.:@]+
    symbol {spec}*{sym}*{spec}*{sym}*

    %%
    - {
    - int start_token;
    + struct expr_scanner_ctx *sctx = expr_get_extra(yyscanner);

    - start_token = expr_get_extra(yyscanner);
    + {
    + int start_token = sctx->start_token;

    - if (start_token) {
    - expr_set_extra(NULL, yyscanner);
    + if (sctx->start_token) {
    + sctx->start_token = 0;
    return start_token;
    }
    }
    --
    2.18.1
    \
     
     \ /
      Last update: 2020-03-17 07:25    [W:18.189 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site