aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-trace.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/builtin-trace.c')
-rw-r--r--tools/perf/builtin-trace.c54
1 files changed, 42 insertions, 12 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index a25048c85b76..489cc118a36a 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -569,6 +569,15 @@ static DEFINE_STRARRAY_OFFSET(epoll_ctl_ops, 1);
569static const char *itimers[] = { "REAL", "VIRTUAL", "PROF", }; 569static const char *itimers[] = { "REAL", "VIRTUAL", "PROF", };
570static DEFINE_STRARRAY(itimers); 570static DEFINE_STRARRAY(itimers);
571 571
572static const char *keyctl_options[] = {
573 "GET_KEYRING_ID", "JOIN_SESSION_KEYRING", "UPDATE", "REVOKE", "CHOWN",
574 "SETPERM", "DESCRIBE", "CLEAR", "LINK", "UNLINK", "SEARCH", "READ",
575 "INSTANTIATE", "NEGATE", "SET_REQKEY_KEYRING", "SET_TIMEOUT",
576 "ASSUME_AUTHORITY", "GET_SECURITY", "SESSION_TO_PARENT", "REJECT",
577 "INSTANTIATE_IOV", "INVALIDATE", "GET_PERSISTENT",
578};
579static DEFINE_STRARRAY(keyctl_options);
580
572static const char *whences[] = { "SET", "CUR", "END", 581static const char *whences[] = { "SET", "CUR", "END",
573#ifdef SEEK_DATA 582#ifdef SEEK_DATA
574"DATA", 583"DATA",
@@ -599,7 +608,8 @@ static DEFINE_STRARRAY(sighow);
599 608
600static const char *clockid[] = { 609static const char *clockid[] = {
601 "REALTIME", "MONOTONIC", "PROCESS_CPUTIME_ID", "THREAD_CPUTIME_ID", 610 "REALTIME", "MONOTONIC", "PROCESS_CPUTIME_ID", "THREAD_CPUTIME_ID",
602 "MONOTONIC_RAW", "REALTIME_COARSE", "MONOTONIC_COARSE", 611 "MONOTONIC_RAW", "REALTIME_COARSE", "MONOTONIC_COARSE", "BOOTTIME",
612 "REALTIME_ALARM", "BOOTTIME_ALARM", "SGI_CYCLE", "TAI"
603}; 613};
604static DEFINE_STRARRAY(clockid); 614static DEFINE_STRARRAY(clockid);
605 615
@@ -1014,7 +1024,8 @@ static struct syscall_fmt {
1014 { .name = "fchmod", .errmsg = true, 1024 { .name = "fchmod", .errmsg = true,
1015 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, }, 1025 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
1016 { .name = "fchmodat", .errmsg = true, 1026 { .name = "fchmodat", .errmsg = true,
1017 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, }, 1027 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */
1028 [1] = SCA_FILENAME, /* filename */ }, },
1018 { .name = "fchown", .errmsg = true, 1029 { .name = "fchown", .errmsg = true,
1019 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, }, 1030 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
1020 { .name = "fchownat", .errmsg = true, 1031 { .name = "fchownat", .errmsg = true,
@@ -1045,7 +1056,8 @@ static struct syscall_fmt {
1045 { .name = "futex", .errmsg = true, 1056 { .name = "futex", .errmsg = true,
1046 .arg_scnprintf = { [1] = SCA_FUTEX_OP, /* op */ }, }, 1057 .arg_scnprintf = { [1] = SCA_FUTEX_OP, /* op */ }, },
1047 { .name = "futimesat", .errmsg = true, 1058 { .name = "futimesat", .errmsg = true,
1048 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, }, 1059 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */
1060 [1] = SCA_FILENAME, /* filename */ }, },
1049 { .name = "getdents", .errmsg = true, 1061 { .name = "getdents", .errmsg = true,
1050 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, }, 1062 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
1051 { .name = "getdents64", .errmsg = true, 1063 { .name = "getdents64", .errmsg = true,
@@ -1068,6 +1080,7 @@ static struct syscall_fmt {
1068#else 1080#else
1069 [2] = SCA_HEX, /* arg */ }, }, 1081 [2] = SCA_HEX, /* arg */ }, },
1070#endif 1082#endif
1083 { .name = "keyctl", .errmsg = true, STRARRAY(0, option, keyctl_options), },
1071 { .name = "kill", .errmsg = true, 1084 { .name = "kill", .errmsg = true,
1072 .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, }, 1085 .arg_scnprintf = { [1] = SCA_SIGNUM, /* sig */ }, },
1073 { .name = "lchown", .errmsg = true, 1086 { .name = "lchown", .errmsg = true,
@@ -1078,13 +1091,18 @@ static struct syscall_fmt {
1078 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, }, 1091 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, },
1079 { .name = "listxattr", .errmsg = true, 1092 { .name = "listxattr", .errmsg = true,
1080 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, }, 1093 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
1094 { .name = "llistxattr", .errmsg = true,
1095 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
1096 { .name = "lremovexattr", .errmsg = true,
1097 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
1081 { .name = "lseek", .errmsg = true, 1098 { .name = "lseek", .errmsg = true,
1082 .arg_scnprintf = { [0] = SCA_FD, /* fd */ 1099 .arg_scnprintf = { [0] = SCA_FD, /* fd */
1083 [2] = SCA_STRARRAY, /* whence */ }, 1100 [2] = SCA_STRARRAY, /* whence */ },
1084 .arg_parm = { [2] = &strarray__whences, /* whence */ }, }, 1101 .arg_parm = { [2] = &strarray__whences, /* whence */ }, },
1085 { .name = "lsetxattr", .errmsg = true, 1102 { .name = "lsetxattr", .errmsg = true,
1086 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, }, 1103 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
1087 { .name = "lstat", .errmsg = true, .alias = "newlstat", }, 1104 { .name = "lstat", .errmsg = true, .alias = "newlstat",
1105 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
1088 { .name = "lsxattr", .errmsg = true, 1106 { .name = "lsxattr", .errmsg = true,
1089 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, }, 1107 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
1090 { .name = "madvise", .errmsg = true, 1108 { .name = "madvise", .errmsg = true,
@@ -1098,7 +1116,8 @@ static struct syscall_fmt {
1098 { .name = "mknod", .errmsg = true, 1116 { .name = "mknod", .errmsg = true,
1099 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, }, 1117 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
1100 { .name = "mknodat", .errmsg = true, 1118 { .name = "mknodat", .errmsg = true,
1101 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */ }, }, 1119 .arg_scnprintf = { [0] = SCA_FDAT, /* fd */
1120 [1] = SCA_FILENAME, /* filename */ }, },
1102 { .name = "mlock", .errmsg = true, 1121 { .name = "mlock", .errmsg = true,
1103 .arg_scnprintf = { [0] = SCA_HEX, /* addr */ }, }, 1122 .arg_scnprintf = { [0] = SCA_HEX, /* addr */ }, },
1104 { .name = "mlockall", .errmsg = true, 1123 { .name = "mlockall", .errmsg = true,
@@ -1111,6 +1130,8 @@ static struct syscall_fmt {
1111 { .name = "mprotect", .errmsg = true, 1130 { .name = "mprotect", .errmsg = true,
1112 .arg_scnprintf = { [0] = SCA_HEX, /* start */ 1131 .arg_scnprintf = { [0] = SCA_HEX, /* start */
1113 [2] = SCA_MMAP_PROT, /* prot */ }, }, 1132 [2] = SCA_MMAP_PROT, /* prot */ }, },
1133 { .name = "mq_unlink", .errmsg = true,
1134 .arg_scnprintf = { [0] = SCA_FILENAME, /* u_name */ }, },
1114 { .name = "mremap", .hexret = true, 1135 { .name = "mremap", .hexret = true,
1115 .arg_scnprintf = { [0] = SCA_HEX, /* addr */ 1136 .arg_scnprintf = { [0] = SCA_HEX, /* addr */
1116 [3] = SCA_MREMAP_FLAGS, /* flags */ 1137 [3] = SCA_MREMAP_FLAGS, /* flags */
@@ -1162,11 +1183,14 @@ static struct syscall_fmt {
1162 { .name = "readv", .errmsg = true, 1183 { .name = "readv", .errmsg = true,
1163 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, }, 1184 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
1164 { .name = "recvfrom", .errmsg = true, 1185 { .name = "recvfrom", .errmsg = true,
1165 .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, }, 1186 .arg_scnprintf = { [0] = SCA_FD, /* fd */
1187 [3] = SCA_MSG_FLAGS, /* flags */ }, },
1166 { .name = "recvmmsg", .errmsg = true, 1188 { .name = "recvmmsg", .errmsg = true,
1167 .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, }, 1189 .arg_scnprintf = { [0] = SCA_FD, /* fd */
1190 [3] = SCA_MSG_FLAGS, /* flags */ }, },
1168 { .name = "recvmsg", .errmsg = true, 1191 { .name = "recvmsg", .errmsg = true,
1169 .arg_scnprintf = { [2] = SCA_MSG_FLAGS, /* flags */ }, }, 1192 .arg_scnprintf = { [0] = SCA_FD, /* fd */
1193 [2] = SCA_MSG_FLAGS, /* flags */ }, },
1170 { .name = "removexattr", .errmsg = true, 1194 { .name = "removexattr", .errmsg = true,
1171 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, }, 1195 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
1172 { .name = "renameat", .errmsg = true, 1196 { .name = "renameat", .errmsg = true,
@@ -1182,11 +1206,14 @@ static struct syscall_fmt {
1182 .arg_scnprintf = { [2] = SCA_SIGNUM, /* sig */ }, }, 1206 .arg_scnprintf = { [2] = SCA_SIGNUM, /* sig */ }, },
1183 { .name = "select", .errmsg = true, .timeout = true, }, 1207 { .name = "select", .errmsg = true, .timeout = true, },
1184 { .name = "sendmmsg", .errmsg = true, 1208 { .name = "sendmmsg", .errmsg = true,
1185 .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, }, 1209 .arg_scnprintf = { [0] = SCA_FD, /* fd */
1210 [3] = SCA_MSG_FLAGS, /* flags */ }, },
1186 { .name = "sendmsg", .errmsg = true, 1211 { .name = "sendmsg", .errmsg = true,
1187 .arg_scnprintf = { [2] = SCA_MSG_FLAGS, /* flags */ }, }, 1212 .arg_scnprintf = { [0] = SCA_FD, /* fd */
1213 [2] = SCA_MSG_FLAGS, /* flags */ }, },
1188 { .name = "sendto", .errmsg = true, 1214 { .name = "sendto", .errmsg = true,
1189 .arg_scnprintf = { [3] = SCA_MSG_FLAGS, /* flags */ }, }, 1215 .arg_scnprintf = { [0] = SCA_FD, /* fd */
1216 [3] = SCA_MSG_FLAGS, /* flags */ }, },
1190 { .name = "setitimer", .errmsg = true, STRARRAY(0, which, itimers), }, 1217 { .name = "setitimer", .errmsg = true, STRARRAY(0, which, itimers), },
1191 { .name = "setrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), }, 1218 { .name = "setrlimit", .errmsg = true, STRARRAY(0, resource, rlimit_resources), },
1192 { .name = "setxattr", .errmsg = true, 1219 { .name = "setxattr", .errmsg = true,
@@ -1201,7 +1228,8 @@ static struct syscall_fmt {
1201 .arg_scnprintf = { [0] = SCA_STRARRAY, /* family */ 1228 .arg_scnprintf = { [0] = SCA_STRARRAY, /* family */
1202 [1] = SCA_SK_TYPE, /* type */ }, 1229 [1] = SCA_SK_TYPE, /* type */ },
1203 .arg_parm = { [0] = &strarray__socket_families, /* family */ }, }, 1230 .arg_parm = { [0] = &strarray__socket_families, /* family */ }, },
1204 { .name = "stat", .errmsg = true, .alias = "newstat", }, 1231 { .name = "stat", .errmsg = true, .alias = "newstat",
1232 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
1205 { .name = "statfs", .errmsg = true, 1233 { .name = "statfs", .errmsg = true,
1206 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, }, 1234 .arg_scnprintf = { [0] = SCA_FILENAME, /* pathname */ }, },
1207 { .name = "swapoff", .errmsg = true, 1235 { .name = "swapoff", .errmsg = true,
@@ -1227,6 +1255,8 @@ static struct syscall_fmt {
1227 [1] = SCA_FILENAME, /* filename */ }, }, 1255 [1] = SCA_FILENAME, /* filename */ }, },
1228 { .name = "utimes", .errmsg = true, 1256 { .name = "utimes", .errmsg = true,
1229 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, }, 1257 .arg_scnprintf = { [0] = SCA_FILENAME, /* filename */ }, },
1258 { .name = "vmsplice", .errmsg = true,
1259 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
1230 { .name = "write", .errmsg = true, 1260 { .name = "write", .errmsg = true,
1231 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, }, 1261 .arg_scnprintf = { [0] = SCA_FD, /* fd */ }, },
1232 { .name = "writev", .errmsg = true, 1262 { .name = "writev", .errmsg = true,