[PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-18 Thread Andi Kleen
From: Andi Kleen 

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
v3: Use perf list json
v4: Use perf list vendor
Signed-off-by: Andi Kleen 
---
 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..72391ff68f66 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 vendor | tr 
a-z A-Z) ;;
+   *) evts=$($cmd list --raw-dump) ;;
+   esac
__perfcomp_colon "$evts" "$cur"
else
# List subcommands for perf commands
-- 
2.5.5



[PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-18 Thread Andi Kleen
From: Andi Kleen 

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
v3: Use perf list json
v4: Use perf list vendor
Signed-off-by: Andi Kleen 
---
 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..72391ff68f66 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 vendor | tr 
a-z A-Z) ;;
+   *) evts=$($cmd list --raw-dump) ;;
+   esac
__perfcomp_colon "$evts" "$cur"
else
# List subcommands for perf commands
-- 
2.5.5



Re: [PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-06 Thread Arnaldo Carvalho de Melo
Em Thu, Oct 06, 2016 at 12:23:26PM -0700, Andi Kleen escreveu:
> From: Andi Kleen 
> 
> 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.

Thanks, applied.
 
> v2: Use locale aware check for upper case
> v3: Use perf list json
> Signed-off-by: Andi Kleen 
> ---
>  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..3b5a258a4b7b 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 json | tr a-z 
> A-Z) ;;
> + *) evts=$($cmd list --raw-dump) ;;
> + esac
>   __perfcomp_colon "$evts" "$cur"
>   else
>   # List subcommands for perf commands
> -- 
> 2.5.5


Re: [PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-06 Thread Arnaldo Carvalho de Melo
Em Thu, Oct 06, 2016 at 12:23:26PM -0700, Andi Kleen escreveu:
> From: Andi Kleen 
> 
> 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.

Thanks, applied.
 
> v2: Use locale aware check for upper case
> v3: Use perf list json
> Signed-off-by: Andi Kleen 
> ---
>  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..3b5a258a4b7b 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 json | tr a-z 
> A-Z) ;;
> + *) evts=$($cmd list --raw-dump) ;;
> + esac
>   __perfcomp_colon "$evts" "$cur"
>   else
>   # List subcommands for perf commands
> -- 
> 2.5.5


[PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-06 Thread Andi Kleen
From: Andi Kleen 

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
v3: Use perf list json
Signed-off-by: Andi Kleen 
---
 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..3b5a258a4b7b 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 json | tr a-z 
A-Z) ;;
+   *) evts=$($cmd list --raw-dump) ;;
+   esac
__perfcomp_colon "$evts" "$cur"
else
# List subcommands for perf commands
-- 
2.5.5



[PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-06 Thread Andi Kleen
From: Andi Kleen 

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
v3: Use perf list json
Signed-off-by: Andi Kleen 
---
 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..3b5a258a4b7b 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 json | tr a-z 
A-Z) ;;
+   *) evts=$($cmd list --raw-dump) ;;
+   esac
__perfcomp_colon "$evts" "$cur"
else
# List subcommands for perf commands
-- 
2.5.5



Re: [PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-05 Thread Arnaldo Carvalho de Melo
Em Wed, Oct 05, 2016 at 03:18:05PM -0700, Andi Kleen escreveu:
> > [root@jouet ~]# bash --version
> > GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu)
> > Copyright (C) 2013 Free Software Foundation, Inc.
> > License GPLv3+: GNU GPL version 3 or later 
> > 
> > 
> > This is free software; you are free to change and redistribute it.
> > There is NO WARRANTY, to the extent permitted by law.
> > [root@jouet ~]# 
> 
> Probably a locale issue. Let me send a new patch.

[root@jouet ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
[root@jouet ~]#

- Arnaldo


Re: [PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-05 Thread Arnaldo Carvalho de Melo
Em Wed, Oct 05, 2016 at 03:18:05PM -0700, Andi Kleen escreveu:
> > [root@jouet ~]# bash --version
> > GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu)
> > Copyright (C) 2013 Free Software Foundation, Inc.
> > License GPLv3+: GNU GPL version 3 or later 
> > 
> > 
> > This is free software; you are free to change and redistribute it.
> > There is NO WARRANTY, to the extent permitted by law.
> > [root@jouet ~]# 
> 
> Probably a locale issue. Let me send a new patch.

[root@jouet ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
[root@jouet ~]#

- Arnaldo


Re: [PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-05 Thread Andi Kleen
> [root@jouet ~]# bash --version
> GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu)
> Copyright (C) 2013 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later 
> 
> This is free software; you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> [root@jouet ~]# 

Probably a locale issue. Let me send a new patch.

-Andi


Re: [PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-05 Thread Andi Kleen
> [root@jouet ~]# bash --version
> GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu)
> Copyright (C) 2013 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later 
> 
> This is free software; you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> [root@jouet ~]# 

Probably a locale issue. Let me send a new patch.

-Andi


Re: [PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-05 Thread Arnaldo Carvalho de Melo
Em Wed, Oct 05, 2016 at 12:47:11PM -0700, Andi Kleen escreveu:
> From: Andi Kleen 
> 
> 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.

Humm, I just tried without your patch:

[root@jouet ~]# . ~acme/git/linux/tools/perf/perf-completion.sh 
[root@jouet ~]# perf stat -e cpu_clk_
cpu_clk_thread_unhalted.one_thread_active  cpu_clk_unhalted.ref_tsc 
  cpu_clk_unhalted.thread_any
cpu_clk_thread_unhalted.ref_xclk   cpu_clk_unhalted.ref_xclk
  cpu_clk_unhalted.thread_p
cpu_clk_thread_unhalted.ref_xclk_any   cpu_clk_unhalted.ref_xclk_any
  cpu_clk_unhalted.thread_p_any
cpu_clk_unhalted.one_thread_active cpu_clk_unhalted.thread  
  
[root@jouet ~]# perf stat -e cpu_clk_

And then with it:

[root@jouet ~]# perf stat -e cpu

And I get just beeps for the common case, i.e. lowercase, then if I try with
uppercase it works:

[root@jouet ~]# perf stat -e CPU_CLK_
CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE  CPU_CLK_UNHALTED.REF_TSC 
  CPU_CLK_UNHALTED.THREAD_ANY
CPU_CLK_THREAD_UNHALTED.REF_XCLK   CPU_CLK_UNHALTED.REF_XCLK
  CPU_CLK_UNHALTED.THREAD_P
CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY   CPU_CLK_UNHALTED.REF_XCLK_ANY
  CPU_CLK_UNHALTED.THREAD_P_ANY
CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE CPU_CLK_UNHALTED.THREAD  
  
[root@jouet ~]#

[root@jouet ~]# bash --version
GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@jouet ~]# 


 
> Signed-off-by: Andi Kleen 
> ---
>  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..48e7a01b5c91 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
> + [A-Z]*) 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


Re: [PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-05 Thread Arnaldo Carvalho de Melo
Em Wed, Oct 05, 2016 at 12:47:11PM -0700, Andi Kleen escreveu:
> From: Andi Kleen 
> 
> 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.

Humm, I just tried without your patch:

[root@jouet ~]# . ~acme/git/linux/tools/perf/perf-completion.sh 
[root@jouet ~]# perf stat -e cpu_clk_
cpu_clk_thread_unhalted.one_thread_active  cpu_clk_unhalted.ref_tsc 
  cpu_clk_unhalted.thread_any
cpu_clk_thread_unhalted.ref_xclk   cpu_clk_unhalted.ref_xclk
  cpu_clk_unhalted.thread_p
cpu_clk_thread_unhalted.ref_xclk_any   cpu_clk_unhalted.ref_xclk_any
  cpu_clk_unhalted.thread_p_any
cpu_clk_unhalted.one_thread_active cpu_clk_unhalted.thread  
  
[root@jouet ~]# perf stat -e cpu_clk_

And then with it:

[root@jouet ~]# perf stat -e cpu

And I get just beeps for the common case, i.e. lowercase, then if I try with
uppercase it works:

[root@jouet ~]# perf stat -e CPU_CLK_
CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE  CPU_CLK_UNHALTED.REF_TSC 
  CPU_CLK_UNHALTED.THREAD_ANY
CPU_CLK_THREAD_UNHALTED.REF_XCLK   CPU_CLK_UNHALTED.REF_XCLK
  CPU_CLK_UNHALTED.THREAD_P
CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY   CPU_CLK_UNHALTED.REF_XCLK_ANY
  CPU_CLK_UNHALTED.THREAD_P_ANY
CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE CPU_CLK_UNHALTED.THREAD  
  
[root@jouet ~]#

[root@jouet ~]# bash --version
GNU bash, version 4.3.42(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@jouet ~]# 


 
> Signed-off-by: Andi Kleen 
> ---
>  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..48e7a01b5c91 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
> + [A-Z]*) 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


[PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-05 Thread Andi Kleen
From: Andi Kleen 

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.

Signed-off-by: Andi Kleen 
---
 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..48e7a01b5c91 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
+   [A-Z]*) 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



[PATCH 2/3] perf, tools: Handle completion of upper case events

2016-10-05 Thread Andi Kleen
From: Andi Kleen 

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.

Signed-off-by: Andi Kleen 
---
 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..48e7a01b5c91 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
+   [A-Z]*) 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