lkml.org 
[lkml]   [2018]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 4/9] perf tools: Fix pmu events parsing rule
    Em Mon, Apr 23, 2018 at 11:08:18AM +0200, Jiri Olsa escreveu:
    > Currently all the event parsing fails end up
    > in the event_pmu rule, and display misleading
    > help like:
    >
    > $ perf stat -e inst kill
    > event syntax error: 'inst'
    > \___ Cannot find PMU `inst'. Missing kernel support?
    > ...
    >
    > The reason is that the event_pmu is too strong
    > and match also single string. Changing it to
    > force the '/' separators to be part of the rule,
    > and getting the proper error now:
    >
    > $ perf stat -e inst kill
    > event syntax error: 'inst'
    > \___ parser error
    > Run 'perf list' for a list of valid events

    I added a Reported-by: Ingo after checking that that was the case in tha
    private conversation we had, but I think this has to be further
    improved: do we have enough context at this point to change that into:

    $ perf stat -e inst kill
    event syntax error: 'inst'
    \___ unknown event
    Run 'perf list' for a list of valid events

    Instead of the generic "parser error"? That "list of valid events" helps
    tho, but if we're going to say something at that \___ MSG part...

    - Arnaldo

    > ...
    >
    > Link: http://lkml.kernel.org/n/tip-vgf5a8wk0eyayo7omvutwhqo@git.kernel.org
    > Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    > ---
    > tools/perf/util/parse-events.y | 8 ++++----
    > 1 file changed, 4 insertions(+), 4 deletions(-)
    >
    > diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
    > index 7afeb80cc39e..d14464c42714 100644
    > --- a/tools/perf/util/parse-events.y
    > +++ b/tools/perf/util/parse-events.y
    > @@ -224,15 +224,15 @@ event_def: event_pmu |
    > event_bpf_file
    >
    > event_pmu:
    > -PE_NAME opt_event_config
    > +PE_NAME '/' event_config '/'
    > {
    > struct list_head *list, *orig_terms, *terms;
    >
    > - if (parse_events_copy_term_list($2, &orig_terms))
    > + if (parse_events_copy_term_list($3, &orig_terms))
    > YYABORT;
    >
    > ALLOC_LIST(list);
    > - if (parse_events_add_pmu(_parse_state, list, $1, $2, false)) {
    > + if (parse_events_add_pmu(_parse_state, list, $1, $3, false)) {
    > struct perf_pmu *pmu = NULL;
    > int ok = 0;
    > char *pattern;
    > @@ -262,7 +262,7 @@ PE_NAME opt_event_config
    > if (!ok)
    > YYABORT;
    > }
    > - parse_events_terms__delete($2);
    > + parse_events_terms__delete($3);
    > parse_events_terms__delete(orig_terms);
    > $$ = list;
    > }
    > --
    > 2.13.6

    \
     
     \ /
      Last update: 2018-04-23 16:21    [W:4.176 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site