From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Andi Kleen <andi@firstfloor.org>
Cc: linux-kernel@vger.kernel.org, jolsa@kernel.org,
Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>,
Andi Kleen <ak@linux.intel.com>
Subject: Re: [PATCH] perf, tools: Handle completion of upper case events
Date: Wed, 5 Oct 2016 19:46:00 -0300 [thread overview]
Message-ID: <20161005224600.GJ30363@kernel.org> (raw)
In-Reply-To: <1475705988-24213-1-git-send-email-andi@firstfloor.org>
Em Wed, Oct 05, 2016 at 03:19:48PM -0700, Andi Kleen escreveu:
> From: Andi Kleen <ak@linux.intel.com>
>
> Vendor events are often specified in upper case. perf list outputs them
> in lower case. Handle this case in perf-completion.sh so that
> completion on the upper case events still works.
>
> v2: Use locale aware check for upper case
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
Ok, this makes it work, but then:
[root@jouet ~]# perf stat -e CPU-<TAB>
CPU-CLOCK CPU-CYCLES CPU-MIGRATIONS
[root@jouet ~]# perf stat -e CPU-CLOCK usleep 1
event syntax error: 'CPU-CLOCK'
\___ parser error
Run 'perf list' for a list of valid events
Usage: perf stat [<options>] [<command>]
-e, --event <event> event selector. use 'perf list' to list available events
[root@jouet ~]#
It now allows for non-JSON events to be tab completed only to then to
fail when passing it to perf.
We need to uppercase autocomplete only JSON events, that then gets
accepted by perf's event parser, i.e. you need something like:
[[:upper:]]*) evts=$($cmd list --raw-dump JSON | tr a-z A-Z) ;;
Just like we have for other event types, for instance, for
PERF_TYPE_HARDWARE:
[acme@jouet linux]$ perf list --raw hw
branch-instructions branch-misses bus-cycles cache-misses cache-references cpu-cycles instructions ref-cycles
or software:
[acme@jouet linux]$ perf list --raw sw
alignment-faults bpf-output context-switches cpu-clock cpu-migrations dummy emulation-faults major-faults minor-faults page-faults task-clock
[acme@jouet linux]$
That would be a nice fit as all events so far are lowercase, just these vendor
names are upper case.
- Arnaldo
> ---
> tools/perf/perf-completion.sh | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/perf-completion.sh b/tools/perf/perf-completion.sh
> index 3ba80b2359cc..3cb5a800b646 100644
> --- a/tools/perf/perf-completion.sh
> +++ b/tools/perf/perf-completion.sh
> @@ -161,7 +161,11 @@ __perf_main ()
> # List possible events for -e option
> elif [[ $prev == @("-e"|"--event") &&
> $prev_skip_opts == @(record|stat|top) ]]; then
> - evts=$($cmd list --raw-dump)
> + # handle upper case events
> + case "$cur" in
> + [[:upper:]]*) evts=$($cmd list --raw-dump | tr a-z A-Z) ;;
> + *) evts=$($cmd list --raw-dump) ;;
> + esac
> __perfcomp_colon "$evts" "$cur"
> else
> # List subcommands for perf commands
> --
> 2.5.5
prev parent reply other threads:[~2016-10-05 22:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-05 22:19 [PATCH] perf, tools: Handle completion of upper case events Andi Kleen
2016-10-05 22:46 ` Arnaldo Carvalho de Melo [this message]
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=20161005224600.GJ30363@kernel.org \
--to=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=andi@firstfloor.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sukadev@linux.vnet.ibm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.