diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2018-12-14 11:32:02 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2018-12-18 12:24:01 -0300 |
commit | 9d6dc178f0c9e40e61f45d2ac86baa8ad77cb052 (patch) | |
tree | 0aca597f2c4f5a6f8673a0cf6df39286fadab7ce /tools/perf | |
parent | b036146fd0f99209e87877115d090c69da2ab747 (diff) | |
download | linux-stable-9d6dc178f0c9e40e61f45d2ac86baa8ad77cb052.tar.gz linux-stable-9d6dc178f0c9e40e61f45d2ac86baa8ad77cb052.tar.bz2 linux-stable-9d6dc178f0c9e40e61f45d2ac86baa8ad77cb052.zip |
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 <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-ta9tbdwgodpw719sr2bjm8eb@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/Documentation/perf-config.txt | 4 | ||||
-rw-r--r-- | tools/perf/builtin-trace.c | 22 |
2 files changed, 22 insertions, 4 deletions
diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt index ecd1e9514925..35108fd61fa6 100644 --- a/tools/perf/Documentation/perf-config.txt +++ b/tools/perf/Documentation/perf-config.txt @@ -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. diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index e978ce034863..95dfcb851604 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -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, |