Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755199AbcJEVvM (ORCPT ); Wed, 5 Oct 2016 17:51:12 -0400 Received: from mail.kernel.org ([198.145.29.136]:48112 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751128AbcJEVvL (ORCPT ); Wed, 5 Oct 2016 17:51:11 -0400 Date: Wed, 5 Oct 2016 18:50:59 -0300 From: Arnaldo Carvalho de Melo To: Andi Kleen Cc: sukadev@linux.vnet.ibm.com, jolsa@redhat.com, linux-kernel@vger.kernel.org, Andi Kleen Subject: Re: [PATCH 2/3] perf, tools: Handle completion of upper case events Message-ID: <20161005215059.GG30363@kernel.org> References: <1475696832-9188-1-git-send-email-andi@firstfloor.org> <1475696832-9188-3-git-send-email-andi@firstfloor.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1475696832-9188-3-git-send-email-andi@firstfloor.org> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.7.0 (2016-08-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2734 Lines: 66 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