perf trace: Beautify renameat2's flags argument
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: ca7ff2c8e7add62b661c414257e7ef12cd40a950 Gitweb: https://git.kernel.org/tip/ca7ff2c8e7add62b661c414257e7ef12cd40a950 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Tue, 11 Dec 2018 10:39:30 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 18 Dec 2018 12:23:56 -0300
perf trace: Beautify renameat2's flags argument
# strace -e renameat2 -f perf trace -e rename* mv c /tmp
strace: Process 10824 attached
[pid 10824] renameat2(AT_FDCWD, "c", AT_FDCWD, "/tmp", RENAME_NOREPLACE) = -1 EXDEV (Invalid cross-device link)
[pid 10824] renameat2(AT_FDCWD, "c", AT_FDCWD, "/tmp/c", RENAME_NOREPLACE) = -1 EEXIST (File exists)
1.857 ( 0.008 ms): mv/10824 renameat2(olddfd: CWD, oldname: 0x7ffc72ff3d81, newdfd: CWD, newname: 0x7ffc72ff3d83, flags: NOREPLACE) = -1 EXDEV Invalid cross-device link
2.002 ( 0.006 ms): mv/10824 renameat2(olddfd: CWD, oldname: 0x7ffc72ff3d81, newdfd: CWD, newname: 0x55ad609efcc0, flags: NOREPLACE) = -1 EEXIST File exists
mv: 'c' and '/tmp/c' are the same file
[pid 10824] +++ exited with 1 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=10824, si_uid=0, si_status=1, si_utime=0, si_stime=0} ---
+++ exited with 0 +++
#Cc Adrian Hunter <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-trace.c | 3 ++- tools/perf/trace/beauty/Build | 1 + tools/perf/trace/beauty/beauty.h | 3 +++ tools/perf/trace/beauty/renameat.c | 19 +++++++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-)
tools/perf/builtin-trace.c +2 -1
@@ -801,7 +801,8 @@ static struct syscall_fmt { .arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, }, { .name = "renameat2", .arg = { [0] = { .scnprintf = SCA_FDAT, /* olddirfd */ }, - [2] = { .scnprintf = SCA_FDAT, /* newdirfd */ }, }, }, + [2] = { .scnprintf = SCA_FDAT, /* newdirfd */ }, + [4] = { .scnprintf = SCA_RENAMEAT2_FLAGS, /* flags */ }, }, }, { .name = "rt_sigaction", .arg = { [0] = { .scnprintf = SCA_SIGNUM, /* sig */ }, }, }, { .name = "rt_sigprocmask",
tools/perf/trace/beauty/Build +1 -0
@@ -8,6 +8,7 @@ libperf-y += kcmp.o libperf-y += mount_flags.o libperf-y += pkey_alloc.o libperf-y += prctl.o +libperf-y += renameat.o libperf-y += sockaddr.o libperf-y += socket.o libperf-y += statx.o
tools/perf/trace/beauty/beauty.h +3 -0
@@ -144,6 +144,9 @@ size_t syscall_arg__scnprintf_prctl_arg2(char *bf, size_t size, struct syscall_asize_t syscall_arg__scnprintf_prctl_arg3 (char *bf,size_t size,struct syscall_arg *arg);#define SCA_PRCTL_ARG3 syscall_arg__scnprintf_prctl_arg3 +size_t syscall_arg__scnprintf_renameat2_flags (char *bf,size_t size,struct syscall_arg *arg); +#define SCA_RENAMEAT2_FLAGS syscall_arg__scnprintf_renameat2_flags +size_t syscall_arg__scnprintf_sockaddr (char *bf,size_t size,struct syscall_arg *arg);#define SCA_SOCKADDR syscall_arg__scnprintf_sockaddr
tools/perf/trace/beauty/renameat.c new file +19 -0
@@ -0,0 +1,19 @@ +// SPDX-License-Identifier: LGPL-2.1 +// Copyright (C) 2018, Red Hat Inc, Arnaldo Carvalho de Melo <[email protected]> + +#include "trace/beauty/beauty.h" +#include <uapi/linux/fs.h> + +static size_t renameat2__scnprintf_flags (unsigned long flags,char *bf,size_t size) +{ +#include "trace/beauty/generated/rename_flags_array.c" +static DEFINE_STRARRAY (rename_flags); + +return strarray__scnprintf_flags (&strarray__rename_flags, bf, size, flags); +} + +size_t syscall_arg__scnprintf_renameat2_flags (char *bf,size_t size,struct syscall_arg *arg) +{ +unsigned long flags = arg->val; +return renameat2__scnprintf_flags (flags, bf, size); +}