From patchwork Thu Feb 25 08:51:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Nan X-Patchwork-Id: 62861 Delivered-To: patch@linaro.org Received: by 10.112.199.169 with SMTP id jl9csp48159lbc; Thu, 25 Feb 2016 00:54:50 -0800 (PST) X-Received: by 10.66.171.169 with SMTP id av9mr44815548pac.36.1456390490497; Thu, 25 Feb 2016 00:54:50 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id lm9si11115158pab.142.2016.02.25.00.54.50; Thu, 25 Feb 2016 00:54:50 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760264AbcBYIye (ORCPT + 30 others); Thu, 25 Feb 2016 03:54:34 -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 Received: from 172.24.1.49 (EHLO szxeml426-hub.china.huawei.com) ([172.24.1.49]) by szxrg03-dlp.huawei.com (MOS 4.4.3-GA FastPath queued) with ESMTP id BWO98094; Thu, 25 Feb 2016 16:52:13 +0800 (CST) Received: from linux-4hy3.site (10.107.193.248) by szxeml426-hub.china.huawei.com (10.82.67.181) with Microsoft SMTP Server id 14.3.235.1; Thu, 25 Feb 2016 16:52:02 +0800 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 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 Precedence: bulk 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(+) -- 1.8.3.4 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;