perf trace: Allow suppressing the syscall argument names
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 9d6dc178f0c9e40e61f45d2ac86baa8ad77cb052 Gitweb: https://git.kernel.org/tip/9d6dc178f0c9e40e61f45d2ac86baa8ad77cb052 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Fri, 14 Dec 2018 11:32:02 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 18 Dec 2018 12:24:01 -0300
perf trace: Allow suppressing the syscall argument names
To show just the values:
Default:
# trace -e open*,close,*sleep sleep 1 openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC ) = 3 close(fd: 3 ) = 0 openat(dfd: CWD, filename: /lib64/libc.so.6, flags: CLOEXEC ) = 3 close(fd: 3 ) = 0 openat(dfd: CWD, filename: /usr/lib/locale/locale-archive, flags: CLOEXEC) = 3 close(fd: 3 ) = 0 nanosleep(rqtp: 0x7ffc0c4ea0d0, rmtp: 0 ) = 0 close(fd: 1 ) = 0 close(fd: 2 ) = 0 #
Remove it:
# perf config trace.show_arg_names=no # trace -e open*,close,*sleep sleep 1 openat(CWD, /etc/ld.so.cache, CLOEXEC ) = 3 close(3 ) = 0 openat(CWD, /lib64/libc.so.6, CLOEXEC ) = 3 close(3 ) = 0 openat(CWD, /usr/lib/locale/locale-archive, CLOEXEC ) = 3 close(3 ) = 0 nanosleep(0x7ffced3a8c40, 0 ) = 0 close(1 ) = 0 close(2 ) = 0 #
Cc Adrian Hunter <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Luis Cláudio Gonçalves <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/Documentation/perf-config.txt | 4 ++++ tools/perf/builtin-trace.c | 22 ++++++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-)
tools/perf/Documentation/perf-config.txt +4 -0
@@ -532,6 +532,10 @@ trace.*:: trace.no_inherit:: Do not follow children threads. + trace.show_arg_names:: + Should syscall argument names be printed? If not then trace.show_zeros + will be set. + trace.show_duration:: Show syscall duration.
tools/perf/builtin-trace.c +18 -4
@@ -130,6 +130,7 @@ struct trace {bool show_tstamp;bool show_duration;bool show_zeros; +bool show_arg_names;bool force;bool vfs_getname;int trace_pgfaults;
@@ -1613,8 +1614,11 @@ static size_t syscall__scnprintf_args(struct syscall *sc, char *bf, size_t size, sc->arg_fmt[arg.idx].parm))continue ; - printed +=scnprintf (bf + printed, size - printed, -"%s%s: " , printed ?", " :"" , field->name); + printed +=scnprintf (bf + printed, size - printed,"%s" , printed ?", " :"" ); + +if (trace->show_arg_names) + printed +=scnprintf (bf + printed, size - printed,"%s: " , field->name); + printed +=syscall__scnprintf_val (sc, bf + printed, size - printed, &arg, val); } }else if (IS_ERR (sc->tp_format)) {
@@ -3546,12 +3550,21 @@ static int trace__config(const char *var, const char *value, void *arg) trace->show_tstamp =perf_config_bool (var, value); }else if (!strcmp (var,"trace.show_duration" )) { trace->show_duration =perf_config_bool (var, value); + }else if (!strcmp (var,"trace.show_arg_names" )) { + trace->show_arg_names =perf_config_bool (var, value); +if (!trace->show_arg_names) + trace->show_zeros = true; }else if (!strcmp (var,"trace.show_zeros" )) { - trace->show_zeros =perf_config_bool (var, value); +bool new_show_zeros =perf_config_bool (var, value); +if (!trace->show_arg_names && !new_show_zeros) { +pr_warning ("trace.show_zeros has to be set when trace.show_arg_names=no\n" ); + goto out; + } + trace->show_zeros = new_show_zeros; }else if (!strcmp (var,"trace.no_inherit" )) { trace->opts.no_inherit =perf_config_bool (var, value); } - +out:return err; }
@@ -3582,6 +3595,7 @@ int cmd_trace(int argc, const char **argv) .show_comm = true, .show_tstamp = true, .show_duration = true, + .show_arg_names = true, .trace_syscalls = false, .kernel_syscallchains = false, .max_stack = UINT_MAX,