Commit 9e9716d1b929ddb6955a5954fe1d9a74b233df0d
1 parent
941557e0e4
Exists in
master
and in
20 other branches
perf trace: Add beautifier for madvise behaviour/advice parm
[root@zoo ~]# perf trace -e madvise -a 35299.631 ( 0.019 ms): 19553 madvise(start: 0x7f5b101d4000, len_in: 4063232, behavior: DONTNEED ) = 0 Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.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-a3twa1ia5sxt0hsxqika4efq@git.kernel.org [ ifdef DO(NT)?DUMP to fix build on f16, from David Ahern ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Showing 1 changed file with 40 additions and 0 deletions Side-by-side Diff
tools/perf/builtin-trace.c
... | ... | @@ -88,6 +88,43 @@ |
88 | 88 | |
89 | 89 | #define SCA_MMAP_FLAGS syscall_arg__scnprintf_mmap_flags |
90 | 90 | |
91 | +static size_t syscall_arg__scnprintf_madvise_behavior(char *bf, size_t size, unsigned long arg) | |
92 | +{ | |
93 | + int behavior = arg; | |
94 | + | |
95 | + switch (behavior) { | |
96 | +#define P_MADV_BHV(n) case MADV_##n: return scnprintf(bf, size, #n) | |
97 | + P_MADV_BHV(NORMAL); | |
98 | + P_MADV_BHV(RANDOM); | |
99 | + P_MADV_BHV(SEQUENTIAL); | |
100 | + P_MADV_BHV(WILLNEED); | |
101 | + P_MADV_BHV(DONTNEED); | |
102 | + P_MADV_BHV(REMOVE); | |
103 | + P_MADV_BHV(DONTFORK); | |
104 | + P_MADV_BHV(DOFORK); | |
105 | + P_MADV_BHV(HWPOISON); | |
106 | +#ifdef MADV_SOFT_OFFLINE | |
107 | + P_MADV_BHV(SOFT_OFFLINE); | |
108 | +#endif | |
109 | + P_MADV_BHV(MERGEABLE); | |
110 | + P_MADV_BHV(UNMERGEABLE); | |
111 | + P_MADV_BHV(HUGEPAGE); | |
112 | + P_MADV_BHV(NOHUGEPAGE); | |
113 | +#ifdef MADV_DONTDUMP | |
114 | + P_MADV_BHV(DONTDUMP); | |
115 | +#endif | |
116 | +#ifdef MADV_DODUMP | |
117 | + P_MADV_BHV(DODUMP); | |
118 | +#endif | |
119 | +#undef P_MADV_PHV | |
120 | + default: break; | |
121 | + } | |
122 | + | |
123 | + return scnprintf(bf, size, "%#x", behavior); | |
124 | +} | |
125 | + | |
126 | +#define SCA_MADV_BHV syscall_arg__scnprintf_madvise_behavior | |
127 | + | |
91 | 128 | static struct syscall_fmt { |
92 | 129 | const char *name; |
93 | 130 | const char *alias; |
... | ... | @@ -108,6 +145,9 @@ |
108 | 145 | { .name = "ioctl", .errmsg = true, |
109 | 146 | .arg_scnprintf = { [2] = SCA_HEX, /* arg */ }, }, |
110 | 147 | { .name = "lstat", .errmsg = true, .alias = "newlstat", }, |
148 | + { .name = "madvise", .errmsg = true, | |
149 | + .arg_scnprintf = { [0] = SCA_HEX, /* start */ | |
150 | + [2] = SCA_MADV_BHV, /* behavior */ }, }, | |
111 | 151 | { .name = "mmap", .hexret = true, |
112 | 152 | .arg_scnprintf = { [0] = SCA_HEX, /* addr */ |
113 | 153 | [2] = SCA_MMAP_PROT, /* prot */ |