perf trace beauty ioctl: Improve 'cmd' beautifier
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 1cc47f2d46206d67285aea0ca7e8450af571da13 Gitweb: http://git.kernel.org/tip/1cc47f2d46206d67285aea0ca7e8450af571da13 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Mon, 31 Jul 2017 13:20:14 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 1 Aug 2017 09:47:52 -0300
perf trace beauty ioctl: Improve 'cmd' beautifier
By using the _IOC_(DIR,NR,TYPE,SIZE) macros to lookup a 'type' keyed table that then gets indexed by 'nr', falling back to a notation similar to the one used by 'strace', only more compact, i.e.:
474.356 ( 0.007 ms): gnome-shell/22401 ioctl(fd: 8</dev/dri/card0>, cmd: (READ|WRITE, 0x64, 0xae, 0x1c), arg: 0x7ffc934f7880) = 0 474.369 ( 0.053 ms): gnome-shell/22401 ioctl(fd: 8</dev/dri/card0>, cmd: (READ|WRITE, 0x64, 0xb0, 0x18), arg: 0x7ffc934f77d0) = 0 505.055 ( 0.014 ms): gnome-shell/22401 ioctl(fd: 8</dev/dri/card0>, cmd: (READ|WRITE, 0x64, 0xaf, 0x4), arg: 0x7ffc934f741c) = 0
This also moves it out of builtin-trace.c and into trace/beauty/ioctl.c to better compartimentalize all these formatters.
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 | 44 +------------------- tools/perf/trace/beauty/Build | 3 ++ tools/perf/trace/beauty/beauty.h | 3 ++ tools/perf/trace/beauty/ioctl.c | 88 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 95 insertions(+), 43 deletions(-)
tools/perf/builtin-trace.c +1 -43
@@ -338,20 +338,6 @@ size_t syscall_arg__scnprintf_strarrays(char *bf, size_t size,return scnprintf (bf, size,"%d" , arg->val); } -#if defined(__i386__) || defined(__x86_64__) -/* -* FIXME: Make this available to all arches as soon as the ioctl beautifier -* gets rewritten to support all arches. -*/ -static size_t syscall_arg__scnprintf_strhexarray (char *bf,size_t size, -struct syscall_arg *arg) -{ -return __syscall_arg__scnprintf_strarray (bf, size,"%#x" , arg); -} - -#define SCA_STRHEXARRAY syscall_arg__scnprintf_strhexarray -#endif /* defined(__i386__) || defined(__x86_64__) */ -#ifndef AT_FDCWD #define AT_FDCWD -100#endif
@@ -525,33 +511,6 @@ static size_t syscall_arg__scnprintf_pipe_flags(char *bf, size_t size,#define SCA_PIPE_FLAGS syscall_arg__scnprintf_pipe_flags -#if defined(__i386__) || defined(__x86_64__) -/* -* FIXME: Make this available to all arches. -*/ -#define TCGETS 0x5401 - -static const char *tioctls[] = { -"TCGETS" ,"TCSETS" ,"TCSETSW" ,"TCSETSF" ,"TCGETA" ,"TCSETA" ,"TCSETAW" , -"TCSETAF" ,"TCSBRK" ,"TCXONC" ,"TCFLSH" ,"TIOCEXCL" ,"TIOCNXCL" , -"TIOCSCTTY" ,"TIOCGPGRP" ,"TIOCSPGRP" ,"TIOCOUTQ" ,"TIOCSTI" , -"TIOCGWINSZ" ,"TIOCSWINSZ" ,"TIOCMGET" ,"TIOCMBIS" ,"TIOCMBIC" , -"TIOCMSET" ,"TIOCGSOFTCAR" ,"TIOCSSOFTCAR" ,"FIONREAD" ,"TIOCLINUX" , -"TIOCCONS" ,"TIOCGSERIAL" ,"TIOCSSERIAL" ,"TIOCPKT" ,"FIONBIO" , -"TIOCNOTTY" ,"TIOCSETD" ,"TIOCGETD" ,"TCSBRKP" , [0x27 ] ="TIOCSBRK" , -"TIOCCBRK" ,"TIOCGSID" ,"TCGETS2" ,"TCSETS2" ,"TCSETSW2" ,"TCSETSF2" , -"TIOCGRS485" ,"TIOCSRS485" ,"TIOCGPTN" ,"TIOCSPTLCK" , -"TIOCGDEV||TCGETX" ,"TCSETX" ,"TCSETXF" ,"TCSETXW" ,"TIOCSIG" , -"TIOCVHANGUP" ,"TIOCGPKT" ,"TIOCGPTLCK" ,"TIOCGEXCL" , - [0x50 ] ="FIONCLEX" ,"FIOCLEX" ,"FIOASYNC" ,"TIOCSERCONFIG" , -"TIOCSERGWILD" ,"TIOCSERSWILD" ,"TIOCGLCKTRMIOS" ,"TIOCSLCKTRMIOS" , -"TIOCSERGSTRUCT" ,"TIOCSERGETLSR" ,"TIOCSERGETMULTI" ,"TIOCSERSETMULTI" , -"TIOCMIWAIT" ,"TIOCGICOUNT" , [0x60 ] ="FIOQSIZE" , -}; - -static DEFINE_STRARRAY_OFFSET(tioctls, 0x5401); -#endif /* defined(__i386__) || defined(__x86_64__) */ -#ifndef GRND_NONBLOCK #define GRND_NONBLOCK 0x0001#endif
@@ -670,8 +629,7 @@ static struct syscall_fmt {/* * FIXME: Make this available to all arches. */ - [1] = { .scnprintf = SCA_STRHEXARRAY, /* cmd */ - .parm = &strarray__tioctls, }, + [1] = { .scnprintf = SCA_IOCTL_CMD, /* cmd */ }, [2] = { .scnprintf = SCA_HEX, /* arg */ }, }, }, #else [2] = { .scnprintf = SCA_HEX, /* arg */ }, }, },
tools/perf/trace/beauty/Build +3 -0
@@ -1,3 +1,6 @@ libperf-y += clone.o libperf-y += fcntl.o +ifeq ($(SRCARCH),$(filter $(SRCARCH),x86)) +libperf-y += ioctl.o +endif libperf-y += statx.o
tools/perf/trace/beauty/beauty.h +3 -0
@@ -75,6 +75,9 @@ size_t syscall_arg__scnprintf_fcntl_cmd(char *bf, size_t size, struct syscall_arsize_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_ioctl_cmd (char *bf,size_t size,struct syscall_arg *arg); +#define SCA_IOCTL_CMD syscall_arg__scnprintf_ioctl_cmd +size_t syscall_arg__scnprintf_open_flags (char *bf,size_t size,struct syscall_arg *arg);#define SCA_OPEN_FLAGS syscall_arg__scnprintf_open_flags
tools/perf/trace/beauty/ioctl.c new file +88 -0
88 lines not on this page · raw message