diff options
-rw-r--r-- | parse-events.c | 21 | ||||
-rw-r--r-- | parse-events.h | 11 | ||||
-rw-r--r-- | plugin_hrtimer.c | 13 | ||||
-rw-r--r-- | plugin_mac80211.c | 14 | ||||
-rw-r--r-- | plugin_sched_switch.c | 12 | ||||
-rw-r--r-- | trace-ftrace.c | 25 | ||||
-rw-r--r-- | trace-read.c | 2 |
7 files changed, 52 insertions, 46 deletions
diff --git a/parse-events.c b/parse-events.c index 49cde00..d53184b 100644 --- a/parse-events.c +++ b/parse-events.c | |||
@@ -3113,13 +3113,14 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event | |||
3113 | * and lock depth) and places it into the trace_seq. | 3113 | * and lock depth) and places it into the trace_seq. |
3114 | */ | 3114 | */ |
3115 | void pevent_data_lat_fmt(struct pevent *pevent, | 3115 | void pevent_data_lat_fmt(struct pevent *pevent, |
3116 | struct trace_seq *s, void *data, int size __unused) | 3116 | struct trace_seq *s, struct record *record) |
3117 | { | 3117 | { |
3118 | unsigned int lat_flags; | 3118 | unsigned int lat_flags; |
3119 | unsigned int pc; | 3119 | unsigned int pc; |
3120 | int lock_depth; | 3120 | int lock_depth; |
3121 | int hardirq; | 3121 | int hardirq; |
3122 | int softirq; | 3122 | int softirq; |
3123 | void *data = record->data; | ||
3123 | 3124 | ||
3124 | lat_flags = parse_common_flags(pevent, data); | 3125 | lat_flags = parse_common_flags(pevent, data); |
3125 | pc = parse_common_pc(pevent, data); | 3126 | pc = parse_common_pc(pevent, data); |
@@ -3215,30 +3216,32 @@ const char *pevent_data_comm_from_pid(struct pevent *pevent, int pid) | |||
3215 | * writes the print format into the trace_seq. | 3216 | * writes the print format into the trace_seq. |
3216 | */ | 3217 | */ |
3217 | void pevent_event_info(struct trace_seq *s, struct event_format *event, | 3218 | void pevent_event_info(struct trace_seq *s, struct event_format *event, |
3218 | int cpu, void *data, int size, unsigned long long nsecs) | 3219 | int cpu, struct record *record) |
3219 | { | 3220 | { |
3220 | if (event->handler) | 3221 | if (event->handler) |
3221 | event->handler(s, data, size, event, cpu, nsecs); | 3222 | event->handler(s, record, event, cpu); |
3222 | else | 3223 | else |
3223 | pretty_print(s, data, size, event); | 3224 | pretty_print(s, record->data, record->size, event); |
3224 | 3225 | ||
3225 | trace_seq_terminate(s); | 3226 | trace_seq_terminate(s); |
3226 | } | 3227 | } |
3227 | 3228 | ||
3228 | void pevent_print_event(struct pevent *pevent, struct trace_seq *s, | 3229 | void pevent_print_event(struct pevent *pevent, struct trace_seq *s, |
3229 | int cpu, void *data, int size, unsigned long long nsecs) | 3230 | int cpu, struct record *record) |
3230 | { | 3231 | { |
3231 | static char *spaces = " "; /* 20 spaces */ | 3232 | static char *spaces = " "; /* 20 spaces */ |
3232 | struct event_format *event; | 3233 | struct event_format *event; |
3233 | unsigned long secs; | 3234 | unsigned long secs; |
3234 | unsigned long usecs; | 3235 | unsigned long usecs; |
3235 | const char *comm; | 3236 | const char *comm; |
3237 | void *data = record->data; | ||
3238 | int size = record->size; | ||
3236 | int type; | 3239 | int type; |
3237 | int pid; | 3240 | int pid; |
3238 | int len; | 3241 | int len; |
3239 | 3242 | ||
3240 | secs = nsecs / NSECS_PER_SEC; | 3243 | secs = record->ts / NSECS_PER_SEC; |
3241 | usecs = nsecs - secs * NSECS_PER_SEC; | 3244 | usecs = record->ts - secs * NSECS_PER_SEC; |
3242 | usecs = usecs / NSECS_PER_USEC; | 3245 | usecs = usecs / NSECS_PER_USEC; |
3243 | 3246 | ||
3244 | type = trace_parse_common_type(pevent, data); | 3247 | type = trace_parse_common_type(pevent, data); |
@@ -3255,7 +3258,7 @@ void pevent_print_event(struct pevent *pevent, struct trace_seq *s, | |||
3255 | if (pevent->latency_format) { | 3258 | if (pevent->latency_format) { |
3256 | trace_seq_printf(s, "%8.8s-%-5d %3d", | 3259 | trace_seq_printf(s, "%8.8s-%-5d %3d", |
3257 | comm, pid, cpu); | 3260 | comm, pid, cpu); |
3258 | pevent_data_lat_fmt(pevent, s, data, size); | 3261 | pevent_data_lat_fmt(pevent, s, record); |
3259 | } else | 3262 | } else |
3260 | trace_seq_printf(s, "%16s-%-5d [%03d]", comm, pid, cpu); | 3263 | trace_seq_printf(s, "%16s-%-5d [%03d]", comm, pid, cpu); |
3261 | 3264 | ||
@@ -3267,7 +3270,7 @@ void pevent_print_event(struct pevent *pevent, struct trace_seq *s, | |||
3267 | trace_seq_printf(s, "%.*s", 20 - len, spaces); | 3270 | trace_seq_printf(s, "%.*s", 20 - len, spaces); |
3268 | 3271 | ||
3269 | if (event->handler) | 3272 | if (event->handler) |
3270 | event->handler(s, data, size, event, cpu, nsecs); | 3273 | event->handler(s, record, event, cpu); |
3271 | else | 3274 | else |
3272 | pretty_print(s, data, size, event); | 3275 | pretty_print(s, data, size, event); |
3273 | 3276 | ||
diff --git a/parse-events.h b/parse-events.h index 9b64b9d..ba80efd 100644 --- a/parse-events.h +++ b/parse-events.h | |||
@@ -61,9 +61,8 @@ struct pevent; | |||
61 | struct event_format; | 61 | struct event_format; |
62 | 62 | ||
63 | typedef int (*pevent_event_handler_func)(struct trace_seq *s, | 63 | typedef int (*pevent_event_handler_func)(struct trace_seq *s, |
64 | void *data, int size, | 64 | struct record *record, |
65 | struct event_format *event, int cpu, | 65 | struct event_format *event, int cpu); |
66 | unsigned long long nsecs); | ||
67 | 66 | ||
68 | typedef int (*pevent_plugin_load_func)(struct pevent *pevent); | 67 | typedef int (*pevent_plugin_load_func)(struct pevent *pevent); |
69 | 68 | ||
@@ -350,7 +349,7 @@ int pevent_register_print_string(struct pevent *pevent, char *fmt, | |||
350 | int pevent_pid_is_registered(struct pevent *pevent, int pid); | 349 | int pevent_pid_is_registered(struct pevent *pevent, int pid); |
351 | 350 | ||
352 | void pevent_print_event(struct pevent *pevent, struct trace_seq *s, | 351 | void pevent_print_event(struct pevent *pevent, struct trace_seq *s, |
353 | int cpu, void *data, int size, unsigned long long nsecs); | 352 | int cpu, struct record *record); |
354 | 353 | ||
355 | int pevent_parse_header_page(struct pevent *pevent, char *buf, unsigned long size); | 354 | int pevent_parse_header_page(struct pevent *pevent, char *buf, unsigned long size); |
356 | 355 | ||
@@ -374,13 +373,13 @@ struct event_format * | |||
374 | pevent_find_event_by_name(struct pevent *pevent, const char *sys, const char *name); | 373 | pevent_find_event_by_name(struct pevent *pevent, const char *sys, const char *name); |
375 | 374 | ||
376 | void pevent_data_lat_fmt(struct pevent *pevent, | 375 | void pevent_data_lat_fmt(struct pevent *pevent, |
377 | struct trace_seq *s, void *data, int size __unused); | 376 | struct trace_seq *s, struct record *record); |
378 | int pevent_data_type(struct pevent *pevent, struct record *rec); | 377 | int pevent_data_type(struct pevent *pevent, struct record *rec); |
379 | struct event_format *pevent_data_event_from_type(struct pevent *pevent, int type); | 378 | struct event_format *pevent_data_event_from_type(struct pevent *pevent, int type); |
380 | int pevent_data_pid(struct pevent *pevent, struct record *rec); | 379 | int pevent_data_pid(struct pevent *pevent, struct record *rec); |
381 | const char *pevent_data_comm_from_pid(struct pevent *pevent, int pid); | 380 | const char *pevent_data_comm_from_pid(struct pevent *pevent, int pid); |
382 | void pevent_event_info(struct trace_seq *s, struct event_format *event, | 381 | void pevent_event_info(struct trace_seq *s, struct event_format *event, |
383 | int cpu, void *data, int size, unsigned long long nsecs); | 382 | int cpu, struct record *record); |
384 | 383 | ||
385 | struct event_format **pevent_list_events(struct pevent *pevent, enum event_sort_type); | 384 | struct event_format **pevent_list_events(struct pevent *pevent, enum event_sort_type); |
386 | 385 | ||
diff --git a/plugin_hrtimer.c b/plugin_hrtimer.c index 01f8ff3..2833f1b 100644 --- a/plugin_hrtimer.c +++ b/plugin_hrtimer.c | |||
@@ -30,10 +30,11 @@ static void print_field(struct trace_seq *s, const char *fmt, | |||
30 | trace_seq_printf(s, "CAN'T FIND FIELD \"%s\"", name); | 30 | trace_seq_printf(s, "CAN'T FIND FIELD \"%s\"", name); |
31 | } | 31 | } |
32 | 32 | ||
33 | static int timer_expire_handler(struct trace_seq *s, void *data, int size, | 33 | static int timer_expire_handler(struct trace_seq *s, struct record *record, |
34 | struct event_format *event, int cpu, | 34 | struct event_format *event, int cpu) |
35 | unsigned long long nsecs) | ||
36 | { | 35 | { |
36 | void *data = record->data; | ||
37 | |||
37 | trace_seq_printf(s, "hrtimer="); | 38 | trace_seq_printf(s, "hrtimer="); |
38 | 39 | ||
39 | if (_print_field(s, "0x%llx", event, "timer", data) == -1) | 40 | if (_print_field(s, "0x%llx", event, "timer", data) == -1) |
@@ -46,12 +47,12 @@ static int timer_expire_handler(struct trace_seq *s, void *data, int size, | |||
46 | return 0; | 47 | return 0; |
47 | } | 48 | } |
48 | 49 | ||
49 | static int timer_start_handler(struct trace_seq *s, void *data, int size, | 50 | static int timer_start_handler(struct trace_seq *s, struct record *record, |
50 | struct event_format *event, int cpu, | 51 | struct event_format *event, int cpu) |
51 | unsigned long long nsecs) | ||
52 | { | 52 | { |
53 | struct pevent *pevent = event->pevent; | 53 | struct pevent *pevent = event->pevent; |
54 | struct format_field *fn = pevent_find_field(event, "function"); | 54 | struct format_field *fn = pevent_find_field(event, "function"); |
55 | void *data = record->data; | ||
55 | 56 | ||
56 | trace_seq_printf(s, "hrtimer="); | 57 | trace_seq_printf(s, "hrtimer="); |
57 | 58 | ||
diff --git a/plugin_mac80211.c b/plugin_mac80211.c index 766d9ce..dd76d7c 100644 --- a/plugin_mac80211.c +++ b/plugin_mac80211.c | |||
@@ -145,10 +145,11 @@ static void _print_flag(struct trace_seq *s, struct event_format *event, | |||
145 | #define SFX(fn) _print_field(s, fn ":%#x", event, fn, data) | 145 | #define SFX(fn) _print_field(s, fn ":%#x", event, fn, data) |
146 | #define SP() trace_seq_putc(s, ' ') | 146 | #define SP() trace_seq_putc(s, ' ') |
147 | 147 | ||
148 | static int drv_bss_info_changed(struct trace_seq *s, void *data, int size, | 148 | static int drv_bss_info_changed(struct trace_seq *s, struct record *record, |
149 | struct event_format *event, int cpu, | 149 | struct event_format *event, int cpu) |
150 | unsigned long long nsecs) | ||
151 | { | 150 | { |
151 | void *data = record->data; | ||
152 | |||
152 | print_string(s, event, "wiphy_name", data); | 153 | print_string(s, event, "wiphy_name", data); |
153 | trace_seq_printf(s, " vif:"); | 154 | trace_seq_printf(s, " vif:"); |
154 | print_string(s, event, "vif_name", data); | 155 | print_string(s, event, "vif_name", data); |
@@ -172,10 +173,11 @@ static int drv_bss_info_changed(struct trace_seq *s, void *data, int size, | |||
172 | return 0; | 173 | return 0; |
173 | } | 174 | } |
174 | 175 | ||
175 | static int drv_config(struct trace_seq *s, void *data, | 176 | static int drv_config(struct trace_seq *s, struct record *record, |
176 | int size, struct event_format *event, int cpu, | 177 | struct event_format *event, int cpu) |
177 | unsigned long long nsecs) | ||
178 | { | 178 | { |
179 | void *data = record->data; | ||
180 | |||
179 | print_string(s, event, "wiphy_name", data); | 181 | print_string(s, event, "wiphy_name", data); |
180 | trace_seq_putc(s, ' '); | 182 | trace_seq_putc(s, ' '); |
181 | print_flag(s, event, "flags", data, | 183 | print_flag(s, event, "flags", data, |
diff --git a/plugin_sched_switch.c b/plugin_sched_switch.c index 4690f2f..3cec83c 100644 --- a/plugin_sched_switch.c +++ b/plugin_sched_switch.c | |||
@@ -47,12 +47,12 @@ static void write_state(struct trace_seq *s, int val) | |||
47 | trace_seq_putc(s, 'R'); | 47 | trace_seq_putc(s, 'R'); |
48 | } | 48 | } |
49 | 49 | ||
50 | static int sched_wakeup_handler(struct trace_seq *s, void *data, int size, | 50 | static int sched_wakeup_handler(struct trace_seq *s, struct record *record, |
51 | struct event_format *event, int cpu, | 51 | struct event_format *event, int cpu) |
52 | unsigned long long nsecs) | ||
53 | { | 52 | { |
54 | struct format_field *field; | 53 | struct format_field *field; |
55 | unsigned long long val; | 54 | unsigned long long val; |
55 | void *data = record->data; | ||
56 | 56 | ||
57 | if (get_field_val(s, data, event, "common_pid", &val, 1)) | 57 | if (get_field_val(s, data, event, "common_pid", &val, 1)) |
58 | return trace_seq_putc(s, '!'); | 58 | return trace_seq_putc(s, '!'); |
@@ -102,12 +102,12 @@ static int sched_wakeup_handler(struct trace_seq *s, void *data, int size, | |||
102 | return 0; | 102 | return 0; |
103 | } | 103 | } |
104 | 104 | ||
105 | static int sched_switch_handler(struct trace_seq *s, void *data, int size, | 105 | static int sched_switch_handler(struct trace_seq *s, struct record *record, |
106 | struct event_format *event, int cpu, | 106 | struct event_format *event, int cpu) |
107 | unsigned long long nsecs) | ||
108 | { | 107 | { |
109 | struct format_field *field; | 108 | struct format_field *field; |
110 | unsigned long long val; | 109 | unsigned long long val; |
110 | void *data = record->data; | ||
111 | 111 | ||
112 | if (get_field_val(s, data, event, "prev_pid", &val, 1)) | 112 | if (get_field_val(s, data, event, "prev_pid", &val, 1)) |
113 | return trace_seq_putc(s, '!'); | 113 | return trace_seq_putc(s, '!'); |
diff --git a/trace-ftrace.c b/trace-ftrace.c index 9dfe04d..6b4ab8e 100644 --- a/trace-ftrace.c +++ b/trace-ftrace.c | |||
@@ -28,13 +28,13 @@ static int get_field_val(struct trace_seq *s, void *data, | |||
28 | return 0; | 28 | return 0; |
29 | } | 29 | } |
30 | 30 | ||
31 | static int function_handler(struct trace_seq *s, void *data, int size, | 31 | static int function_handler(struct trace_seq *s, struct record *record, |
32 | struct event_format *event, int cpu, | 32 | struct event_format *event, int cpu) |
33 | unsigned long long nsecs) | ||
34 | { | 33 | { |
35 | struct pevent *pevent = event->pevent; | 34 | struct pevent *pevent = event->pevent; |
36 | unsigned long long function; | 35 | unsigned long long function; |
37 | const char *func; | 36 | const char *func; |
37 | void *data = record->data; | ||
38 | 38 | ||
39 | if (get_field_val(s, data, event, "ip", &function)) | 39 | if (get_field_val(s, data, event, "ip", &function)) |
40 | return trace_seq_putc(s, '!'); | 40 | return trace_seq_putc(s, '!'); |
@@ -220,13 +220,14 @@ static int print_graph_nested(struct trace_seq *s, | |||
220 | } | 220 | } |
221 | 221 | ||
222 | static int | 222 | static int |
223 | fgraph_ent_handler(struct trace_seq *s, void *data, int size, | 223 | fgraph_ent_handler(struct trace_seq *s, struct record *record, |
224 | struct event_format *event, int cpu, | 224 | struct event_format *event, int cpu) |
225 | unsigned long long nsecs) | ||
226 | { | 225 | { |
227 | struct record *rec; | 226 | struct record *rec; |
228 | void *copy_data; | 227 | void *copy_data; |
229 | unsigned long long val, pid; | 228 | unsigned long long val, pid; |
229 | void *data = record->data; | ||
230 | int size = record->size; | ||
230 | int ret; | 231 | int ret; |
231 | 232 | ||
232 | if (get_field_val(s, data, event, "common_pid", &pid)) | 233 | if (get_field_val(s, data, event, "common_pid", &pid)) |
@@ -258,12 +259,12 @@ fgraph_ent_handler(struct trace_seq *s, void *data, int size, | |||
258 | } | 259 | } |
259 | 260 | ||
260 | static int | 261 | static int |
261 | fgraph_ret_handler(struct trace_seq *s, void *data, int size, | 262 | fgraph_ret_handler(struct trace_seq *s, struct record *record, |
262 | struct event_format *event, int cpu, | 263 | struct event_format *event, int cpu) |
263 | unsigned long long nsecs) | ||
264 | { | 264 | { |
265 | unsigned long long rettime, calltime; | 265 | unsigned long long rettime, calltime; |
266 | unsigned long long duration, depth; | 266 | unsigned long long duration, depth; |
267 | void *data = record->data; | ||
267 | int i; | 268 | int i; |
268 | 269 | ||
269 | if (get_field_val(s, data, event, "rettime", &rettime)) | 270 | if (get_field_val(s, data, event, "rettime", &rettime)) |
@@ -291,13 +292,13 @@ fgraph_ret_handler(struct trace_seq *s, void *data, int size, | |||
291 | } | 292 | } |
292 | 293 | ||
293 | static int | 294 | static int |
294 | trace_stack_handler(struct trace_seq *s, void *data, int size, | 295 | trace_stack_handler(struct trace_seq *s, struct record *record, |
295 | struct event_format *event, int cpu, | 296 | struct event_format *event, int cpu) |
296 | unsigned long long nsecs) | ||
297 | { | 297 | { |
298 | struct format_field *field; | 298 | struct format_field *field; |
299 | unsigned long long addr; | 299 | unsigned long long addr; |
300 | const char *func; | 300 | const char *func; |
301 | void *data = record->data; | ||
301 | int ret; | 302 | int ret; |
302 | int i; | 303 | int i; |
303 | 304 | ||
diff --git a/trace-read.c b/trace-read.c index 5a5d4df..48bec1d 100644 --- a/trace-read.c +++ b/trace-read.c | |||
@@ -202,7 +202,7 @@ static void show_data(struct tracecmd_input *handle, int cpu) | |||
202 | test_save(record, cpu); | 202 | test_save(record, cpu); |
203 | 203 | ||
204 | trace_seq_init(&s); | 204 | trace_seq_init(&s); |
205 | pevent_print_event(pevent, &s, cpu, record->data, record->size, record->ts); | 205 | pevent_print_event(pevent, &s, cpu, record); |
206 | trace_seq_do_printf(&s); | 206 | trace_seq_do_printf(&s); |
207 | printf("\n"); | 207 | printf("\n"); |
208 | 208 | ||