diff options
Diffstat (limited to 'kernel/trace/trace_kprobe.c')
-rw-r--r-- | kernel/trace/trace_kprobe.c | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index 147491dccead..c99029916c76 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c | |||
@@ -1174,82 +1174,6 @@ static int kretprobe_event_define_fields(struct ftrace_event_call *event_call) | |||
1174 | return 0; | 1174 | return 0; |
1175 | } | 1175 | } |
1176 | 1176 | ||
1177 | static int __probe_event_show_format(struct trace_seq *s, | ||
1178 | struct trace_probe *tp, const char *fmt, | ||
1179 | const char *arg) | ||
1180 | { | ||
1181 | int i; | ||
1182 | |||
1183 | /* Show format */ | ||
1184 | if (!trace_seq_printf(s, "\nprint fmt: \"%s", fmt)) | ||
1185 | return 0; | ||
1186 | |||
1187 | for (i = 0; i < tp->nr_args; i++) | ||
1188 | if (!trace_seq_printf(s, " %s=%%lx", tp->args[i].name)) | ||
1189 | return 0; | ||
1190 | |||
1191 | if (!trace_seq_printf(s, "\", %s", arg)) | ||
1192 | return 0; | ||
1193 | |||
1194 | for (i = 0; i < tp->nr_args; i++) | ||
1195 | if (!trace_seq_printf(s, ", REC->%s", tp->args[i].name)) | ||
1196 | return 0; | ||
1197 | |||
1198 | return trace_seq_puts(s, "\n"); | ||
1199 | } | ||
1200 | |||
1201 | #undef SHOW_FIELD | ||
1202 | #define SHOW_FIELD(type, item, name) \ | ||
1203 | do { \ | ||
1204 | ret = trace_seq_printf(s, "\tfield:" #type " %s;\t" \ | ||
1205 | "offset:%u;\tsize:%u;\tsigned:%d;\n", name,\ | ||
1206 | (unsigned int)offsetof(typeof(field), item),\ | ||
1207 | (unsigned int)sizeof(type), \ | ||
1208 | is_signed_type(type)); \ | ||
1209 | if (!ret) \ | ||
1210 | return 0; \ | ||
1211 | } while (0) | ||
1212 | |||
1213 | static int kprobe_event_show_format(struct ftrace_event_call *call, | ||
1214 | struct trace_seq *s) | ||
1215 | { | ||
1216 | struct kprobe_trace_entry field __attribute__((unused)); | ||
1217 | int ret, i; | ||
1218 | struct trace_probe *tp = (struct trace_probe *)call->data; | ||
1219 | |||
1220 | SHOW_FIELD(unsigned long, ip, FIELD_STRING_IP); | ||
1221 | SHOW_FIELD(int, nargs, FIELD_STRING_NARGS); | ||
1222 | |||
1223 | /* Show fields */ | ||
1224 | for (i = 0; i < tp->nr_args; i++) | ||
1225 | SHOW_FIELD(unsigned long, args[i], tp->args[i].name); | ||
1226 | trace_seq_puts(s, "\n"); | ||
1227 | |||
1228 | return __probe_event_show_format(s, tp, "(%lx)", | ||
1229 | "REC->" FIELD_STRING_IP); | ||
1230 | } | ||
1231 | |||
1232 | static int kretprobe_event_show_format(struct ftrace_event_call *call, | ||
1233 | struct trace_seq *s) | ||
1234 | { | ||
1235 | struct kretprobe_trace_entry field __attribute__((unused)); | ||
1236 | int ret, i; | ||
1237 | struct trace_probe *tp = (struct trace_probe *)call->data; | ||
1238 | |||
1239 | SHOW_FIELD(unsigned long, func, FIELD_STRING_FUNC); | ||
1240 | SHOW_FIELD(unsigned long, ret_ip, FIELD_STRING_RETIP); | ||
1241 | SHOW_FIELD(int, nargs, FIELD_STRING_NARGS); | ||
1242 | |||
1243 | /* Show fields */ | ||
1244 | for (i = 0; i < tp->nr_args; i++) | ||
1245 | SHOW_FIELD(unsigned long, args[i], tp->args[i].name); | ||
1246 | trace_seq_puts(s, "\n"); | ||
1247 | |||
1248 | return __probe_event_show_format(s, tp, "(%lx <- %lx)", | ||
1249 | "REC->" FIELD_STRING_FUNC | ||
1250 | ", REC->" FIELD_STRING_RETIP); | ||
1251 | } | ||
1252 | |||
1253 | static int __set_print_fmt(struct trace_probe *tp, char *buf, int len) | 1177 | static int __set_print_fmt(struct trace_probe *tp, char *buf, int len) |
1254 | { | 1178 | { |
1255 | int i; | 1179 | int i; |
@@ -1504,12 +1428,10 @@ static int register_probe_event(struct trace_probe *tp) | |||
1504 | if (probe_is_return(tp)) { | 1428 | if (probe_is_return(tp)) { |
1505 | tp->event.trace = print_kretprobe_event; | 1429 | tp->event.trace = print_kretprobe_event; |
1506 | call->raw_init = probe_event_raw_init; | 1430 | call->raw_init = probe_event_raw_init; |
1507 | call->show_format = kretprobe_event_show_format; | ||
1508 | call->define_fields = kretprobe_event_define_fields; | 1431 | call->define_fields = kretprobe_event_define_fields; |
1509 | } else { | 1432 | } else { |
1510 | tp->event.trace = print_kprobe_event; | 1433 | tp->event.trace = print_kprobe_event; |
1511 | call->raw_init = probe_event_raw_init; | 1434 | call->raw_init = probe_event_raw_init; |
1512 | call->show_format = kprobe_event_show_format; | ||
1513 | call->define_fields = kprobe_event_define_fields; | 1435 | call->define_fields = kprobe_event_define_fields; |
1514 | } | 1436 | } |
1515 | if (set_print_fmt(tp) < 0) | 1437 | if (set_print_fmt(tp) < 0) |