The following commit has been merged into the perf/core branch of tip:

Commit-ID:     871f9f599db8d9d2387c0717e712af405290edea
Gitweb:        
https://git.kernel.org/tip/871f9f599db8d9d2387c0717e712af405290edea
Author:        Jiri Olsa <jo...@kernel.org>
AuthorDate:    Thu, 02 Apr 2020 02:03:35 +05:30
Committer:     Arnaldo Carvalho de Melo <a...@redhat.com>
CommitterDate: Thu, 16 Apr 2020 12:19:13 -03:00

perf expr: Add expr_scanner_ctx object

Add the 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 <jo...@kernel.org>
Cc: Alexander Shishkin <alexander.shish...@linux.intel.com>
Cc: Andi Kleen <a...@linux.intel.com>
Cc: Anju T Sudhakar <a...@linux.vnet.ibm.com>
Cc: Benjamin Herrenschmidt <b...@kernel.crashing.org>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
Cc: Jin Yao <yao....@linux.intel.com>
Cc: Joe Mario <jma...@redhat.com>
Cc: Kajol Jain <kj...@linux.ibm.com>
Cc: Kan Liang <kan.li...@linux.intel.com>
Cc: Madhavan Srinivasan <ma...@linux.vnet.ibm.com>
Cc: Mamatha Inamdar <mamat...@linux.vnet.ibm.com>
Cc: Mark Rutland <mark.rutl...@arm.com>
Cc: Michael Ellerman <m...@ellerman.id.au>
Cc: Michael Petlan <mpet...@redhat.com>
Cc: Namhyung Kim <namhy...@kernel.org>
Cc: Paul Mackerras <pau...@ozlabs.org>
Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Ravi Bangoria <ravi.bango...@linux.ibm.com>
Cc: Sukadev Bhattiprolu <suka...@linux.vnet.ibm.com>
Cc: Thomas Gleixner <t...@linutronix.de>
Cc: linuxppc-dev@lists.ozlabs.org
Link: http://lore.kernel.org/lkml/20200401203340.31402-3-kj...@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com>
---
 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 c8ccc54..c3382d5 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 b9e53f2..0938ad1 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 eaad292..2582c24 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;
                }
        }

Reply via email to