perf trace beauty fcntl: Beautify F_[GS]ETFD arg/return value
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: c2e539d287a2e7c633ad6ecb0cb6b6f13ea05125 Gitweb: http://git.kernel.org/tip/c2e539d287a2e7c633ad6ecb0cb6b6f13ea05125 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Fri, 14 Jul 2017 14:50:52 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 18 Jul 2017 23:14:01 -0300
perf trace beauty fcntl: Beautify F_[GS]ETFD arg/return value
Now it will show 0 or CLOEXEC, the only !0 value returned by the kernel for fcntl(fd, F_GETFD).
And for F_SETFD:
6870.267 ( 0.004 ms): make/29812 fcntl(fd: 7</home/acme/git/linux/tools/build/Build.include>, cmd: SETFD, arg: CLOEXEC) = 0 6873.805 ( 0.002 ms): make/29816 fcntl(fd: 6</home/acme/git/linux/tools/build/Makefile.build>, cmd: SETFD, arg: CLOEXEC) = 0
<SNIP>
77986.150 ( 0.006 ms): alsa-sink-ALC3/2042 fcntl(fd: 45</dev/snd/pcmC1D0p>, cmd: SETFD, arg: CLOEXEC) = 0 77986.271 ( 0.006 ms): alsa-sink-ALC3/2042 fcntl(fd: 23</dev/snd/controlC1>, cmd: SETFD, arg: CLOEXEC) = 0
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/trace/beauty/fcntl.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)
tools/perf/trace/beauty/fcntl.c +14 -2
@@ -7,19 +7,28 @@*/ #include "trace/beauty/beauty.h" +#include <linux/kernel.h> #include <uapi/linux/fcntl.h> +static size_t fcntl__scnprintf_getfd (unsigned long val,char *bf,size_t size) +{ +return scnprintf (bf, size,"%s" , val ?"CLOEXEC" :"0" ); +} +size_t syscall_arg__scnprintf_fcntl_cmd (char *bf,size_t size,struct syscall_arg *arg) {if (arg->val ==F_GETFL ) {syscall_arg__set_ret_scnprintf (arg, open__scnprintf_flags); goto mask_arg; } +if (arg->val ==F_GETFD ) { +syscall_arg__set_ret_scnprintf (arg, fcntl__scnprintf_getfd); + goto mask_arg; + }/* * Some commands ignore the third fcntl argument, "arg", so mask it */ -if (arg->val ==F_GETFD || - arg->val ==F_GETOWN || arg->val ==F_GET_SEALS || +if (arg->val ==F_GETOWN || arg->val ==F_GET_SEALS || arg->val ==F_GETLEASE || arg->val ==F_GETSIG ) { mask_arg: arg->mask |= (1 <<2 );
@@ -32,6 +41,9 @@ size_t syscall_arg__scnprintf_fcntl_arg(char *bf, size_t size, struct syscall_ar {int cmd =syscall_arg__val (arg,1 ); +if (cmd ==F_SETFD ) +return fcntl__scnprintf_getfd (arg->val, bf, size); +if (cmd ==F_SETFL )return open__scnprintf_flags (arg->val, bf, size);/*