From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
linux-kernel@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Naohiro Aota <naohiro.aota@hgst.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Wang Nan <wangnan0@huawei.com>,
Hemant Kumar <hemant@linux.vnet.ibm.com>
Subject: Re: [PATCH 3/6] perf probe: Add supported type casting of running kernel
Date: Tue, 23 Aug 2016 16:45:45 -0300 [thread overview]
Message-ID: <20160823194545.GA14305@kernel.org> (raw)
In-Reply-To: <147151071172.12957.3340095690753291085.stgit@devbox>
Em Thu, Aug 18, 2016 at 05:58:31PM +0900, Masami Hiramatsu escreveu:
> Add a checking routine what types are supported by the
> running kernel by finding the pattern in
> <debugfs>/tracing/README.
Fails in several distros, I'm fixing it:
# time dm
1 67.863552726 alpine:3.4: Ok
2 26.710853767 android-ndk:r12b-arm: Ok
3 72.985361634 archlinux:latest: Ok
4 19.637909096 centos:5: FAIL
CC /tmp/build/perf/util/probe-event.o
cc1: warnings being treated as errors
util/probe-file.c: In function 'probe_type_is_available':
util/probe-file.c:904: warning: comparison of unsigned expression < 0 is always false
mv: cannot stat `/tmp/build/perf/util/.probe-file.o.tmp': No such file or directory
make[3]: *** [/tmp/build/perf/util/probe-file.o] Error 1
make[3]: *** Waiting for unfinished jobs....
5 28.720326873 centos:6: FAIL
cc1: warnings being treated as errors
util/probe-file.c: In function 'probe_type_is_available':
util/probe-file.c:904: error: comparison of unsigned expression < 0 is always false
mv: cannot stat `/tmp/build/perf/util/.probe-file.o.tmp': No such file or directory
make[3]: *** [/tmp/build/perf/util/probe-file.o] Error 1
make[3]: *** Waiting for unfinished jobs....
6 70.156507794 centos:7: Ok
7 32.013330592 debian:7: FAIL
CC /tmp/build/perf/util/probe-file.o
util/probe-file.c: In function 'probe_type_is_available':
util/probe-file.c:904:2: error: comparison of unsigned expression < 0 is always false [-Werror=type-limits]
cc1: all warnings being treated as errors
mv: cannot stat `/tmp/build/perf/util/.probe-file.o.tmp': No such file or directory
make[3]: *** [/tmp/build/perf/util/probe-file.o] Error 1
make[3]: *** Waiting for unfinished jobs....
8 69.603178590 debian:8: Ok
9 73.783068558 debian:experimental: Ok
10 69.957097133 fedora:20: Ok
11 76.603382387 fedora:21: Ok
12 73.468157842 fedora:22: Ok
13 71.936508182 fedora:23: Ok
14 77.361195679 fedora:24: Ok
15 38.279025856 fedora:24-x-ARC-uClibc: Ok
16 97.249261355 fedora:rawhide: Ok
17 98.245080998 mageia:5: Ok
18 94.932568645 opensuse:13.2: Ok
19 75.037585460 opensuse:42.1: Ok
20 78.874088196 opensuse:tumbleweed: Ok
21 29.516286324 ubuntu:12.04.5: FAIL
CC /tmp/build/perf/util/probe-event.o
util/probe-file.c: In function 'probe_type_is_available':
util/probe-file.c:904:2: error: comparison of unsigned expression < 0 is always false [-Werror=type-limits]
cc1: all warnings being treated as errors
mv: cannot stat `/tmp/build/perf/util/.probe-file.o.tmp': No such file or directory
make[3]: *** [/tmp/build/perf/util/probe-file.o] Error 1
make[3]: *** Waiting for unfinished jobs....
22 67.473466290 ubuntu:14.04.4: Ok
23 70.052930002 ubuntu:15.10: Ok
24 73.910662998 ubuntu:16.04: Ok
25 58.592432948 ubuntu:16.04-x-arm: Ok
26 53.732729132 ubuntu:16.04-x-arm64: Ok
27 53.279460667 ubuntu:16.04-x-powerpc64: Ok
28 53.933970903 ubuntu:16.04-x-powerpc64el: Ok
29 73.724853906 ubuntu:16.10: Ok
30 55.651095622 ubuntu:16.10-x-s390: Ok
> Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
> ---
> tools/perf/util/probe-file.c | 57 ++++++++++++++++++++++++++++++++++++++++
> tools/perf/util/probe-file.h | 10 +++++++
> tools/perf/util/probe-finder.c | 1 +
> 3 files changed, 68 insertions(+)
>
> diff --git a/tools/perf/util/probe-file.c b/tools/perf/util/probe-file.c
> index 9aed9c3..552e56b 100644
> --- a/tools/perf/util/probe-file.c
> +++ b/tools/perf/util/probe-file.c
> @@ -855,3 +855,60 @@ int probe_cache__show_all_caches(struct strfilter *filter)
>
> return 0;
> }
> +
> +static struct {
> + const char *pattern;
> + bool avail;
> + bool checked;
> +} probe_type_table[] = {
> +#define DEFINE_TYPE(idx, pat, def_avail) \
> + [idx] = {.pattern = pat, .avail = (def_avail)}
> + DEFINE_TYPE(PROBE_TYPE_U, "* u8/16/32/64,*", true),
> + DEFINE_TYPE(PROBE_TYPE_S, "* s8/16/32/64,*", true),
> + DEFINE_TYPE(PROBE_TYPE_X, "* x8/16/32/64,*", false),
> + DEFINE_TYPE(PROBE_TYPE_STRING, "* string,*", true),
> + DEFINE_TYPE(PROBE_TYPE_BITFIELD,
> + "* b<bit-width>@<bit-offset>/<container-size>", true),
> +};
> +
> +bool probe_type_is_available(enum probe_type type)
> +{
> + FILE *fp;
> + char *buf = NULL;
> + size_t len = 0;
> + bool target_line = false;
> + bool ret = probe_type_table[type].avail;
> +
> + if (type < 0 || type >= PROBE_TYPE_END)
> + return false;
> + /* We don't have to check the type which supported by default */
> + if (ret || probe_type_table[type].checked)
> + return ret;
> +
> + if (asprintf(&buf, "%s/README", tracing_path) < 0)
> + return ret;
> +
> + fp = fopen(buf, "r");
> + if (!fp)
> + goto end;
> +
> + zfree(&buf);
> + while (getline(&buf, &len, fp) > 0 && !ret) {
> + if (!target_line) {
> + target_line = !!strstr(buf, " type: ");
> + if (!target_line)
> + continue;
> + } else if (strstr(buf, "\t ") != buf)
> + break;
> + ret = strglobmatch(buf, probe_type_table[type].pattern);
> + }
> + /* Cache the result */
> + probe_type_table[type].checked = true;
> + probe_type_table[type].avail = ret;
> +
> + fclose(fp);
> +end:
> + free(buf);
> +
> + return ret;
> +}
> diff --git a/tools/perf/util/probe-file.h b/tools/perf/util/probe-file.h
> index 9577b5c..eba44c3 100644
> --- a/tools/perf/util/probe-file.h
> +++ b/tools/perf/util/probe-file.h
> @@ -19,6 +19,15 @@ struct probe_cache {
> struct list_head entries;
> };
>
> +enum probe_type {
> + PROBE_TYPE_U = 0,
> + PROBE_TYPE_S,
> + PROBE_TYPE_X,
> + PROBE_TYPE_STRING,
> + PROBE_TYPE_BITFIELD,
> + PROBE_TYPE_END,
> +};
> +
> #define PF_FL_UPROBE 1
> #define PF_FL_RW 2
> #define for_each_probe_cache_entry(entry, pcache) \
> @@ -54,6 +63,7 @@ struct probe_cache_entry *probe_cache__find(struct probe_cache *pcache,
> struct probe_cache_entry *probe_cache__find_by_name(struct probe_cache *pcache,
> const char *group, const char *event);
> int probe_cache__show_all_caches(struct strfilter *filter);
> +bool probe_type_is_available(enum probe_type type);
> #else /* ! HAVE_LIBELF_SUPPORT */
> static inline struct probe_cache *probe_cache__new(const char *tgt __maybe_unused)
> {
> diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
> index 5c290c6..24dbe23 100644
> --- a/tools/perf/util/probe-finder.c
> +++ b/tools/perf/util/probe-finder.c
> @@ -39,6 +39,7 @@
> #include "util.h"
> #include "symbol.h"
> #include "probe-finder.h"
> +#include "probe-file.h"
>
> /* Kprobe tracer basic type is up to u64 */
> #define MAX_BASIC_TYPE_BITS 64
next prev parent reply other threads:[~2016-08-23 19:45 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-18 8:57 [PATCH 0/6] perf/ftrace: Introduce hexadecimal type casting Masami Hiramatsu
2016-08-18 8:57 ` [PATCH 1/6] ftrace: kprobe: uprobe: Add x8/x16/x32/x64 for hexadecimal types Masami Hiramatsu
2016-08-18 15:38 ` Steven Rostedt
2016-08-24 9:25 ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2016-08-18 8:58 ` [PATCH 2/6] ftrace: probe: Add README entries for k/uprobe-events Masami Hiramatsu
2016-08-18 15:40 ` Steven Rostedt
2016-08-24 9:25 ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2016-08-18 8:58 ` [PATCH 3/6] perf probe: Add supported type casting of running kernel Masami Hiramatsu
2016-08-23 19:45 ` Arnaldo Carvalho de Melo [this message]
2016-08-24 9:26 ` [tip:perf/core] perf probe: Add supported for type casting by the " tip-bot for Masami Hiramatsu
2016-08-18 8:58 ` [PATCH 4/6] perf probe: Support hexadecimal casting Masami Hiramatsu
2016-08-24 9:26 ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2016-08-18 8:59 ` [PATCH 5/6] perf-probe: Use hexadecimal type by default if possible Masami Hiramatsu
2016-08-24 9:27 ` [tip:perf/core] perf probe: " tip-bot for Masami Hiramatsu
2016-08-18 8:59 ` [PATCH 6/6] ftrace: kprobe: uprobe: Show u8/u16/u32/u64 types in decimal Masami Hiramatsu
2016-08-18 15:41 ` Steven Rostedt
2016-08-24 9:27 ` [tip:perf/core] " tip-bot for Masami Hiramatsu
2016-08-18 14:14 ` [PATCH 0/6] perf/ftrace: Introduce hexadecimal type casting Arnaldo Carvalho de Melo
2016-08-18 16:01 ` Masami Hiramatsu
2016-08-18 16:13 ` Arnaldo Carvalho de Melo
2016-08-20 3:40 ` Masami Hiramatsu
2016-08-18 16:03 ` Steven Rostedt
2016-08-18 16:08 ` Arnaldo Carvalho de Melo
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=20160823194545.GA14305@kernel.org \
--to=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=hemant@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=naohiro.aota@hgst.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=wangnan0@huawei.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.