perf trace beauty fcntl: Basic 'arg' beautifier
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 9c47f66748381ecbaa3a5eb301b81fd2fd0a282d Gitweb: http://git.kernel.org/tip/9c47f66748381ecbaa3a5eb301b81fd2fd0a282d Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Fri, 14 Jul 2017 11:05:40 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 18 Jul 2017 23:13:55 -0300
perf trace beauty fcntl: Basic 'arg' beautifier
Sometimes it should be printed as an hex number, like with F_SETLK, F_SETLKW and F_GETLK, that treat 'arg' as a struct flock pointer, in other cases it is just an integer.
Cc Adrian Hunter <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-trace.c | 3 ++- tools/perf/trace/beauty/beauty.h | 3 +++ tools/perf/trace/beauty/fcntl.c | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-)
tools/perf/builtin-trace.c +2 -1
@@ -660,7 +660,8 @@ static struct syscall_fmt { { .name = "fchownat", .errmsg = true, .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, }, { .name = "fcntl", .errmsg = true, - .arg_scnprintf = { [1] = SCA_FCNTL_CMD, /* cmd */ }, + .arg_scnprintf = { [1] = SCA_FCNTL_CMD, /* cmd */ + [2] = SCA_FCNTL_ARG, /* arg */ }, .arg_parm = { [1] = &strarrays__fcntl_cmds_arrays, /* cmd */ }, }, { .name = "fdatasync", .errmsg = true, }, { .name = "flock", .errmsg = true,
tools/perf/trace/beauty/beauty.h +3 -0
@@ -43,6 +43,9 @@ size_t syscall_arg__scnprintf_long(char *bf, size_t size, struct syscall_arg *arsize_t syscall_arg__scnprintf_fcntl_cmd (char *bf,size_t size,struct syscall_arg *arg);#define SCA_FCNTL_CMD syscall_arg__scnprintf_fcntl_cmd +size_t syscall_arg__scnprintf_fcntl_arg (char *bf,size_t size,struct syscall_arg *arg); +#define SCA_FCNTL_ARG syscall_arg__scnprintf_fcntl_arg +size_t syscall_arg__scnprintf_statx_flags (char *bf,size_t size,struct syscall_arg *arg);#define SCA_STATX_FLAGS syscall_arg__scnprintf_statx_flags
tools/perf/trace/beauty/fcntl.c +18 -0
@@ -21,3 +21,21 @@ size_t syscall_arg__scnprintf_fcntl_cmd(char *bf, size_t size, struct syscall_arreturn syscall_arg__scnprintf_strarrays (bf, size, arg); } + +size_t syscall_arg__scnprintf_fcntl_arg (char *bf,size_t size,struct syscall_arg *arg) +{ +int cmd =syscall_arg__val (arg,1 ); + +/* +* We still don't grab the contents of pointers on entry or exit, +* so just print them as hex numbers +*/ +if (cmd ==F_SETLK || cmd ==F_SETLKW || cmd ==F_GETLK || + cmd ==F_OFD_SETLK || cmd ==F_OFD_SETLKW || cmd ==F_OFD_GETLK || + cmd ==F_GETOWN_EX || cmd ==F_SETOWN_EX || + cmd ==F_GET_RW_HINT || cmd ==F_SET_RW_HINT || + cmd ==F_GET_FILE_RW_HINT || cmd ==F_SET_FILE_RW_HINT ) +return syscall_arg__scnprintf_hex (bf, size, arg); + +return syscall_arg__scnprintf_long (bf, size, arg); +}