diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-09-02 14:37:32 -0400 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-09-02 14:37:32 -0400 |
| commit | 579e7865b2d431bb7d380a1b4ea0aa8eb8a10fd4 (patch) | |
| tree | 98ceb45a01be55533c5393121f6d0ab731a27595 | |
| parent | 0b8c25d949e010274c6697c570b772797ebc7c27 (diff) | |
perf trace: Add beautifier for lseek's whence arg
[root@zoo ~]# perf trace -a -e lseek | head -1
546.922 ( 0.004 ms): 1184 lseek(fd: 26, offset: 0, whence: CUR) = 2
[root@zoo ~]#
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-2eiuhwz9jbnhj80q6jaqeji4@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
| -rw-r--r-- | tools/perf/builtin-trace.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 1a6cb7436952..02aaea6273ff 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
| @@ -24,6 +24,31 @@ static size_t syscall_arg__scnprintf_hex(char *bf, size_t size, | |||
| 24 | 24 | ||
| 25 | #define SCA_HEX syscall_arg__scnprintf_hex | 25 | #define SCA_HEX syscall_arg__scnprintf_hex |
| 26 | 26 | ||
| 27 | static size_t syscall_arg__scnprintf_whence(char *bf, size_t size, | ||
| 28 | unsigned long arg, u8 *arg_mask __maybe_unused) | ||
| 29 | { | ||
| 30 | int whence = arg; | ||
| 31 | |||
| 32 | switch (whence) { | ||
| 33 | #define P_WHENCE(n) case SEEK_##n: return scnprintf(bf, size, #n) | ||
| 34 | P_WHENCE(SET); | ||
| 35 | P_WHENCE(CUR); | ||
| 36 | P_WHENCE(END); | ||
| 37 | #ifdef SEEK_DATA | ||
| 38 | P_WHENCE(DATA); | ||
| 39 | #endif | ||
| 40 | #ifdef SEEK_HOLE | ||
| 41 | P_WHENCE(HOLE); | ||
| 42 | #endif | ||
| 43 | #undef P_WHENCE | ||
| 44 | default: break; | ||
| 45 | } | ||
| 46 | |||
| 47 | return scnprintf(bf, size, "%#x", whence); | ||
| 48 | } | ||
| 49 | |||
| 50 | #define SCA_WHENCE syscall_arg__scnprintf_whence | ||
| 51 | |||
| 27 | static size_t syscall_arg__scnprintf_mmap_prot(char *bf, size_t size, | 52 | static size_t syscall_arg__scnprintf_mmap_prot(char *bf, size_t size, |
| 28 | unsigned long arg, u8 *arg_mask __maybe_unused) | 53 | unsigned long arg, u8 *arg_mask __maybe_unused) |
| 29 | { | 54 | { |
| @@ -201,6 +226,8 @@ static struct syscall_fmt { | |||
| 201 | .arg_scnprintf = { [1] = SCA_FUTEX_OP, /* op */ }, }, | 226 | .arg_scnprintf = { [1] = SCA_FUTEX_OP, /* op */ }, }, |
| 202 | { .name = "ioctl", .errmsg = true, | 227 | { .name = "ioctl", .errmsg = true, |
| 203 | .arg_scnprintf = { [2] = SCA_HEX, /* arg */ }, }, | 228 | .arg_scnprintf = { [2] = SCA_HEX, /* arg */ }, }, |
| 229 | { .name = "lseek", .errmsg = true, | ||
| 230 | .arg_scnprintf = { [2] = SCA_WHENCE, /* whence */ }, }, | ||
| 204 | { .name = "lstat", .errmsg = true, .alias = "newlstat", }, | 231 | { .name = "lstat", .errmsg = true, .alias = "newlstat", }, |
| 205 | { .name = "madvise", .errmsg = true, | 232 | { .name = "madvise", .errmsg = true, |
| 206 | .arg_scnprintf = { [0] = SCA_HEX, /* start */ | 233 | .arg_scnprintf = { [0] = SCA_HEX, /* start */ |
