linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ian Rogers <irogers@google.com>
To: kajoljain <kjain@linux.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
	Kan Liang <kan.liang@linux.intel.com>,
	Andi Kleen <ak@linux.intel.com>,
	Haiyan Song <haiyanx.song@intel.com>,
	Jin Yao <yao.jin@linux.intel.com>,
	Song Liu <songliubraving@fb.com>,
	Ravi Bangoria <ravi.bangoria@linux.ibm.com>,
	John Garry <john.garry@huawei.com>, Leo Yan <leo.yan@linaro.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Paul Clarke <pc@us.ibm.com>, LKML <linux-kernel@vger.kernel.org>,
	linux-perf-users <linux-perf-users@vger.kernel.org>,
	Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH v2 06/11] perf expr: parse numbers as doubles
Date: Mon, 27 Apr 2020 11:03:13 -0700	[thread overview]
Message-ID: <CAP-5=fUWtQBBNqyr=xhKUO+jHxq=04SrBYD2Yh6QiH55BvtEWw@mail.gmail.com> (raw)
In-Reply-To: <0cee674e-4084-07cb-1954-05dafc371648@linux.ibm.com>

On Mon, Apr 27, 2020 at 4:12 AM kajoljain <kjain@linux.ibm.com> wrote:
>
> On 4/23/20 3:34 AM, Ian Rogers wrote:
> > This is expected in expr.y and metrics use floating point values such as
> > x86 broadwell IFetch_Line_Utilization.
> >
> > Fixes: 26226a97724d (perf expr: Move expr lexer to flex)
> > Signed-off-by: Ian Rogers <irogers@google.com>
> > ---
> >  tools/perf/util/expr.l | 14 +++++++-------
> >  1 file changed, 7 insertions(+), 7 deletions(-)
> >
> > diff --git a/tools/perf/util/expr.l b/tools/perf/util/expr.l
> > index 95bcf3629edf..0efda2ce2766 100644
> > --- a/tools/perf/util/expr.l
> > +++ b/tools/perf/util/expr.l
> > @@ -10,12 +10,12 @@
> >  char *expr_get_text(yyscan_t yyscanner);
> >  YYSTYPE *expr_get_lval(yyscan_t yyscanner);
> >
> > -static int __value(YYSTYPE *yylval, char *str, int base, int token)
> > +static double __value(YYSTYPE *yylval, char *str, int token)
> >  {
> > -     u64 num;
> > +     double num;
> >
> >       errno = 0;
> > -     num = strtoull(str, NULL, base);
> > +     num = strtod(str, NULL);
> >       if (errno)
> >               return EXPR_ERROR;
> >
> > @@ -23,12 +23,12 @@ static int __value(YYSTYPE *yylval, char *str, int base, int token)
> >       return token;
> >  }
> >
> > -static int value(yyscan_t scanner, int base)
> > +static int value(yyscan_t scanner)
> >  {
> >       YYSTYPE *yylval = expr_get_lval(scanner);
> >       char *text = expr_get_text(scanner);
> >
> > -     return __value(yylval, text, base, NUMBER);
> > +     return __value(yylval, text, NUMBER);
> >  }
> >
> >  /*
> > @@ -68,7 +68,7 @@ static int str(yyscan_t scanner, int token)
> >  }
> >  %}
> >
> > -number               [0-9]+
> > +number               [0-9]*\.?[0-9]+
> >
>
> Hi Ian,
>     In this patch I saw the parsing of expression with '+number         [0-9]*\.?[0-9]+'
> Could you please explain why '?' is introduced here, so that I can be sure that this is
> not conflicting with my change to add '?'

Hi Kajol,
the '?' here is part of the regular expression. Basically it is saying
that a number is a possible set of integers possibly followed by a '.'
and then 1 or more integers. The expression comes from having seen
Intel's metrics are of the form '.1234' in some of their topdown
spreadsheets, so we need to be able to handle cases like '1.2', '123'
and '.1234'. Having looked at your patch I don't believe it
interferes.

> In this patch : https://lkml.org/lkml/2020/4/1/1427
> I have used '?' symbol as part of metric expression in order to replace '?' with runtime
> parameter.

Interesting, I'll follow up with comments on that e-mail.

Thanks!
Ian

> Thanks,
> Kajol Jain
>
>
> >  sch          [-,=]
> >  spec         \\{sch}
> > @@ -92,7 +92,7 @@ min         { return MIN; }
> >  if           { return IF; }
> >  else         { return ELSE; }
> >  #smt_on              { return SMT_ON; }
> > -{number}     { return value(yyscanner, 10); }
> > +{number}     { return value(yyscanner); }
> >  {symbol}     { return str(yyscanner, ID); }
> >  "|"          { return '|'; }
> >  "^"          { return '^'; }
> >

  reply	other threads:[~2020-04-27 18:03 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-22 22:04 [PATCH v2 00/11] perf metric fixes and test Ian Rogers
2020-04-22 22:04 ` [PATCH v2 01/11] perf expr: unlimited escaped characters in a symbol Ian Rogers
2020-04-23 11:29   ` Jiri Olsa
2020-04-27  9:31     ` kajoljain
2020-04-22 22:04 ` [PATCH v2 02/11] perf metrics: fix parse errors in cascade lake metrics Ian Rogers
2020-04-22 22:04 ` [PATCH v2 03/11] perf metrics: fix parse errors in skylake metrics Ian Rogers
2020-04-22 22:04 ` [PATCH v2 04/11] perf expr: allow ',' to be an other token Ian Rogers
2020-04-23 11:29   ` Jiri Olsa
2020-04-22 22:04 ` [PATCH v2 05/11] perf expr: increase max other Ian Rogers
2020-04-23 11:29   ` Jiri Olsa
2020-04-23 14:23     ` Ian Rogers
2020-05-06 22:52       ` Ian Rogers
2020-04-22 22:04 ` [PATCH v2 06/11] perf expr: parse numbers as doubles Ian Rogers
2020-04-23 11:29   ` Jiri Olsa
2020-04-27 11:11   ` kajoljain
2020-04-27 18:03     ` Ian Rogers [this message]
2020-04-28  6:35   ` kajoljain
2020-04-22 22:04 ` [PATCH v2 07/11] perf expr: debug lex if debugging yacc Ian Rogers
2020-04-22 22:04 ` [PATCH v2 08/11] perf metrics: fix parse errors in power8 metrics Ian Rogers
2020-04-22 22:31   ` Paul Clarke
2020-04-22 22:46     ` Ian Rogers
2020-04-22 22:04 ` [PATCH v2 09/11] perf metrics: fix parse errors in power9 metrics Ian Rogers
2020-04-22 22:31   ` Paul Clarke
2020-04-22 22:04 ` [PATCH v2 10/11] perf expr: print a debug message for division by zero Ian Rogers
2020-04-23 11:28   ` Jiri Olsa
2020-04-23 14:16     ` Ian Rogers
2020-04-22 22:04 ` [PATCH v2 11/11] perf test: add expr test for pmu metrics Ian Rogers
2020-04-23 11:28   ` Jiri Olsa
2020-04-23 14:22     ` Ian Rogers
2020-04-23 15:11       ` John Garry
2020-04-23 16:21         ` Ian Rogers
2020-04-23 11:28 ` [PATCH v2 00/11] perf metric fixes and test Jiri Olsa
2020-04-23 13:44   ` Jin, Yao
2020-04-23 14:02     ` Jiri Olsa
2020-04-23 14:31       ` Ian Rogers
2020-04-24  2:46         ` Jin, Yao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAP-5=fUWtQBBNqyr=xhKUO+jHxq=04SrBYD2Yh6QiH55BvtEWw@mail.gmail.com' \
    --to=irogers@google.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=eranian@google.com \
    --cc=haiyanx.song@intel.com \
    --cc=john.garry@huawei.com \
    --cc=jolsa@redhat.com \
    --cc=kan.liang@linux.intel.com \
    --cc=kjain@linux.ibm.com \
    --cc=leo.yan@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=pc@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=ravi.bangoria@linux.ibm.com \
    --cc=songliubraving@fb.com \
    --cc=yao.jin@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).