perf trace: Allow asking for not suppressing common string prefixes
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: c65c83ffe904590162bd762be185ac4d53ce5a85 Gitweb: https://git.kernel.org/tip/c65c83ffe904590162bd762be185ac4d53ce5a85 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Fri, 14 Dec 2018 17:06:47 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 18 Dec 2018 16:07:42 -0300
perf trace: Allow asking for not suppressing common string prefixes
So far we've been suppressing common stuff such as "MAP_" in the mmap flags, showing "SHARED" instead of "MAP_SHARED", allow for those prefixes (and a few suffixes) to be shown:
# trace -e *map,open*,*seek sleep 1
openat("/etc/ld.so.cache", CLOEXEC) = 3
mmap(0, 109093, READ, PRIVATE, 3, 0) = 0x7ff61c695000
openat("/lib64/libc.so.6", CLOEXEC) = 3
lseek(3, 792, SET) = 792
mmap(0, 8192, READ|WRITE, PRIVATE|ANONYMOUS) = 0x7ff61c693000
lseek(3, 792, SET) = 792
lseek(3, 864, SET) = 864
mmap(0, 1857568, READ, PRIVATE|DENYWRITE, 3, 0) = 0x7ff61c4cd000
mmap(0x7ff61c4ef000, 1363968, EXEC|READ, PRIVATE|FIXED|DENYWRITE, 3, 139264) = 0x7ff61c4ef000
mmap(0x7ff61c63c000, 311296, READ, PRIVATE|FIXED|DENYWRITE, 3, 1503232) = 0x7ff61c63c000
mmap(0x7ff61c689000, 24576, READ|WRITE, PRIVATE|FIXED|DENYWRITE, 3, 1814528) = 0x7ff61c689000
mmap(0x7ff61c68f000, 14368, READ|WRITE, PRIVATE|FIXED|ANONYMOUS) = 0x7ff61c68f000
munmap(0x7ff61c695000, 109093) = 0
openat("/usr/lib/locale/locale-archive", CLOEXEC) = 3
mmap(0, 217749968, READ, PRIVATE, 3, 0) = 0x7ff60f523000
#
# vim ~/.perfconfig
#
# perf config
llvm.dump-obj=true
trace.add_events=/home/acme/git/perf/tools/perf/examples/bpf/augmented_raw_syscalls.o
trace.show_zeros=yes
trace.show_duration=no
trace.no_inherit=yes
trace.show_timestamp=no
trace.show_arg_names=no
trace.args_alignment=0
trace.string_quote="
trace.show_prefix=yes
#
#
# trace -e *map,open*,*seek sleep 1
openat(AT_FDCWD, "/etc/ld.so.cache", O_CLOEXEC) = 3
mmap(0, 109093, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7ebbe59000
openat(AT_FDCWD, "/lib64/libc.so.6", O_CLOEXEC) = 3
lseek(3, 792, SEEK_SET) = 792
mmap(0, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS) = 0x7f7ebbe57000
lseek(3, 792, SEEK_SET) = 792
lseek(3, 864, SEEK_SET) = 864
mmap(0, 1857568, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f7ebbc91000
mmap(0x7f7ebbcb3000, 1363968, PROT_EXEC|PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 139264) = 0x7f7ebbcb3000
mmap(0x7f7ebbe00000, 311296, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 1503232) = 0x7f7ebbe00000
mmap(0x7f7ebbe4d000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 1814528) = 0x7f7ebbe4d000
mmap(0x7f7ebbe53000, 14368, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS) = 0x7f7ebbe53000
munmap(0x7f7ebbe59000, 109093) = 0
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_CLOEXEC) = 3
mmap(0, 217749968, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7eaece7000
#Cc Adrian Hunter <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Luis Cláudio Gonçalves <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/Documentation/perf-config.txt | 4 ++++ tools/perf/builtin-trace.c | 30 ++++++++++++++++++++---------- tools/perf/trace/beauty/beauty.h | 8 +++++--- tools/perf/trace/beauty/clone.c | 7 ++++--- tools/perf/trace/beauty/eventfd.c | 4 +++- tools/perf/trace/beauty/fcntl.c | 20 +++++++++++--------- tools/perf/trace/beauty/flock.c | 4 +++- tools/perf/trace/beauty/futex_op.c | 8 +++++--- tools/perf/trace/beauty/futex_val3.c | 3 ++- tools/perf/trace/beauty/ioctl.c | 15 +++++++++------ tools/perf/trace/beauty/kcmp.c | 6 +++--- tools/perf/trace/beauty/mmap.c | 16 ++++++++++------ tools/perf/trace/beauty/mode_t.c | 4 +++- tools/perf/trace/beauty/mount_flags.c | 6 +++--- tools/perf/trace/beauty/msg_flags.c | 4 +++- tools/perf/trace/beauty/open_flags.c | 11 ++++++----- tools/perf/trace/beauty/perf_event_open.c | 4 +++- tools/perf/trace/beauty/pkey_alloc.c | 12 ++++++------ tools/perf/trace/beauty/prctl.c | 12 ++++++------ tools/perf/trace/beauty/renameat.c | 6 +++--- tools/perf/trace/beauty/sched_policy.c | 6 ++++-- tools/perf/trace/beauty/seccomp.c | 8 ++++++-- tools/perf/trace/beauty/signum.c | 4 +++- tools/perf/trace/beauty/sockaddr.c | 2 +- tools/perf/trace/beauty/socket.c | 6 +++--- tools/perf/trace/beauty/socket_type.c | 4 +++- tools/perf/trace/beauty/statx.c | 10 +++++++--- tools/perf/trace/beauty/waitid_options.c | 4 +++- 28 files changed, 142 insertions(+), 86 deletions(-)
tools/perf/Documentation/perf-config.txt +4 -0
@@ -543,6 +543,10 @@ trace.*:: trace.show_duration:: Show syscall duration. + trace.show_prefix:: + If set to 'yes' will show common string prefixes in tables. The default + is to remove the common prefix in things like "MAP_SHARED", showing just "SHARED". + trace.show_timestamp:: Show syscall start timestamp.
tools/perf/builtin-trace.c +20 -10
@@ -132,6 +132,7 @@ struct trace {bool show_duration;bool show_zeros;bool show_arg_names; +bool show_string_prefix;bool force;bool vfs_getname;int trace_pgfaults;
@@ -360,21 +361,21 @@ out_delete: ({struct syscall_tp *fields = evsel->priv; \ fields->name.pointer(&fields->name, sample); }) -size_t strarray__scnprintf (struct strarray *sa,char *bf,size_t size,const char *intfmt,int val) +size_t strarray__scnprintf (struct strarray *sa,char *bf,size_t size,const char *intfmt,bool show_prefix,int val) {int idx = val - sa->offset;if (idx <0 || idx >= sa->nr_entries || sa->entries[idx] ==NULL )return scnprintf (bf, size, intfmt, val); -return scnprintf (bf, size,"%s" , sa->entries[idx]); +return scnprintf (bf, size,"%s%s" , show_prefix ? sa->prefix :"" , sa->entries[idx]); }static size_t __syscall_arg__scnprintf_strarray (char *bf,size_t size,const char *intfmt,struct syscall_arg *arg) { -return strarray__scnprintf (arg->parm, bf, size, intfmt, arg->val); +return strarray__scnprintf (arg->parm, bf, size, intfmt, arg->show_string_prefix, arg->val); } static size_t syscall_arg__scnprintf_strarray(char *bf, size_t size,
@@ -408,7 +409,7 @@ size_t syscall_arg__scnprintf_strarrays(char *bf, size_t size,if (idx >=0 && idx < sa->nr_entries) {if (sa->entries[idx] ==NULL )break ; -return scnprintf (bf, size,"%s" , sa->entries[idx]); +return scnprintf (bf, size,"%s%s" , arg->show_string_prefix ? sa->prefix :"" , sa->entries[idx]); } }
@@ -423,10 +424,10 @@ static size_t syscall_arg__scnprintf_fd_at(char *bf, size_t size, struct syscall_arg *arg) {int fd = arg->val; -/* char fd_at_prefix = "AT_FD"; */ +const char *prefix ="AT_FD" ;if (fd ==AT_FDCWD ) -return scnprintf (bf, size,"CWD" ); +return scnprintf (bf, size,"%s%s" , arg->show_string_prefix ? prefix :"" ,"CWD" );return syscall_arg__scnprintf_fd (bf, size, arg); }
@@ -527,14 +528,16 @@ static DEFINE_STRARRAY(clockid, "CLOCK_");static size_t syscall_arg__scnprintf_access_mode (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *suffix ="_OK" ;size_t printed =0 ;int mode = arg->val;if (mode ==F_OK )/* 0 */ -return scnprintf (bf, size,"F" ); +return scnprintf (bf, size,"F%s" , show_prefix ? suffix :"" );#define P_MODE (n) \ if (mode & n##_OK) { \ - printed += scnprintf(bf + printed, size - printed, "%s", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s", #n, show_prefix ? suffix : ""); \ mode &= ~n##_OK; \ }
@@ -559,11 +562,13 @@ static size_t syscall_arg__scnprintf_filename(char *bf, size_t size,static size_t syscall_arg__scnprintf_pipe_flags (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="O_" ;int printed =0 , flags = arg->val;#define P_FLAG (n) \ if (flags & O_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~O_##n; \ }
@@ -589,11 +594,13 @@ static size_t syscall_arg__scnprintf_pipe_flags(char *bf, size_t size,static size_t syscall_arg__scnprintf_getrandom_flags (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="GRND_" ;int printed =0 , flags = arg->val;#define P_FLAG (n) \ if (flags & GRND_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~GRND_##n; \ }
@@ -1577,6 +1584,7 @@ static size_t syscall__scnprintf_args(struct syscall *sc, char *bf, size_t size, .mask = 0, .trace = trace, .thread = thread, + .show_string_prefix = trace->show_string_prefix, };struct thread_trace *ttrace =thread__priv (thread);
@@ -3563,6 +3571,8 @@ static int trace__config(const char *var, const char *value, void *arg) goto out; } trace->show_zeros = new_show_zeros; + }else if (!strcmp (var,"trace.show_prefix" )) { + trace->show_string_prefix =perf_config_bool (var, value); }else if (!strcmp (var,"trace.no_inherit" )) { trace->opts.no_inherit =perf_config_bool (var, value); }else if (!strcmp (var,"trace.args_alignment" )) {
tools/perf/trace/beauty/beauty.h +5 -3
@@ -26,8 +26,8 @@ struct strarray { .prefix = _prefix, \ } -size_t strarray__scnprintf (struct strarray *sa,char *bf,size_t size,const char *intfmt,int val); -size_t strarray__scnprintf_flags (struct strarray *sa,char *bf,size_t size,unsigned long flags); +size_t strarray__scnprintf (struct strarray *sa,char *bf,size_t size,const char *intfmt,bool show_prefix,int val); +size_t strarray__scnprintf_flags (struct strarray *sa,char *bf,size_t size,bool show_prefix,unsigned long flags);struct trace ;struct thread ;
@@ -69,6 +69,7 @@ struct augmented_arg {* @parm: private area, may be an strarray, for instance * @idx: syscall arg idx (is this the first?) * @mask: a syscall arg may mask another arg, see syscall_arg__scnprintf_futex_op +* @show_string_prefix: When there is a common prefix in a string table, show it or not */ struct syscall_arg {
@@ -83,6 +84,7 @@ struct syscall_arg {void *parm;u8 idx;u8 mask; +bool show_string_prefix; };unsigned long syscall_arg__val (struct syscall_arg *arg,u8 idx);
@@ -162,7 +164,7 @@ 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); +size_t open__scnprintf_flags (unsigned long flags,char *bf,size_t size,bool show_prefix);void syscall_arg__set_ret_scnprintf (struct syscall_arg *arg,size_t (*ret_scnprintf)(char *bf,size_t size,struct syscall_arg *arg));
tools/perf/trace/beauty/clone.c +4 -3
@@ -10,13 +10,14 @@#include <sys/types.h> #include <uapi/linux/sched.h> -static size_t clone__scnprintf_flags (unsigned long flags,char *bf,size_t size) +static size_t clone__scnprintf_flags (unsigned long flags,char *bf,size_t size,bool show_prefix) { +const char *prefix ="CLONE_" ;int printed =0 ;#define P_FLAG (n) \ if (flags & CLONE_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~CLONE_##n; \ }
@@ -70,5 +71,5 @@ size_t syscall_arg__scnprintf_clone_flags(char *bf, size_t size, struct syscall_if (!(flags &CLONE_SETTLS )) arg->mask |=SCC_TLS ; -return clone__scnprintf_flags (flags, bf, size); +return clone__scnprintf_flags (flags, bf, size, arg->show_string_prefix); }
tools/perf/trace/beauty/eventfd.c +3 -1
@@ -13,13 +13,15 @@static size_t syscall_arg__scnprintf_eventfd_flags (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="EFD_" ;int printed =0 , flags = arg->val;if (flags ==0 )return scnprintf (bf, size,"NONE" );#define P_FLAG (n) \ if (flags & EFD_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~EFD_##n; \ }
tools/perf/trace/beauty/fcntl.c +11 -9
@@ -9,27 +9,28 @@#include <linux/kernel.h> #include <uapi/linux/fcntl.h> -static size_t fcntl__scnprintf_getfd (unsigned long val,char *bf,size_t size) +static size_t fcntl__scnprintf_getfd (unsigned long val,char *bf,size_t size,bool show_prefix) { -return scnprintf (bf, size,"%s" , val ?"CLOEXEC" :"0" ); +return val ?scnprintf (bf, size,"%s" ,"0" ) : +scnprintf (bf, size,"%s%s" , show_prefix ?"FD_" :"" ,"CLOEXEC" ); }static size_t syscall_arg__scnprintf_fcntl_getfd (char *bf,size_t size,struct syscall_arg *arg) { -return fcntl__scnprintf_getfd (arg->val, bf, size); +return fcntl__scnprintf_getfd (arg->val, bf, size, arg->show_string_prefix); } -static size_t fcntl__scnprintf_getlease (unsigned long val,char *bf,size_t size) +static size_t fcntl__scnprintf_getlease (unsigned long val,char *bf,size_t size,bool show_prefix) {static const char *fcntl_setlease[] = {"RDLCK" ,"WRLCK" ,"UNLCK" , }; static DEFINE_STRARRAY(fcntl_setlease, "F_"); -return strarray__scnprintf (&strarray__fcntl_setlease, bf, size,"%x" , val); +return strarray__scnprintf (&strarray__fcntl_setlease, bf, size,"%x" , show_prefix, val); }static size_t syscall_arg__scnprintf_fcntl_getlease (char *bf,size_t size,struct syscall_arg *arg) { -return fcntl__scnprintf_getlease (arg->val, bf, size); +return fcntl__scnprintf_getlease (arg->val, bf, size, arg->show_string_prefix); }size_t syscall_arg__scnprintf_fcntl_cmd (char *bf,size_t size,struct syscall_arg *arg)
@@ -68,22 +69,23 @@ out:size_t syscall_arg__scnprintf_fcntl_arg (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix;int cmd =syscall_arg__val (arg,1 );if (cmd ==F_DUPFD )return syscall_arg__scnprintf_fd (bf, size, arg);if (cmd ==F_SETFD ) -return fcntl__scnprintf_getfd (arg->val, bf, size); +return fcntl__scnprintf_getfd (arg->val, bf, size, show_prefix);if (cmd ==F_SETFL ) -return open__scnprintf_flags (arg->val, bf, size); +return open__scnprintf_flags (arg->val, bf, size, show_prefix);if (cmd ==F_SETOWN )return syscall_arg__scnprintf_pid (bf, size, arg);if (cmd ==F_SETLEASE ) -return fcntl__scnprintf_getlease (arg->val, bf, size); +return fcntl__scnprintf_getlease (arg->val, bf, size, show_prefix);/* * We still don't grab the contents of pointers on entry or exit, * so just print them as hex numbers
tools/perf/trace/beauty/flock.c +3 -1
@@ -22,13 +22,15 @@size_t syscall_arg__scnprintf_flock (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="LOCK_" ;int printed =0 , op = arg->val;if (op ==0 )return scnprintf (bf, size,"NONE" );#define P_CMD (cmd) \ if ((op & LOCK_##cmd) == LOCK_##cmd) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #cmd); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #cmd); \ op &= ~LOCK_##cmd; \ }
tools/perf/trace/beauty/futex_op.c +5 -3
@@ -19,6 +19,8 @@static size_t syscall_arg__scnprintf_futex_op (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="FUTEX_" ;enum syscall_futex_args {SCF_UADDR = (1 <<0 ),SCF_OP = (1 <<1 ),
@@ -32,7 +34,7 @@ static size_t syscall_arg__scnprintf_futex_op(char *bf, size_t size, struct syscsize_t printed =0 ;switch (cmd) { -#define P_FUTEX_OP (n) case FUTEX_##n: printed = scnprintf(bf, size, #n); +#define P_FUTEX_OP (n) case FUTEX_##n: printed = scnprintf(bf, size, "%s%s", show_prefix ? prefix : "", #n);P_FUTEX_OP (WAIT ); arg->mask |=SCF_VAL3 |SCF_UADDR2 ;break ;P_FUTEX_OP (WAKE ); arg->mask |=SCF_VAL3 |SCF_UADDR2 |SCF_TIMEOUT ;break ;P_FUTEX_OP (FD ); arg->mask |=SCF_VAL3 |SCF_UADDR2 |SCF_TIMEOUT ;break ;
@@ -50,10 +52,10 @@ static size_t syscall_arg__scnprintf_futex_op(char *bf, size_t size, struct sysc }if (op &FUTEX_PRIVATE_FLAG ) - printed +=scnprintf (bf + printed, size - printed,"|PRIV" ); + printed +=scnprintf (bf + printed, size - printed,"|%s%s" , show_prefix ? prefix :"" ,"PRIVATE_FLAG" );if (op &FUTEX_CLOCK_REALTIME ) - printed +=scnprintf (bf + printed, size - printed,"|CLKRT" ); + printed +=scnprintf (bf + printed, size - printed,"|%s%s" , show_prefix ? prefix :"" ,"CLOCK_REALTIME" );return printed; }
tools/perf/trace/beauty/futex_val3.c +2 -1
@@ -7,10 +7,11 @@static size_t syscall_arg__scnprintf_futex_val3 (char *bf,size_t size,struct syscall_arg *arg) { +const char *prefix ="FUTEX_BITSET_" ;unsigned int bitset = arg->val;if (bitset ==FUTEX_BITSET_MATCH_ANY ) -return scnprintf (bf, size,"MATCH_ANY" ); +return scnprintf (bf, size,"%s%s" , arg->show_string_prefix ? prefix :"" ,"MATCH_ANY" );return scnprintf (bf, size,"%#xd" , bitset); }
tools/perf/trace/beauty/ioctl.c +9 -6
@@ -112,8 +112,9 @@ static size_t ioctl__scnprintf_perf_cmd(int nr, int dir, char *bf, size_t size)return scnprintf (bf, size,"(%#x, %#x, %#x)" ,0xAE , nr, dir); } -static size_t ioctl__scnprintf_cmd (unsigned long cmd,char *bf,size_t size) +static size_t ioctl__scnprintf_cmd (unsigned long cmd,char *bf,size_t size,bool show_prefix) { +const char *prefix ="_IOC_" ;int dir =_IOC_DIR (cmd), type =_IOC_TYPE (cmd), nr = _IOC_NR(cmd),
@@ -143,12 +144,14 @@ static size_t ioctl__scnprintf_cmd(unsigned long cmd, char *bf, size_t size) printed +=scnprintf (bf + printed, size - printed,"%c" ,'(' );if (dir == _IOC_NONE) { - printed +=scnprintf (bf + printed, size - printed,"%s" ,"NONE" ); + printed +=scnprintf (bf + printed, size - printed,"%s%s" , show_prefix ? prefix :"" ,"NONE" ); }else {if (dir & _IOC_READ) - printed +=scnprintf (bf + printed, size - printed,"%s" ,"READ" ); -if (dir & _IOC_WRITE) - printed +=scnprintf (bf + printed, size - printed,"%s%s" , dir & _IOC_READ ?"|" :"" ,"WRITE" ); + printed +=scnprintf (bf + printed, size - printed,"%s%s" , show_prefix ? prefix :"" ,"READ" ); +if (dir & _IOC_WRITE) { + printed +=scnprintf (bf + printed, size - printed,"%s%s%s" , dir & _IOC_READ ?"|" :"" , + show_prefix ? prefix :"" ,"WRITE" ); + } }return printed +scnprintf (bf + printed, size - printed,", %#x, %#x, %#x)" , type, nr, sz);
@@ -158,5 +161,5 @@ size_t syscall_arg__scnprintf_ioctl_cmd(char *bf, size_t size, struct syscall_ar {unsigned long cmd = arg->val; -return ioctl__scnprintf_cmd (cmd, bf, size); +return ioctl__scnprintf_cmd (cmd, bf, size, arg->show_string_prefix); }
tools/perf/trace/beauty/kcmp.c +3 -3
@@ -26,10 +26,10 @@ size_t syscall_arg__scnprintf_kcmp_idx(char *bf, size_t size, struct syscall_argreturn pid__scnprintf_fd (arg->trace, pid, fd, bf, size); } -static size_t kcmp__scnprintf_type (int type,char *bf,size_t size) +static size_t kcmp__scnprintf_type (int type,char *bf,size_t size,bool show_prefix) { static DEFINE_STRARRAY(kcmp_types, "KCMP_"); -return strarray__scnprintf (&strarray__kcmp_types, bf, size,"%d" , type); +return strarray__scnprintf (&strarray__kcmp_types, bf, size,"%d" , show_prefix, type); }size_t syscall_arg__scnprintf_kcmp_type (char *bf,size_t size,struct syscall_arg *arg)
@@ -39,5 +39,5 @@ size_t syscall_arg__scnprintf_kcmp_type(char *bf, size_t size, struct syscall_arif (type !=KCMP_FILE ) arg->mask |= (1 <<3 ) | (1 <<4 );/* Ignore idx1 and idx2 */ -return kcmp__scnprintf_type (type, bf, size); +return kcmp__scnprintf_type (type, bf, size, arg->show_string_prefix); }
tools/perf/trace/beauty/mmap.c +10 -6
@@ -5,13 +5,15 @@static size_t syscall_arg__scnprintf_mmap_prot (char *bf,size_t size,struct syscall_arg *arg) { +const char *prot_prefix ="PROT_" ;int printed =0 , prot = arg->val; +bool show_prefix = arg->show_string_prefix;if (prot ==PROT_NONE ) -return scnprintf (bf, size,"NONE" ); +return scnprintf (bf, size,"%sNONE" , show_prefix ? prot_prefix :"" );#define P_MMAP_PROT (n) \ if (prot & PROT_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prot_prefix :"", #n); \ prot &= ~PROT_##n; \ }
@@ -31,12 +33,12 @@ static size_t syscall_arg__scnprintf_mmap_prot(char *bf, size_t size,#define SCA_MMAP_PROT syscall_arg__scnprintf_mmap_prot -static size_t mmap__scnprintf_flags (unsigned long flags,char *bf,size_t size) +static size_t mmap__scnprintf_flags (unsigned long flags,char *bf,size_t size,bool show_prefix) {#include "trace/beauty/generated/mmap_flags_array.c" static DEFINE_STRARRAY(mmap_flags, "MAP_"); -return strarray__scnprintf_flags (&strarray__mmap_flags, bf, size, flags); +return strarray__scnprintf_flags (&strarray__mmap_flags, bf, size, show_prefix, flags); } static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size,
@@ -47,7 +49,7 @@ static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size,if (flags &MAP_ANONYMOUS ) arg->mask |= (1 <<4 ) | (1 <<5 );/* Mask 4th ('fd') and 5th ('offset') args, ignored */ -return mmap__scnprintf_flags (flags, bf, size); +return mmap__scnprintf_flags (flags, bf, size, arg->show_string_prefix); }#define SCA_MMAP_FLAGS syscall_arg__scnprintf_mmap_flags
@@ -55,11 +57,13 @@ static size_t syscall_arg__scnprintf_mmap_flags(char *bf, size_t size,static size_t syscall_arg__scnprintf_mremap_flags (char *bf,size_t size,struct syscall_arg *arg) { +const char *flags_prefix ="MREMAP_" ; +bool show_prefix = arg->show_string_prefix;int printed =0 , flags = arg->val;#define P_MREMAP_FLAG (n) \ if (flags & MREMAP_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? flags_prefix : "", #n); \ flags &= ~MREMAP_##n; \ }
tools/perf/trace/beauty/mode_t.c +3 -1
@@ -22,11 +22,13 @@static size_t syscall_arg__scnprintf_mode_t (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="S_" ;int printed =0 , mode = arg->val;#define P_MODE (n) \ if ((mode & S_##n) == S_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ mode &= ~S_##n; \ }
tools/perf/trace/beauty/mount_flags.c +3 -3
@@ -11,12 +11,12 @@#include <linux/log2.h> #include <sys/mount.h> -static size_t mount__scnprintf_flags (unsigned long flags,char *bf,size_t size) +static size_t mount__scnprintf_flags (unsigned long flags,char *bf,size_t size,bool show_prefix) {#include "trace/beauty/generated/mount_flags_array.c" static DEFINE_STRARRAY(mount_flags, "MS_"); -return strarray__scnprintf_flags (&strarray__mount_flags, bf, size, flags); +return strarray__scnprintf_flags (&strarray__mount_flags, bf, size, show_prefix, flags); }unsigned long syscall_arg__mask_val_mount_flags (struct syscall_arg *arg__maybe_unused ,unsigned long flags)
@@ -39,5 +39,5 @@ size_t syscall_arg__scnprintf_mount_flags(char *bf, size_t size, struct syscall_ {unsigned long flags = arg->val; -return mount__scnprintf_flags (flags, bf, size); +return mount__scnprintf_flags (flags, bf, size, arg->show_string_prefix); }
tools/perf/trace/beauty/msg_flags.c +3 -1
@@ -21,13 +21,15 @@static size_t syscall_arg__scnprintf_msg_flags (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="MSG_" ;int printed =0 , flags = arg->val;if (flags ==0 )return scnprintf (bf, size,"NONE" );#define P_MSG_FLAG (n) \ if (flags & MSG_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~MSG_##n; \ }
tools/perf/trace/beauty/open_flags.c +6 -5
@@ -22,15 +22,16 @@#undef O_LARGEFILE#define O_LARGEFILE 00100000 -size_t open__scnprintf_flags (unsigned long flags,char *bf,size_t size) +size_t open__scnprintf_flags (unsigned long flags,char *bf,size_t size,bool show_prefix) { +const char *prefix ="O_" ;int printed =0 ;if (flags ==0 ) -return scnprintf (bf, size,"RDONLY" ); +return scnprintf (bf, size,"%s%s" , show_prefix ? prefix :"" ,"RDONLY" );#define P_FLAG (n) \ if (flags & O_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~O_##n; \ }
@@ -57,7 +58,7 @@ size_t open__scnprintf_flags(unsigned long flags, char *bf, size_t size)#endif #ifdef O_DSYNC if ((flags &O_SYNC ) ==O_SYNC ) - printed +=scnprintf (bf + printed, size - printed,"%s%s" , printed ?"|" :"" ,"SYNC" ); + printed +=scnprintf (bf + printed, size - printed,"%s%s%s" , printed ?"|" :"" , show_prefix ? prefix :"" ,"SYNC" );else {P_FLAG (DSYNC ); }
@@ -81,5 +82,5 @@ size_t syscall_arg__scnprintf_open_flags(char *bf, size_t size, struct syscall_aif (!(flags &O_CREAT )) arg->mask |=1 << (arg->idx +1 );/* Mask the mode parm */ -return open__scnprintf_flags (flags, bf, size); +return open__scnprintf_flags (flags, bf, size, arg->show_string_prefix); }
tools/perf/trace/beauty/perf_event_open.c +3 -1
@@ -18,6 +18,8 @@static size_t syscall_arg__scnprintf_perf_flags (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="PERF_" ;int printed =0 , flags = arg->val;if (flags ==0 )
@@ -25,7 +27,7 @@ static size_t syscall_arg__scnprintf_perf_flags(char *bf, size_t size,#define P_FLAG (n) \ if (flags & PERF_FLAG_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~PERF_FLAG_##n; \ }
tools/perf/trace/beauty/pkey_alloc.c +6 -6
@@ -9,14 +9,14 @@#include <linux/kernel.h> #include <linux/log2.h> -size_t strarray__scnprintf_flags (struct strarray *sa,char *bf,size_t size,unsigned long flags) +size_t strarray__scnprintf_flags (struct strarray *sa,char *bf,size_t size,bool show_prefix,unsigned long flags) {int i, printed =0 ;if (flags ==0 ) {const char *s = sa->entries[0 ];if (s) -return scnprintf (bf, size,"%s" , s); +return scnprintf (bf, size,"%s%s" , show_prefix ? sa->prefix :"" , s);return scnprintf (bf, size,"%d" ,0 ); }
@@ -30,7 +30,7 @@ size_t strarray__scnprintf_flags(struct strarray *sa, char *bf, size_t size, uns printed +=scnprintf (bf + printed, size - printed,"|" );if (sa->entries[i] !=NULL ) - printed +=scnprintf (bf + printed, size - printed,"%s" , sa->entries[i]); + printed +=scnprintf (bf + printed, size - printed,"%s%s" , show_prefix ? sa->prefix :"" , sa->entries[i]);else printed +=scnprintf (bf + printed, size - printed,"0x%#" , bit); }
@@ -38,17 +38,17 @@ size_t strarray__scnprintf_flags(struct strarray *sa, char *bf, size_t size, unsreturn printed; } -static size_t pkey_alloc__scnprintf_access_rights (int access_rights,char *bf,size_t size) +static size_t pkey_alloc__scnprintf_access_rights (int access_rights,char *bf,size_t size,bool show_prefix) {#include "trace/beauty/generated/pkey_alloc_access_rights_array.c" static DEFINE_STRARRAY(pkey_alloc_access_rights, "PKEY_"); -return strarray__scnprintf_flags (&strarray__pkey_alloc_access_rights, bf, size, access_rights); +return strarray__scnprintf_flags (&strarray__pkey_alloc_access_rights, bf, size, show_prefix, access_rights); }size_t syscall_arg__scnprintf_pkey_alloc_access_rights (char *bf,size_t size,struct syscall_arg *arg) {unsigned long cmd = arg->val; -return pkey_alloc__scnprintf_access_rights (cmd, bf, size); +return pkey_alloc__scnprintf_access_rights (cmd, bf, size, arg->show_string_prefix); }
tools/perf/trace/beauty/prctl.c +6 -6
@@ -11,16 +11,16 @@#include "trace/beauty/generated/prctl_option_array.c" -static size_t prctl__scnprintf_option (int option,char *bf,size_t size) +static size_t prctl__scnprintf_option (int option,char *bf,size_t size,bool show_prefix) { static DEFINE_STRARRAY(prctl_options, "PR_"); -return strarray__scnprintf (&strarray__prctl_options, bf, size,"%d" , option); +return strarray__scnprintf (&strarray__prctl_options, bf, size,"%d" , show_prefix, option); } -static size_t prctl__scnprintf_set_mm (int option,char *bf,size_t size) +static size_t prctl__scnprintf_set_mm (int option,char *bf,size_t size,bool show_prefix) { static DEFINE_STRARRAY(prctl_set_mm_options, "PR_SET_MM_"); -return strarray__scnprintf (&strarray__prctl_set_mm_options, bf, size,"%d" , option); +return strarray__scnprintf (&strarray__prctl_set_mm_options, bf, size,"%d" , show_prefix, option); }size_t syscall_arg__scnprintf_prctl_arg2 (char *bf,size_t size,struct syscall_arg *arg)
@@ -28,7 +28,7 @@ size_t syscall_arg__scnprintf_prctl_arg2(char *bf, size_t size, struct syscall_aint option =syscall_arg__val (arg,0 );if (option ==PR_SET_MM ) -return prctl__scnprintf_set_mm (arg->val, bf, size); +return prctl__scnprintf_set_mm (arg->val, bf, size, arg->show_string_prefix);/* * We still don't grab the contents of pointers on entry or exit, * so just print them as hex numbers
@@ -77,5 +77,5 @@ size_t syscall_arg__scnprintf_prctl_option(char *bf, size_t size, struct syscallif (option <ARRAY_SIZE (masks)) arg->mask |= masks[option]; -return prctl__scnprintf_option (option, bf, size); +return prctl__scnprintf_option (option, bf, size, arg->show_string_prefix); }
tools/perf/trace/beauty/renameat.c +3 -3
@@ -4,16 +4,16 @@#include "trace/beauty/beauty.h" #include <uapi/linux/fs.h> -static size_t renameat2__scnprintf_flags (unsigned long flags,char *bf,size_t size) +static size_t renameat2__scnprintf_flags (unsigned long flags,char *bf,size_t size,bool show_prefix) {#include "trace/beauty/generated/rename_flags_array.c" static DEFINE_STRARRAY(rename_flags, "RENAME_"); -return strarray__scnprintf_flags (&strarray__rename_flags, bf, size, flags); +return strarray__scnprintf_flags (&strarray__rename_flags, bf, size, show_prefix, 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); +return renameat2__scnprintf_flags (flags, bf, size, arg->show_string_prefix); }
tools/perf/trace/beauty/sched_policy.c +4 -2
@@ -17,6 +17,8 @@static size_t syscall_arg__scnprintf_sched_policy (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="SCHED_" ;const char *policies[] = {"NORMAL" ,"FIFO" ,"RR" ,"BATCH" ,"ISO" ,"IDLE" ,"DEADLINE" , };
@@ -26,13 +28,13 @@ static size_t syscall_arg__scnprintf_sched_policy(char *bf, size_t size, policy &=SCHED_POLICY_MASK ;if (policy <=SCHED_DEADLINE ) - printed =scnprintf (bf, size,"%s" , policies[policy]); + printed =scnprintf (bf, size,"%s%s" , show_prefix ? prefix :"" , policies[policy]);else printed =scnprintf (bf, size,"%#x" , policy);#define P_POLICY_FLAG (n) \ if (flags & SCHED_##n) { \ - printed += scnprintf(bf + printed, size - printed, "|%s", #n); \ + printed += scnprintf(bf + printed, size - printed, "|%s%s", show_prefix ? prefix : "", #n); \ flags &= ~SCHED_##n; \ }
tools/perf/trace/beauty/seccomp.c +6 -2
@@ -8,11 +8,13 @@static size_t syscall_arg__scnprintf_seccomp_op (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="SECOMP_SET_MODE_" ;int op = arg->val;size_t printed =0 ;switch (op) { -#define P_SECCOMP_SET_MODE_OP (n) case SECCOMP_SET_MODE_##n: printed = scnprintf(bf, size, #n); break +#define P_SECCOMP_SET_MODE_OP (n) case SECCOMP_SET_MODE_##n: printed = scnprintf(bf, size, "%s%s", show_prefix ? prefix : "", #n); breakP_SECCOMP_SET_MODE_OP (STRICT );P_SECCOMP_SET_MODE_OP (FILTER );#undef P_SECCOMP_SET_MODE_OP
@@ -31,11 +33,13 @@ static size_t syscall_arg__scnprintf_seccomp_op(char *bf, size_t size, struct systatic size_t syscall_arg__scnprintf_seccomp_flags (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="SECOMP_FILTER_FLAG_" ;int printed =0 , flags = arg->val;#define P_FLAG (n) \ if (flags & SECCOMP_FILTER_FLAG_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~SECCOMP_FILTER_FLAG_##n; \ }
tools/perf/trace/beauty/signum.c +3 -1
@@ -3,10 +3,12 @@static size_t syscall_arg__scnprintf_signum (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="SIG" ;int sig = arg->val;switch (sig) { -#define P_SIGNUM (n) case SIG##n: return scnprintf(bf, size, #n) +#define P_SIGNUM (n) case SIG##n: return scnprintf(bf, size, "%s%s", show_prefix ? prefix : "", #n)P_SIGNUM (HUP );P_SIGNUM (INT );P_SIGNUM (QUIT );
tools/perf/trace/beauty/sockaddr.c +1 -1
@@ -58,7 +58,7 @@ static size_t syscall_arg__scnprintf_augmented_sockaddr(struct syscall_arg *arg,char family[32 ];size_t printed; -strarray__scnprintf (&strarray__socket_families, family,sizeof (family),"%d" , sa->sa_family); +strarray__scnprintf (&strarray__socket_families, family,sizeof (family),"%d" , arg->show_string_prefix, sa->sa_family); printed =scnprintf (bf, size,"{ .family: %s" , family);if (sa->sa_family <ARRAY_SIZE (af_scnprintfs) && af_scnprintfs[sa->sa_family])
tools/perf/trace/beauty/socket.c +3 -3
@@ -9,12 +9,12 @@#include <sys/types.h> #include <sys/socket.h> -static size_t socket__scnprintf_ipproto (int protocol,char *bf,size_t size) +static size_t socket__scnprintf_ipproto (int protocol,char *bf,size_t size,bool show_prefix) {#include "trace/beauty/generated/socket_ipproto_array.c" static DEFINE_STRARRAY(socket_ipproto, "IPPROTO_"); -return strarray__scnprintf (&strarray__socket_ipproto, bf, size,"%d" , protocol); +return strarray__scnprintf (&strarray__socket_ipproto, bf, size,"%d" , show_prefix, protocol); }size_t syscall_arg__scnprintf_socket_protocol (char *bf,size_t size,struct syscall_arg *arg)
@@ -22,7 +22,7 @@ size_t syscall_arg__scnprintf_socket_protocol(char *bf, size_t size, struct syscint domain =syscall_arg__val (arg,0 );if (domain ==AF_INET || domain ==AF_INET6 ) -return socket__scnprintf_ipproto (arg->val, bf, size); +return socket__scnprintf_ipproto (arg->val, bf, size, arg->show_string_prefix);return syscall_arg__scnprintf_int (bf, size, arg); }
tools/perf/trace/beauty/socket_type.c +3 -1
@@ -20,6 +20,8 @@static size_t syscall_arg__scnprintf_socket_type (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="SOCK_" ;size_t printed;int type = arg->val, flags = type & ~SOCK_TYPE_MASK ;
@@ -29,7 +31,7 @@ static size_t syscall_arg__scnprintf_socket_type(char *bf, size_t size, struct s* Can't use a strarray, MIPS may override for ABI reasons. */ switch (type) { -#define P_SK_TYPE (n) case SOCK_##n: printed = scnprintf(bf, size, #n); break; +#define P_SK_TYPE (n) case SOCK_##n: printed = scnprintf(bf, size, "%s%s", show_prefix ? prefix : "", #n); break;P_SK_TYPE (STREAM );P_SK_TYPE (DGRAM );P_SK_TYPE (RAW );
tools/perf/trace/beauty/statx.c +7 -3
@@ -13,13 +13,15 @@size_t syscall_arg__scnprintf_statx_flags (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="AT_" ;int printed =0 , flags = arg->val;if (flags ==0 ) -return scnprintf (bf, size,"SYNC_AS_STAT" ); +return scnprintf (bf, size,"%s%s" , show_prefix ?"AT_STATX_" :"" ,"SYNC_AS_STAT" );#define P_FLAG (n) \ if (flags & AT_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~AT_##n; \ }
@@ -41,11 +43,13 @@ 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) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="STATX_" ;int printed =0 , flags = arg->val;#define P_FLAG (n) \ if (flags & STATX_##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ flags &= ~STATX_##n; \ }
tools/perf/trace/beauty/waitid_options.c +3 -1
@@ -5,11 +5,13 @@static size_t syscall_arg__scnprintf_waitid_options (char *bf,size_t size,struct syscall_arg *arg) { +bool show_prefix = arg->show_string_prefix; +const char *prefix ="W" ;int printed =0 , options = arg->val;#define P_OPTION (n) \ if (options & W##n) { \ - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : #n); \ options &= ~W##n; \ }