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/perf | |
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/perf')
-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 | ||