From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760263AbcBYIyd (ORCPT ); Thu, 25 Feb 2016 03:54:33 -0500 Received: from szxga03-in.huawei.com ([119.145.14.66]:40212 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759232AbcBYIyb (ORCPT ); Thu, 25 Feb 2016 03:54:31 -0500 From: Wang Nan To: , CC: , Wang Nan , "Arnaldo Carvalho de Melo" , Li Zefan , Subject: [RFC PATCH 2/5] perf trace: Improve error message when receive non-tracepoint events Date: Thu, 25 Feb 2016 08:51:52 +0000 Message-ID: <1456390315-127562-3-git-send-email-wangnan0@huawei.com> X-Mailer: git-send-email 1.8.3.4 In-Reply-To: <1456390315-127562-1-git-send-email-wangnan0@huawei.com> References: <1456390315-127562-1-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.107.193.248] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020205.56CEC0BE.002E,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 8e4b98dcdb35c0dd32e769f60f71224c Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Before this patch, strange error message is provided if passed a non-tracepoint event to 'perf trace': # perf trace -a --ev cycles sleep 1 Failed to set filter "common_pid != 27500" on event cycles with 22 (Invalid argument) This is because 'perf trace' accepts all valid event during cmdline parsing, but since it need setting filter to events, actually user can pass tracepoints with '--ev' only. This patch validate evlist, report error earlier: # ./perf trace -a --ev cycles sleep 1 Only support tracepoint events! Signed-off-by: Wang Nan Cc: Arnaldo Carvalho de Melo Cc: Jiri Olsa Cc: Li Zefan Cc: pi3orama@163.com --- tools/perf/builtin-trace.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 6c52f3c..2deb3f0 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -2525,6 +2525,17 @@ out_enomem: goto out; } +static int validate_evlist(struct perf_evlist *evlist) +{ + struct perf_evsel *evsel; + + evlist__for_each(evlist, evsel) { + if (evsel->attr.type != PERF_TYPE_TRACEPOINT) + return -EINVAL; + } + return 0; +} + static int trace__run(struct trace *trace, int argc, const char **argv) { struct perf_evlist *evlist = trace->evlist; @@ -3113,6 +3124,11 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused) argc = parse_options_subcommand(argc, argv, trace_options, trace_subcommands, trace_usage, PARSE_OPT_STOP_AT_NON_OPTION); + if (validate_evlist(trace.evlist)) { + pr_err("Only support tracepoint events!\n"); + return -EINVAL; + } + if (trace.trace_pgfaults) { trace.opts.sample_address = true; trace.opts.sample_time = true; -- 1.8.3.4