perf trace: Use vfs_getname syscall arg beautifier in more syscalls
authorArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 5 Aug 2015 02:31:25 +0000 (23:31 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 5 Aug 2015 15:50:11 +0000 (12:50 -0300)
Those were covered and tested in this cset:

 access, chdir, chmod, chown, chroot, creat, getxattr,
 inotify_add_watch, lchown, lgetxattr, listxattr,
 lsetxattr, mkdir, mkdirat, mknod, rmdir, faccessat,
 newfstatat, openat, readlink, readlinkat, removexattr,
 setxattr, statfs, swapon, swapoff, truncate, unlinkat,
 utime, utimes, utimensat.

E.g.:

  # trace -e statfs,access,mkdir mkdir /tmp/bla
   0.285 (0.020 ms): mkdir/2799 access(filename: /etc/ld.so.preload, mode: R         ) = -1 ENOENT No such file or directory
   1.070 (0.032 ms): mkdir/2799 statfs(pathname: /sys/fs/selinux, buf: 0x7ffeafbdc930) = 0
   1.087 (0.013 ms): mkdir/2799 statfs(pathname: /sys/fs/selinux, buf: 0x7ffeafbdc820) = 0
   1.189 (0.014 ms): mkdir/2799 access(filename: /etc/selinux/config                 ) = 0
   1.905 (0.610 ms): mkdir/2799 mkdir(pathname: /tmp/bla, mode: 511                  ) = 0
  #

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Milian Wolff <mail@milianw.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-wbqtnlktquun3wtpjdz3okul@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  and an empty message aborts the commit.

tools/perf/builtin-trace.c

index 0255dd8926629dc42e4233db8950c0d51875f3b4..98d423efdaa9bba77afb08989c0eb8a553caeeae 100644 (file)
@@ -976,14 +976,23 @@ static struct syscall_fmt {
        bool       hexret;
 } syscall_fmts[] = {
        { .name     = "access",     .errmsg = true,
-         .arg_scnprintf = { [1] = SCA_ACCMODE, /* mode */ }, },
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */
+                            [1] = SCA_ACCMODE,  /* mode */ }, },
        { .name     = "arch_prctl", .errmsg = true, .alias = "prctl", },
        { .name     = "brk",        .hexret = true,
          .arg_scnprintf = { [0] = SCA_HEX, /* brk */ }, },
+       { .name     = "chdir",      .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
+       { .name     = "chmod",      .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
+       { .name     = "chroot",     .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
        { .name     = "clock_gettime",  .errmsg = true, STRARRAY(0, clk_id, clockid), },
        { .name     = "close",      .errmsg = true,
          .arg_scnprintf = { [0] = SCA_CLOSE_FD, /* fd */ }, },
        { .name     = "connect",    .errmsg = true, },
+       { .name     = "creat",      .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "dup",        .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "dup2",       .errmsg = true,
@@ -994,7 +1003,8 @@ static struct syscall_fmt {
        { .name     = "eventfd2",   .errmsg = true,
          .arg_scnprintf = { [1] = SCA_EFD_FLAGS, /* flags */ }, },
        { .name     = "faccessat",  .errmsg = true,
-         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
+         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */
+                            [1] = SCA_FILENAME, /* filename */ }, },
        { .name     = "fadvise64",  .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "fallocate",  .errmsg = true,
@@ -1008,7 +1018,8 @@ static struct syscall_fmt {
        { .name     = "fchown",     .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "fchownat",   .errmsg = true,
-         .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
+         .arg_scnprintf = { [0] = SCA_FDAT, /* fd */
+                            [1] = SCA_FILENAME, /* filename */ }, },
        { .name     = "fcntl",      .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */
                             [1] = SCA_STRARRAY, /* cmd */ },
@@ -1023,7 +1034,8 @@ static struct syscall_fmt {
        { .name     = "fstat",      .errmsg = true, .alias = "newfstat",
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "fstatat",    .errmsg = true, .alias = "newfstatat",
-         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
+         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */
+                            [1] = SCA_FILENAME, /* filename */ }, },
        { .name     = "fstatfs",    .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "fsync",    .errmsg = true,
@@ -1040,6 +1052,10 @@ static struct syscall_fmt {
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "getitimer",  .errmsg = true, STRARRAY(0, which, itimers), },
        { .name     = "getrlimit",  .errmsg = true, STRARRAY(0, resource, rlimit_resources), },
+       { .name     = "getxattr",    .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
+       { .name     = "inotify_add_watch",          .errmsg = true,
+         .arg_scnprintf = { [1] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "ioctl",      .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */
 #if defined(__i386__) || defined(__x86_64__)
@@ -1054,18 +1070,33 @@ static struct syscall_fmt {
 #endif
        { .name     = "kill",       .errmsg = true,
          .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, },
+       { .name     = "lchown",    .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
+       { .name     = "lgetxattr",  .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "linkat",     .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
+       { .name     = "listxattr",  .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "lseek",      .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */
                             [2] = SCA_STRARRAY, /* whence */ },
          .arg_parm      = { [2] = &strarray__whences, /* whence */ }, },
+       { .name     = "lsetxattr",  .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "lstat",      .errmsg = true, .alias = "newlstat", },
+       { .name     = "lsxattr",    .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "madvise",    .errmsg = true,
          .arg_scnprintf = { [0] = SCA_HEX,      /* start */
                             [2] = SCA_MADV_BHV, /* behavior */ }, },
+       { .name     = "mkdir",    .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "mkdirat",    .errmsg = true,
-         .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
+         .arg_scnprintf = { [0] = SCA_FDAT, /* fd */
+                            [1] = SCA_FILENAME, /* pathname */ }, },
+       { .name     = "mknod",      .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
        { .name     = "mknodat",    .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
        { .name     = "mlock",      .errmsg = true,
@@ -1091,7 +1122,8 @@ static struct syscall_fmt {
        { .name     = "name_to_handle_at", .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
        { .name     = "newfstatat", .errmsg = true,
-         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
+         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */
+                            [1] = SCA_FILENAME, /* filename */ }, },
        { .name     = "open",       .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FILENAME,   /* filename */
                             [1] = SCA_OPEN_FLAGS, /* flags */ }, },
@@ -1100,6 +1132,7 @@ static struct syscall_fmt {
                             [2] = SCA_OPEN_FLAGS, /* flags */ }, },
        { .name     = "openat",     .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */
+                            [1] = SCA_FILENAME, /* filename */
                             [2] = SCA_OPEN_FLAGS, /* flags */ }, },
        { .name     = "perf_event_open", .errmsg = true,
          .arg_scnprintf = { [1] = SCA_INT, /* pid */
@@ -1121,8 +1154,11 @@ static struct syscall_fmt {
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "read",       .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
+       { .name     = "readlink",   .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* path */ }, },
        { .name     = "readlinkat", .errmsg = true,
-         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
+         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */
+                            [1] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "readv",      .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "recvfrom",   .errmsg = true,
@@ -1131,8 +1167,12 @@ static struct syscall_fmt {
          .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, },
        { .name     = "recvmsg",    .errmsg = true,
          .arg_scnprintf = { [2] = SCA_MSG_FLAGS, /* flags */ }, },
+       { .name     = "removexattr", .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "renameat",   .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
+       { .name     = "rmdir",    .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "rt_sigaction", .errmsg = true,
          .arg_scnprintf = { [0] = SCA_SIGNUM, /* sig */ }, },
        { .name     = "rt_sigprocmask",  .errmsg = true, STRARRAY(0, how, sighow), },
@@ -1149,6 +1189,8 @@ static struct syscall_fmt {
          .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, },
        { .name     = "setitimer",  .errmsg = true, STRARRAY(0, which, itimers), },
        { .name     = "setrlimit",  .errmsg = true, STRARRAY(0, resource, rlimit_resources), },
+       { .name     = "setxattr",   .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
        { .name     = "shutdown",   .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "socket",     .errmsg = true,
@@ -1160,17 +1202,31 @@ static struct syscall_fmt {
                             [1] = SCA_SK_TYPE, /* type */ },
          .arg_parm      = { [0] = &strarray__socket_families, /* family */ }, },
        { .name     = "stat",       .errmsg = true, .alias = "newstat", },
+       { .name     = "statfs",     .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
+       { .name     = "swapoff",    .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* specialfile */ }, },
+       { .name     = "swapon",     .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* specialfile */ }, },
        { .name     = "symlinkat",  .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
        { .name     = "tgkill",     .errmsg = true,
          .arg_scnprintf = { [2] = SCA_SIGNUM, /* sig */ }, },
        { .name     = "tkill",      .errmsg = true,
          .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, },
+       { .name     = "truncate",   .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* path */ }, },
        { .name     = "uname",      .errmsg = true, .alias = "newuname", },
        { .name     = "unlinkat",   .errmsg = true,
-         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */ }, },
+         .arg_scnprintf = { [0] = SCA_FDAT, /* dfd */
+                            [1] = SCA_FILENAME, /* pathname */ }, },
+       { .name     = "utime",  .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
        { .name     = "utimensat",  .errmsg = true,
-         .arg_scnprintf = { [0] = SCA_FDAT, /* dirfd */ }, },
+         .arg_scnprintf = { [0] = SCA_FDAT, /* dirfd */
+                            [1] = SCA_FILENAME, /* filename */ }, },
+       { .name     = "utimes",  .errmsg = true,
+         .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
        { .name     = "write",      .errmsg = true,
          .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
        { .name     = "writev",     .errmsg = true,