diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-05-06 11:45:25 -0400 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-05-06 12:00:59 -0400 |
| commit | d5d71e86d226abe7e08df5763127ed2bd07649a1 (patch) | |
| tree | 51106d348d0778b7b00d2b8212a9854497d7f47f /tools | |
| parent | 8f48df69b4add63527cae646f2e40cf83c6ec0a0 (diff) | |
perf trace: Move futex_op beautifier to tools/perf/trace/beauty/
To reduce the size of builtin-trace.c.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-vb8dpy7bptkf219q5c25ulfp@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/perf/builtin-trace.c | 47 | ||||
| -rw-r--r-- | tools/perf/trace/beauty/futex_op.c | 44 |
2 files changed, 46 insertions, 45 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index a4e294e24f6a..709963740f9a 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
| @@ -40,7 +40,6 @@ | |||
| 40 | 40 | ||
| 41 | #include <libaudit.h> /* FIXME: Still needed for audit_errno_to_name */ | 41 | #include <libaudit.h> /* FIXME: Still needed for audit_errno_to_name */ |
| 42 | #include <stdlib.h> | 42 | #include <stdlib.h> |
| 43 | #include <linux/futex.h> | ||
| 44 | #include <linux/err.h> | 43 | #include <linux/err.h> |
| 45 | #include <linux/seccomp.h> | 44 | #include <linux/seccomp.h> |
| 46 | #include <linux/filter.h> | 45 | #include <linux/filter.h> |
| @@ -401,49 +400,6 @@ static size_t syscall_arg__scnprintf_flock(char *bf, size_t size, | |||
| 401 | 400 | ||
| 402 | #define SCA_FLOCK syscall_arg__scnprintf_flock | 401 | #define SCA_FLOCK syscall_arg__scnprintf_flock |
| 403 | 402 | ||
| 404 | static size_t syscall_arg__scnprintf_futex_op(char *bf, size_t size, struct syscall_arg *arg) | ||
| 405 | { | ||
| 406 | enum syscall_futex_args { | ||
| 407 | SCF_UADDR = (1 << 0), | ||
| 408 | SCF_OP = (1 << 1), | ||
| 409 | SCF_VAL = (1 << 2), | ||
| 410 | SCF_TIMEOUT = (1 << 3), | ||
| 411 | SCF_UADDR2 = (1 << 4), | ||
| 412 | SCF_VAL3 = (1 << 5), | ||
| 413 | }; | ||
| 414 | int op = arg->val; | ||
| 415 | int cmd = op & FUTEX_CMD_MASK; | ||
| 416 | size_t printed = 0; | ||
| 417 | |||
| 418 | switch (cmd) { | ||
| 419 | #define P_FUTEX_OP(n) case FUTEX_##n: printed = scnprintf(bf, size, #n); | ||
| 420 | P_FUTEX_OP(WAIT); arg->mask |= SCF_VAL3|SCF_UADDR2; break; | ||
| 421 | P_FUTEX_OP(WAKE); arg->mask |= SCF_VAL3|SCF_UADDR2|SCF_TIMEOUT; break; | ||
| 422 | P_FUTEX_OP(FD); arg->mask |= SCF_VAL3|SCF_UADDR2|SCF_TIMEOUT; break; | ||
| 423 | P_FUTEX_OP(REQUEUE); arg->mask |= SCF_VAL3|SCF_TIMEOUT; break; | ||
| 424 | P_FUTEX_OP(CMP_REQUEUE); arg->mask |= SCF_TIMEOUT; break; | ||
| 425 | P_FUTEX_OP(CMP_REQUEUE_PI); arg->mask |= SCF_TIMEOUT; break; | ||
| 426 | P_FUTEX_OP(WAKE_OP); break; | ||
| 427 | P_FUTEX_OP(LOCK_PI); arg->mask |= SCF_VAL3|SCF_UADDR2|SCF_TIMEOUT; break; | ||
| 428 | P_FUTEX_OP(UNLOCK_PI); arg->mask |= SCF_VAL3|SCF_UADDR2|SCF_TIMEOUT; break; | ||
| 429 | P_FUTEX_OP(TRYLOCK_PI); arg->mask |= SCF_VAL3|SCF_UADDR2; break; | ||
| 430 | P_FUTEX_OP(WAIT_BITSET); arg->mask |= SCF_UADDR2; break; | ||
| 431 | P_FUTEX_OP(WAKE_BITSET); arg->mask |= SCF_UADDR2; break; | ||
| 432 | P_FUTEX_OP(WAIT_REQUEUE_PI); break; | ||
| 433 | default: printed = scnprintf(bf, size, "%#x", cmd); break; | ||
| 434 | } | ||
| 435 | |||
| 436 | if (op & FUTEX_PRIVATE_FLAG) | ||
| 437 | printed += scnprintf(bf + printed, size - printed, "|PRIV"); | ||
| 438 | |||
| 439 | if (op & FUTEX_CLOCK_REALTIME) | ||
| 440 | printed += scnprintf(bf + printed, size - printed, "|CLKRT"); | ||
| 441 | |||
| 442 | return printed; | ||
| 443 | } | ||
| 444 | |||
| 445 | #define SCA_FUTEX_OP syscall_arg__scnprintf_futex_op | ||
| 446 | |||
| 447 | static const char *bpf_cmd[] = { | 403 | static const char *bpf_cmd[] = { |
| 448 | "MAP_CREATE", "MAP_LOOKUP_ELEM", "MAP_UPDATE_ELEM", "MAP_DELETE_ELEM", | 404 | "MAP_CREATE", "MAP_LOOKUP_ELEM", "MAP_UPDATE_ELEM", "MAP_DELETE_ELEM", |
| 449 | "MAP_GET_NEXT_KEY", "PROG_LOAD", | 405 | "MAP_GET_NEXT_KEY", "PROG_LOAD", |
| @@ -678,12 +634,13 @@ static size_t syscall_arg__scnprintf_getrandom_flags(char *bf, size_t size, | |||
| 678 | .arg_parm = { [arg] = &strarray__##array, } | 634 | .arg_parm = { [arg] = &strarray__##array, } |
| 679 | 635 | ||
| 680 | #include "trace/beauty/eventfd.c" | 636 | #include "trace/beauty/eventfd.c" |
| 681 | #include "trace/beauty/pid.c" | 637 | #include "trace/beauty/futex_op.c" |
| 682 | #include "trace/beauty/mmap.c" | 638 | #include "trace/beauty/mmap.c" |
| 683 | #include "trace/beauty/mode_t.c" | 639 | #include "trace/beauty/mode_t.c" |
| 684 | #include "trace/beauty/msg_flags.c" | 640 | #include "trace/beauty/msg_flags.c" |
| 685 | #include "trace/beauty/open_flags.c" | 641 | #include "trace/beauty/open_flags.c" |
| 686 | #include "trace/beauty/perf_event_open.c" | 642 | #include "trace/beauty/perf_event_open.c" |
| 643 | #include "trace/beauty/pid.c" | ||
| 687 | #include "trace/beauty/sched_policy.c" | 644 | #include "trace/beauty/sched_policy.c" |
| 688 | #include "trace/beauty/signum.c" | 645 | #include "trace/beauty/signum.c" |
| 689 | #include "trace/beauty/socket_type.c" | 646 | #include "trace/beauty/socket_type.c" |
diff --git a/tools/perf/trace/beauty/futex_op.c b/tools/perf/trace/beauty/futex_op.c new file mode 100644 index 000000000000..e2476211f22d --- /dev/null +++ b/tools/perf/trace/beauty/futex_op.c | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | #include <linux/futex.h> | ||
| 2 | |||
| 3 | static size_t syscall_arg__scnprintf_futex_op(char *bf, size_t size, struct syscall_arg *arg) | ||
| 4 | { | ||
| 5 | enum syscall_futex_args { | ||
| 6 | SCF_UADDR = (1 << 0), | ||
| 7 | SCF_OP = (1 << 1), | ||
| 8 | SCF_VAL = (1 << 2), | ||
| 9 | SCF_TIMEOUT = (1 << 3), | ||
| 10 | SCF_UADDR2 = (1 << 4), | ||
| 11 | SCF_VAL3 = (1 << 5), | ||
| 12 | }; | ||
| 13 | int op = arg->val; | ||
| 14 | int cmd = op & FUTEX_CMD_MASK; | ||
| 15 | size_t printed = 0; | ||
| 16 | |||
| 17 | switch (cmd) { | ||
| 18 | #define P_FUTEX_OP(n) case FUTEX_##n: printed = scnprintf(bf, size, #n); | ||
| 19 | P_FUTEX_OP(WAIT); arg->mask |= SCF_VAL3|SCF_UADDR2; break; | ||
| 20 | P_FUTEX_OP(WAKE); arg->mask |= SCF_VAL3|SCF_UADDR2|SCF_TIMEOUT; break; | ||
| 21 | P_FUTEX_OP(FD); arg->mask |= SCF_VAL3|SCF_UADDR2|SCF_TIMEOUT; break; | ||
| 22 | P_FUTEX_OP(REQUEUE); arg->mask |= SCF_VAL3|SCF_TIMEOUT; break; | ||
| 23 | P_FUTEX_OP(CMP_REQUEUE); arg->mask |= SCF_TIMEOUT; break; | ||
| 24 | P_FUTEX_OP(CMP_REQUEUE_PI); arg->mask |= SCF_TIMEOUT; break; | ||
| 25 | P_FUTEX_OP(WAKE_OP); break; | ||
| 26 | P_FUTEX_OP(LOCK_PI); arg->mask |= SCF_VAL3|SCF_UADDR2|SCF_TIMEOUT; break; | ||
| 27 | P_FUTEX_OP(UNLOCK_PI); arg->mask |= SCF_VAL3|SCF_UADDR2|SCF_TIMEOUT; break; | ||
| 28 | P_FUTEX_OP(TRYLOCK_PI); arg->mask |= SCF_VAL3|SCF_UADDR2; break; | ||
| 29 | P_FUTEX_OP(WAIT_BITSET); arg->mask |= SCF_UADDR2; break; | ||
| 30 | P_FUTEX_OP(WAKE_BITSET); arg->mask |= SCF_UADDR2; break; | ||
| 31 | P_FUTEX_OP(WAIT_REQUEUE_PI); break; | ||
| 32 | default: printed = scnprintf(bf, size, "%#x", cmd); break; | ||
| 33 | } | ||
| 34 | |||
| 35 | if (op & FUTEX_PRIVATE_FLAG) | ||
| 36 | printed += scnprintf(bf + printed, size - printed, "|PRIV"); | ||
| 37 | |||
| 38 | if (op & FUTEX_CLOCK_REALTIME) | ||
| 39 | printed += scnprintf(bf + printed, size - printed, "|CLKRT"); | ||
| 40 | |||
| 41 | return printed; | ||
| 42 | } | ||
| 43 | |||
| 44 | #define SCA_FUTEX_OP syscall_arg__scnprintf_futex_op | ||
