diff options
Diffstat (limited to 'tools/perf/builtin-trace.c')
-rw-r--r-- | tools/perf/builtin-trace.c | 54 |
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); | |||
569 | static const char *itimers[] = { "REAL", "VIRTUAL", "PROF", }; | 569 | static const char *itimers[] = { "REAL", "VIRTUAL", "PROF", }; |
570 | static DEFINE_STRARRAY(itimers); | 570 | static DEFINE_STRARRAY(itimers); |
571 | 571 | ||
572 | static 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 | }; | ||
579 | static DEFINE_STRARRAY(keyctl_options); | ||
580 | |||
572 | static const char *whences[] = { "SET", "CUR", "END", | 581 | static 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 | ||
600 | static const char *clockid[] = { | 609 | static 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 | }; |
604 | static DEFINE_STRARRAY(clockid); | 614 | static 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, |