From: Wang Nan <wangnan0@huawei.com>
To: <acme@kernel.org>, <jolsa@kernel.org>
Cc: <linux-kernel@vger.kernel.org>, Wang Nan <wangnan0@huawei.com>,
"Arnaldo Carvalho de Melo" <acme@redhat.com>,
Li Zefan <lizefan@huawei.com>, <pi3orama@163.com>
Subject: [RFC PATCH 2/5] perf trace: Improve error message when receive non-tracepoint events
Date: Thu, 25 Feb 2016 08:51:52 +0000 [thread overview]
Message-ID: <1456390315-127562-3-git-send-email-wangnan0@huawei.com> (raw)
In-Reply-To: <1456390315-127562-1-git-send-email-wangnan0@huawei.com>
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 <wangnan0@huawei.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Li Zefan <lizefan@huawei.com>
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
next prev parent reply other threads:[~2016-02-25 8:54 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-25 8:51 [RFC PATCH 0/5] perf tools: Decode bpf output in 'perf trace' Wang Nan
2016-02-25 8:51 ` [RFC PATCH 1/5] perf trace: Apply config options in '.perfconfig' Wang Nan
2016-02-25 12:50 ` Arnaldo Carvalho de Melo
2016-02-25 8:51 ` Wang Nan [this message]
2016-02-25 8:51 ` [RFC PATCH 3/5] perf tools: Only set filter for tracepoints events Wang Nan
2016-02-25 8:51 ` [RFC PATCH 4/5] perf trace: Call bpf__apply_obj_config in 'perf trace' Wang Nan
2016-02-25 8:51 ` [RFC PATCH 5/5] perf trace: Print content of bpf-output event Wang Nan
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=1456390315-127562-3-git-send-email-wangnan0@huawei.com \
--to=wangnan0@huawei.com \
--cc=acme@kernel.org \
--cc=acme@redhat.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=pi3orama@163.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox