Skip to content

Commit 1f63139

Browse files
committed
perf trace beauty: Simplify syscall return formatting
Removing syscall_fmt::err_msg and instead always formatting negative returns as errno values. With this we can remove a lot of entries that have no special handling besides the ones we can do by looking at the tracefs format files, i.e. the types for the fields (e.g. pid_t), well known names (e.g. fd). 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]> Link: http://lkml.kernel.org/n/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent befecc8 commit 1f63139

File tree

1 file changed

+81
-128
lines changed

1 file changed

+81
-128
lines changed

tools/perf/builtin-trace.c

Lines changed: 81 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -611,77 +611,53 @@ static struct syscall_fmt {
611611
const char *name;
612612
const char *alias;
613613
struct syscall_arg_fmt arg[6];
614-
bool errmsg;
615614
bool errpid;
616615
bool timeout;
617616
bool hexret;
618617
} syscall_fmts[] = {
619-
{ .name = "access", .errmsg = true,
618+
{ .name = "access",
620619
.arg = { [1] = { .scnprintf = SCA_ACCMODE, /* mode */ }, }, },
621-
{ .name = "arch_prctl", .errmsg = true, .alias = "prctl", },
622-
{ .name = "bpf", .errmsg = true,
620+
{ .name = "arch_prctl", .alias = "prctl", },
621+
{ .name = "bpf",
623622
.arg = { [0] = STRARRAY(cmd, bpf_cmd), }, },
624623
{ .name = "brk", .hexret = true,
625624
.arg = { [0] = { .scnprintf = SCA_HEX, /* brk */ }, }, },
626-
{ .name = "chdir", .errmsg = true, },
627-
{ .name = "chmod", .errmsg = true, },
628-
{ .name = "chroot", .errmsg = true, },
629-
{ .name = "clock_gettime", .errmsg = true,
625+
{ .name = "clock_gettime",
630626
.arg = { [0] = STRARRAY(clk_id, clockid), }, },
631627
{ .name = "clone", .errpid = true, },
632-
{ .name = "close", .errmsg = true,
628+
{ .name = "close",
633629
.arg = { [0] = { .scnprintf = SCA_CLOSE_FD, /* fd */ }, }, },
634-
{ .name = "connect", .errmsg = true, },
635-
{ .name = "creat", .errmsg = true, },
636-
{ .name = "dup", .errmsg = true, },
637-
{ .name = "dup2", .errmsg = true, },
638-
{ .name = "dup3", .errmsg = true, },
639-
{ .name = "epoll_ctl", .errmsg = true,
630+
{ .name = "epoll_ctl",
640631
.arg = { [1] = STRARRAY(op, epoll_ctl_ops), }, },
641-
{ .name = "eventfd2", .errmsg = true,
632+
{ .name = "eventfd2",
642633
.arg = { [1] = { .scnprintf = SCA_EFD_FLAGS, /* flags */ }, }, },
643-
{ .name = "faccessat", .errmsg = true, },
644-
{ .name = "fadvise64", .errmsg = true, },
645-
{ .name = "fallocate", .errmsg = true, },
646-
{ .name = "fchdir", .errmsg = true, },
647-
{ .name = "fchmod", .errmsg = true, },
648-
{ .name = "fchmodat", .errmsg = true,
634+
{ .name = "fchmodat",
649635
.arg = { [0] = { .scnprintf = SCA_FDAT, /* fd */ }, }, },
650-
{ .name = "fchown", .errmsg = true, },
651-
{ .name = "fchownat", .errmsg = true,
636+
{ .name = "fchownat",
652637
.arg = { [0] = { .scnprintf = SCA_FDAT, /* fd */ }, }, },
653-
{ .name = "fcntl", .errmsg = true,
638+
{ .name = "fcntl",
654639
.arg = { [1] = { .scnprintf = SCA_FCNTL_CMD, /* cmd */
655640
.parm = &strarrays__fcntl_cmds_arrays,
656641
.show_zero = true, },
657642
[2] = { .scnprintf = SCA_FCNTL_ARG, /* arg */ }, }, },
658-
{ .name = "fdatasync", .errmsg = true, },
659-
{ .name = "flock", .errmsg = true,
643+
{ .name = "flock",
660644
.arg = { [1] = { .scnprintf = SCA_FLOCK, /* cmd */ }, }, },
661-
{ .name = "fsetxattr", .errmsg = true, },
662-
{ .name = "fstat", .errmsg = true, .alias = "newfstat", },
663-
{ .name = "fstatat", .errmsg = true, .alias = "newfstatat", },
664-
{ .name = "fstatfs", .errmsg = true, },
665-
{ .name = "fsync", .errmsg = true, },
666-
{ .name = "ftruncate", .errmsg = true, },
667-
{ .name = "futex", .errmsg = true,
645+
{ .name = "fstat", .alias = "newfstat", },
646+
{ .name = "fstatat", .alias = "newfstatat", },
647+
{ .name = "futex",
668648
.arg = { [1] = { .scnprintf = SCA_FUTEX_OP, /* op */ }, }, },
669-
{ .name = "futimesat", .errmsg = true,
649+
{ .name = "futimesat",
670650
.arg = { [0] = { .scnprintf = SCA_FDAT, /* fd */ }, }, },
671-
{ .name = "getdents", .errmsg = true, },
672-
{ .name = "getdents64", .errmsg = true, },
673-
{ .name = "getitimer", .errmsg = true,
651+
{ .name = "getitimer",
674652
.arg = { [0] = STRARRAY(which, itimers), }, },
675653
{ .name = "getpid", .errpid = true, },
676654
{ .name = "getpgid", .errpid = true, },
677655
{ .name = "getppid", .errpid = true, },
678-
{ .name = "getrandom", .errmsg = true,
656+
{ .name = "getrandom",
679657
.arg = { [2] = { .scnprintf = SCA_GETRANDOM_FLAGS, /* flags */ }, }, },
680-
{ .name = "getrlimit", .errmsg = true,
658+
{ .name = "getrlimit",
681659
.arg = { [0] = STRARRAY(resource, rlimit_resources), }, },
682-
{ .name = "getxattr", .errmsg = true, },
683-
{ .name = "inotify_add_watch", .errmsg = true, },
684-
{ .name = "ioctl", .errmsg = true,
660+
{ .name = "ioctl",
685661
.arg = {
686662
#if defined(__i386__) || defined(__x86_64__)
687663
/*
@@ -693,34 +669,25 @@ static struct syscall_fmt {
693669
#else
694670
[2] = { .scnprintf = SCA_HEX, /* arg */ }, }, },
695671
#endif
696-
{ .name = "keyctl", .errmsg = true,
672+
{ .name = "keyctl",
697673
.arg = { [0] = STRARRAY(option, keyctl_options), }, },
698-
{ .name = "kill", .errmsg = true,
674+
{ .name = "kill",
699675
.arg = { [1] = { .scnprintf = SCA_SIGNUM, /* sig */ }, }, },
700-
{ .name = "lchown", .errmsg = true, },
701-
{ .name = "lgetxattr", .errmsg = true, },
702-
{ .name = "linkat", .errmsg = true,
676+
{ .name = "linkat",
703677
.arg = { [0] = { .scnprintf = SCA_FDAT, /* fd */ }, }, },
704-
{ .name = "listxattr", .errmsg = true, },
705-
{ .name = "llistxattr", .errmsg = true, },
706-
{ .name = "lremovexattr", .errmsg = true, },
707-
{ .name = "lseek", .errmsg = true,
678+
{ .name = "lseek",
708679
.arg = { [2] = STRARRAY(whence, whences), }, },
709-
{ .name = "lsetxattr", .errmsg = true, },
710-
{ .name = "lstat", .errmsg = true, .alias = "newlstat", },
711-
{ .name = "lsxattr", .errmsg = true, },
712-
{ .name = "madvise", .errmsg = true,
680+
{ .name = "lstat", .alias = "newlstat", },
681+
{ .name = "madvise",
713682
.arg = { [0] = { .scnprintf = SCA_HEX, /* start */ },
714683
[2] = { .scnprintf = SCA_MADV_BHV, /* behavior */ }, }, },
715-
{ .name = "mkdir", .errmsg = true, },
716-
{ .name = "mkdirat", .errmsg = true,
684+
{ .name = "mkdirat",
717685
.arg = { [0] = { .scnprintf = SCA_FDAT, /* fd */ }, }, },
718-
{ .name = "mknod", .errmsg = true, },
719-
{ .name = "mknodat", .errmsg = true,
686+
{ .name = "mknodat",
720687
.arg = { [0] = { .scnprintf = SCA_FDAT, /* fd */ }, }, },
721-
{ .name = "mlock", .errmsg = true,
688+
{ .name = "mlock",
722689
.arg = { [0] = { .scnprintf = SCA_HEX, /* addr */ }, }, },
723-
{ .name = "mlockall", .errmsg = true,
690+
{ .name = "mlockall",
724691
.arg = { [0] = { .scnprintf = SCA_HEX, /* addr */ }, }, },
725692
{ .name = "mmap", .hexret = true,
726693
/* The standard mmap maps to old_mmap on s390x */
@@ -730,127 +697,109 @@ static struct syscall_fmt {
730697
.arg = { [0] = { .scnprintf = SCA_HEX, /* addr */ },
731698
[2] = { .scnprintf = SCA_MMAP_PROT, /* prot */ },
732699
[3] = { .scnprintf = SCA_MMAP_FLAGS, /* flags */ }, }, },
733-
{ .name = "mprotect", .errmsg = true,
700+
{ .name = "mprotect",
734701
.arg = { [0] = { .scnprintf = SCA_HEX, /* start */ },
735702
[2] = { .scnprintf = SCA_MMAP_PROT, /* prot */ }, }, },
736-
{ .name = "mq_unlink", .errmsg = true,
703+
{ .name = "mq_unlink",
737704
.arg = { [0] = { .scnprintf = SCA_FILENAME, /* u_name */ }, }, },
738705
{ .name = "mremap", .hexret = true,
739706
.arg = { [0] = { .scnprintf = SCA_HEX, /* addr */ },
740707
[3] = { .scnprintf = SCA_MREMAP_FLAGS, /* flags */ },
741708
[4] = { .scnprintf = SCA_HEX, /* new_addr */ }, }, },
742-
{ .name = "munlock", .errmsg = true,
709+
{ .name = "munlock",
743710
.arg = { [0] = { .scnprintf = SCA_HEX, /* addr */ }, }, },
744-
{ .name = "munmap", .errmsg = true,
711+
{ .name = "munmap",
745712
.arg = { [0] = { .scnprintf = SCA_HEX, /* addr */ }, }, },
746-
{ .name = "name_to_handle_at", .errmsg = true,
713+
{ .name = "name_to_handle_at",
747714
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
748-
{ .name = "newfstatat", .errmsg = true,
715+
{ .name = "newfstatat",
749716
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
750-
{ .name = "open", .errmsg = true,
717+
{ .name = "open",
751718
.arg = { [1] = { .scnprintf = SCA_OPEN_FLAGS, /* flags */ }, }, },
752-
{ .name = "open_by_handle_at", .errmsg = true,
719+
{ .name = "open_by_handle_at",
753720
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ },
754721
[2] = { .scnprintf = SCA_OPEN_FLAGS, /* flags */ }, }, },
755-
{ .name = "openat", .errmsg = true,
722+
{ .name = "openat",
756723
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ },
757724
[2] = { .scnprintf = SCA_OPEN_FLAGS, /* flags */ }, }, },
758-
{ .name = "perf_event_open", .errmsg = true,
725+
{ .name = "perf_event_open",
759726
.arg = { [2] = { .scnprintf = SCA_INT, /* cpu */ },
760727
[3] = { .scnprintf = SCA_FD, /* group_fd */ },
761728
[4] = { .scnprintf = SCA_PERF_FLAGS, /* flags */ }, }, },
762-
{ .name = "pipe2", .errmsg = true,
729+
{ .name = "pipe2",
763730
.arg = { [1] = { .scnprintf = SCA_PIPE_FLAGS, /* flags */ }, }, },
764-
{ .name = "poll", .errmsg = true, .timeout = true, },
765-
{ .name = "ppoll", .errmsg = true, .timeout = true, },
766-
{ .name = "pread", .errmsg = true, .alias = "pread64", },
767-
{ .name = "preadv", .errmsg = true, .alias = "pread", },
768-
{ .name = "prlimit64", .errmsg = true,
731+
{ .name = "poll", .timeout = true, },
732+
{ .name = "ppoll", .timeout = true, },
733+
{ .name = "pread", .alias = "pread64", },
734+
{ .name = "preadv", .alias = "pread", },
735+
{ .name = "prlimit64",
769736
.arg = { [1] = STRARRAY(resource, rlimit_resources), }, },
770-
{ .name = "pwrite", .errmsg = true, .alias = "pwrite64", },
771-
{ .name = "pwritev", .errmsg = true, },
772-
{ .name = "read", .errmsg = true, },
773-
{ .name = "readlink", .errmsg = true, },
774-
{ .name = "readlinkat", .errmsg = true,
737+
{ .name = "pwrite", .alias = "pwrite64", },
738+
{ .name = "readlinkat",
775739
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
776-
{ .name = "readv", .errmsg = true, },
777-
{ .name = "recvfrom", .errmsg = true,
740+
{ .name = "recvfrom",
778741
.arg = { [3] = { .scnprintf = SCA_MSG_FLAGS, /* flags */ }, }, },
779-
{ .name = "recvmmsg", .errmsg = true,
742+
{ .name = "recvmmsg",
780743
.arg = { [3] = { .scnprintf = SCA_MSG_FLAGS, /* flags */ }, }, },
781-
{ .name = "recvmsg", .errmsg = true,
744+
{ .name = "recvmsg",
782745
.arg = { [2] = { .scnprintf = SCA_MSG_FLAGS, /* flags */ }, }, },
783-
{ .name = "removexattr", .errmsg = true, },
784-
{ .name = "renameat", .errmsg = true,
746+
{ .name = "renameat",
785747
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
786-
{ .name = "rmdir", .errmsg = true, },
787-
{ .name = "rt_sigaction", .errmsg = true,
748+
{ .name = "rt_sigaction",
788749
.arg = { [0] = { .scnprintf = SCA_SIGNUM, /* sig */ }, }, },
789-
{ .name = "rt_sigprocmask", .errmsg = true,
750+
{ .name = "rt_sigprocmask",
790751
.arg = { [0] = STRARRAY(how, sighow), }, },
791-
{ .name = "rt_sigqueueinfo", .errmsg = true,
752+
{ .name = "rt_sigqueueinfo",
792753
.arg = { [1] = { .scnprintf = SCA_SIGNUM, /* sig */ }, }, },
793-
{ .name = "rt_tgsigqueueinfo", .errmsg = true,
754+
{ .name = "rt_tgsigqueueinfo",
794755
.arg = { [2] = { .scnprintf = SCA_SIGNUM, /* sig */ }, }, },
795-
{ .name = "sched_getattr", .errmsg = true, },
796-
{ .name = "sched_setattr", .errmsg = true, },
797-
{ .name = "sched_setscheduler", .errmsg = true,
756+
{ .name = "sched_setscheduler",
798757
.arg = { [1] = { .scnprintf = SCA_SCHED_POLICY, /* policy */ }, }, },
799-
{ .name = "seccomp", .errmsg = true,
758+
{ .name = "seccomp",
800759
.arg = { [0] = { .scnprintf = SCA_SECCOMP_OP, /* op */ },
801760
[1] = { .scnprintf = SCA_SECCOMP_FLAGS, /* flags */ }, }, },
802-
{ .name = "select", .errmsg = true, .timeout = true, },
803-
{ .name = "sendmmsg", .errmsg = true,
761+
{ .name = "select", .timeout = true, },
762+
{ .name = "sendmmsg",
804763
.arg = { [3] = { .scnprintf = SCA_MSG_FLAGS, /* flags */ }, }, },
805-
{ .name = "sendmsg", .errmsg = true,
764+
{ .name = "sendmsg",
806765
.arg = { [2] = { .scnprintf = SCA_MSG_FLAGS, /* flags */ }, }, },
807-
{ .name = "sendto", .errmsg = true,
766+
{ .name = "sendto",
808767
.arg = { [3] = { .scnprintf = SCA_MSG_FLAGS, /* flags */ }, }, },
809768
{ .name = "set_tid_address", .errpid = true, },
810-
{ .name = "setitimer", .errmsg = true,
769+
{ .name = "setitimer",
811770
.arg = { [0] = STRARRAY(which, itimers), }, },
812-
{ .name = "setpgid", .errmsg = true, },
813-
{ .name = "setrlimit", .errmsg = true,
771+
{ .name = "setrlimit",
814772
.arg = { [0] = STRARRAY(resource, rlimit_resources), }, },
815-
{ .name = "setxattr", .errmsg = true, },
816-
{ .name = "shutdown", .errmsg = true, },
817-
{ .name = "socket", .errmsg = true,
773+
{ .name = "socket",
818774
.arg = { [0] = STRARRAY(family, socket_families),
819775
[1] = { .scnprintf = SCA_SK_TYPE, /* type */ }, }, },
820-
{ .name = "socketpair", .errmsg = true,
776+
{ .name = "socketpair",
821777
.arg = { [0] = STRARRAY(family, socket_families),
822778
[1] = { .scnprintf = SCA_SK_TYPE, /* type */ }, }, },
823-
{ .name = "stat", .errmsg = true, .alias = "newstat", },
824-
{ .name = "statfs", .errmsg = true, },
825-
{ .name = "statx", .errmsg = true,
779+
{ .name = "stat", .alias = "newstat", },
780+
{ .name = "statx",
826781
.arg = { [0] = { .scnprintf = SCA_FDAT, /* fdat */ },
827782
[2] = { .scnprintf = SCA_STATX_FLAGS, /* flags */ } ,
828783
[3] = { .scnprintf = SCA_STATX_MASK, /* mask */ }, }, },
829-
{ .name = "swapoff", .errmsg = true,
784+
{ .name = "swapoff",
830785
.arg = { [0] = { .scnprintf = SCA_FILENAME, /* specialfile */ }, }, },
831-
{ .name = "swapon", .errmsg = true,
786+
{ .name = "swapon",
832787
.arg = { [0] = { .scnprintf = SCA_FILENAME, /* specialfile */ }, }, },
833-
{ .name = "symlinkat", .errmsg = true,
788+
{ .name = "symlinkat",
834789
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
835-
{ .name = "tgkill", .errmsg = true,
790+
{ .name = "tgkill",
836791
.arg = { [2] = { .scnprintf = SCA_SIGNUM, /* sig */ }, }, },
837-
{ .name = "tkill", .errmsg = true,
792+
{ .name = "tkill",
838793
.arg = { [1] = { .scnprintf = SCA_SIGNUM, /* sig */ }, }, },
839-
{ .name = "truncate", .errmsg = true, },
840-
{ .name = "uname", .errmsg = true, .alias = "newuname", },
841-
{ .name = "unlinkat", .errmsg = true,
794+
{ .name = "uname", .alias = "newuname", },
795+
{ .name = "unlinkat",
842796
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dfd */ }, }, },
843-
{ .name = "utime", .errmsg = true, },
844-
{ .name = "utimensat", .errmsg = true,
797+
{ .name = "utimensat",
845798
.arg = { [0] = { .scnprintf = SCA_FDAT, /* dirfd */ }, }, },
846-
{ .name = "utimes", .errmsg = true, },
847-
{ .name = "vmsplice", .errmsg = true, },
848799
{ .name = "wait4", .errpid = true,
849800
.arg = { [2] = { .scnprintf = SCA_WAITID_OPTIONS, /* options */ }, }, },
850801
{ .name = "waitid", .errpid = true,
851802
.arg = { [3] = { .scnprintf = SCA_WAITID_OPTIONS, /* options */ }, }, },
852-
{ .name = "write", .errmsg = true, },
853-
{ .name = "writev", .errmsg = true, },
854803
};
855804

856805
static int syscall_fmt__cmp(const void *name, const void *fmtp)
@@ -1708,14 +1657,18 @@ static int trace__sys_exit(struct trace *trace, struct perf_evsel *evsel,
17081657
}
17091658

17101659
if (sc->fmt == NULL) {
1660+
if (ret < 0)
1661+
goto errno_print;
17111662
signed_print:
1712-
fprintf(trace->output, ") = %ld", ret);
1713-
} else if (ret < 0 && (sc->fmt->errmsg || sc->fmt->errpid)) {
1663+
fprintf(trace->output, ") %ld", ret);
1664+
} else if (ret < 0) {
1665+
errno_print: {
17141666
char bf[STRERR_BUFSIZE];
17151667
const char *emsg = str_error_r(-ret, bf, sizeof(bf)),
17161668
*e = audit_errno_to_name(-ret);
17171669

17181670
fprintf(trace->output, ") = -1 %s %s", e, emsg);
1671+
}
17191672
} else if (ret == 0 && sc->fmt->timeout)
17201673
fprintf(trace->output, ") = 0 Timeout");
17211674
else if (ttrace->ret_scnprintf) {

0 commit comments

Comments
 (0)