perf beauty open: Detach the syscall_arg agnostic bits from the flags formatter
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: b239ad28a8c9571c45e62e486ce75ebad17de6c1 Gitweb: http://git.kernel.org/tip/b239ad28a8c9571c45e62e486ce75ebad17de6c1 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Fri, 14 Jul 2017 11:18:41 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 18 Jul 2017 23:13:57 -0300
perf beauty open: Detach the syscall_arg agnostic bits from the flags formatter
We may want to use this in other contexts, like when formatting the return of fcntl(fd, F_GETFL).
Make it have the following signature, so that we can set the formatter for the return argument while processing the arguments of a syscall, as fcntl, for instance, may return fds, flags, etc, so need different return value formatters:
size_t formatter(unsigned long value, char *bf, size_t size);
This gets so detached from 'perf trace' internals that we may well get all these and move to a tools/lib/syscall_beauty/ library at some point and use it in other tools/ living utilities.
Cc Adrian Hunter <[email protected]>
Cc Alexei Starovoitov <[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/beauty.h | 2 ++ tools/perf/trace/beauty/open_flags.c | 19 +++++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-)
tools/perf/trace/beauty/beauty.h +2 -0
@@ -52,4 +52,6 @@ size_t syscall_arg__scnprintf_statx_flags(char *bf, size_t size, struct syscall_size_t syscall_arg__scnprintf_statx_mask (char *bf,size_t size,struct syscall_arg *arg);#define SCA_STATX_MASK syscall_arg__scnprintf_statx_mask +size_t open__scnprintf_flags (unsigned long flags,char *bf,size_t size); +#endif /* _PERF_TRACE_BEAUTY_H */
tools/perf/trace/beauty/open_flags.c +13 -6
@@ -14,13 +14,9 @@#define O_NOATIME 01000000#endif -static size_t syscall_arg__scnprintf_open_flags (char *bf,size_t size, -struct syscall_arg *arg) +size_t open__scnprintf_flags (unsigned long flags,char *bf,size_t size) { -int printed =0 , flags = arg->val; - -if (!(flags &O_CREAT )) - arg->mask |=1 << (arg->idx +1 );/* Mask the mode parm */ +int printed =0 ;if (flags ==0 )return scnprintf (bf, size,"RDONLY" );
@@ -68,4 +64,15 @@ static size_t syscall_arg__scnprintf_open_flags(char *bf, size_t size,return printed; } +static size_t syscall_arg__scnprintf_open_flags (char *bf,size_t size,struct syscall_arg *arg) +{ +int flags = arg->val; + +if (!(flags &O_CREAT )) + arg->mask |=1 << (arg->idx +1 );/* Mask the mode parm */ + +return open__scnprintf_flags (flags, bf, size); +} + +#define SCA_OPEN_FLAGS syscall_arg__scnprintf_open_flags