diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-09-12 11:18:56 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-10-09 10:11:21 -0400 |
commit | 49af9e93adfa11d50435aa079299a765843532fc (patch) | |
tree | 63075cda4872587d694da1100569d66d9b227676 /tools/perf/builtin-trace.c | |
parent | b2cc99fdaad20b6e787f0864a1ac7b14391f9fe6 (diff) |
perf trace: Beautify eventfd2 'flags' arg
61.168 ( 0.004 ms): 24267 eventfd2(flags: CLOEXEC|NONBLOCK) = 9
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-3hg8eajdzil077501c8f5jkw@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-trace.c')
-rw-r--r-- | tools/perf/builtin-trace.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index c400fbee1fc7..8a09ba3dcd97 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
@@ -13,6 +13,7 @@ | |||
13 | 13 | ||
14 | #include <libaudit.h> | 14 | #include <libaudit.h> |
15 | #include <stdlib.h> | 15 | #include <stdlib.h> |
16 | #include <sys/eventfd.h> | ||
16 | #include <sys/mman.h> | 17 | #include <sys/mman.h> |
17 | #include <linux/futex.h> | 18 | #include <linux/futex.h> |
18 | 19 | ||
@@ -456,6 +457,32 @@ static size_t syscall_arg__scnprintf_open_flags(char *bf, size_t size, | |||
456 | 457 | ||
457 | #define SCA_OPEN_FLAGS syscall_arg__scnprintf_open_flags | 458 | #define SCA_OPEN_FLAGS syscall_arg__scnprintf_open_flags |
458 | 459 | ||
460 | static size_t syscall_arg__scnprintf_eventfd_flags(char *bf, size_t size, | ||
461 | struct syscall_arg *arg) | ||
462 | { | ||
463 | int printed = 0, flags = arg->val; | ||
464 | |||
465 | if (flags == 0) | ||
466 | return scnprintf(bf, size, "NONE"); | ||
467 | #define P_FLAG(n) \ | ||
468 | if (flags & EFD_##n) { \ | ||
469 | printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ | ||
470 | flags &= ~EFD_##n; \ | ||
471 | } | ||
472 | |||
473 | P_FLAG(SEMAPHORE); | ||
474 | P_FLAG(CLOEXEC); | ||
475 | P_FLAG(NONBLOCK); | ||
476 | #undef P_FLAG | ||
477 | |||
478 | if (flags) | ||
479 | printed += scnprintf(bf + printed, size - printed, "%s%#x", printed ? "|" : "", flags); | ||
480 | |||
481 | return printed; | ||
482 | } | ||
483 | |||
484 | #define SCA_EFD_FLAGS syscall_arg__scnprintf_eventfd_flags | ||
485 | |||
459 | static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscall_arg *arg) | 486 | static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscall_arg *arg) |
460 | { | 487 | { |
461 | int sig = arg->val; | 488 | int sig = arg->val; |
@@ -516,6 +543,8 @@ static struct syscall_fmt { | |||
516 | { .name = "brk", .hexret = true, | 543 | { .name = "brk", .hexret = true, |
517 | .arg_scnprintf = { [0] = SCA_HEX, /* brk */ }, }, | 544 | .arg_scnprintf = { [0] = SCA_HEX, /* brk */ }, }, |
518 | { .name = "connect", .errmsg = true, }, | 545 | { .name = "connect", .errmsg = true, }, |
546 | { .name = "eventfd2", .errmsg = true, | ||
547 | .arg_scnprintf = { [1] = SCA_EFD_FLAGS, /* flags */ }, }, | ||
519 | { .name = "fcntl", .errmsg = true, | 548 | { .name = "fcntl", .errmsg = true, |
520 | .arg_scnprintf = { [1] = SCA_STRARRAY, /* cmd */ }, | 549 | .arg_scnprintf = { [1] = SCA_STRARRAY, /* cmd */ }, |
521 | .arg_parm = { [1] = &strarray__fcntl_cmds, /* cmd */ }, }, | 550 | .arg_parm = { [1] = &strarray__fcntl_cmds, /* cmd */ }, }, |