aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--parse-events.c21
-rw-r--r--parse-events.h11
-rw-r--r--plugin_hrtimer.c13
-rw-r--r--plugin_mac80211.c14
-rw-r--r--plugin_sched_switch.c12
-rw-r--r--trace-ftrace.c25
-rw-r--r--trace-read.c2
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 */
3115void pevent_data_lat_fmt(struct pevent *pevent, 3115void 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 */
3217void pevent_event_info(struct trace_seq *s, struct event_format *event, 3218void 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
3228void pevent_print_event(struct pevent *pevent, struct trace_seq *s, 3229void 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;
61struct event_format; 61struct event_format;
62 62
63typedef int (*pevent_event_handler_func)(struct trace_seq *s, 63typedef 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
68typedef int (*pevent_plugin_load_func)(struct pevent *pevent); 67typedef int (*pevent_plugin_load_func)(struct pevent *pevent);
69 68
@@ -350,7 +349,7 @@ int pevent_register_print_string(struct pevent *pevent, char *fmt,
350int pevent_pid_is_registered(struct pevent *pevent, int pid); 349int pevent_pid_is_registered(struct pevent *pevent, int pid);
351 350
352void pevent_print_event(struct pevent *pevent, struct trace_seq *s, 351void 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
355int pevent_parse_header_page(struct pevent *pevent, char *buf, unsigned long size); 354int pevent_parse_header_page(struct pevent *pevent, char *buf, unsigned long size);
356 355
@@ -374,13 +373,13 @@ struct event_format *
374pevent_find_event_by_name(struct pevent *pevent, const char *sys, const char *name); 373pevent_find_event_by_name(struct pevent *pevent, const char *sys, const char *name);
375 374
376void pevent_data_lat_fmt(struct pevent *pevent, 375void 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);
378int pevent_data_type(struct pevent *pevent, struct record *rec); 377int pevent_data_type(struct pevent *pevent, struct record *rec);
379struct event_format *pevent_data_event_from_type(struct pevent *pevent, int type); 378struct event_format *pevent_data_event_from_type(struct pevent *pevent, int type);
380int pevent_data_pid(struct pevent *pevent, struct record *rec); 379int pevent_data_pid(struct pevent *pevent, struct record *rec);
381const char *pevent_data_comm_from_pid(struct pevent *pevent, int pid); 380const char *pevent_data_comm_from_pid(struct pevent *pevent, int pid);
382void pevent_event_info(struct trace_seq *s, struct event_format *event, 381void 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
385struct event_format **pevent_list_events(struct pevent *pevent, enum event_sort_type); 384struct 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
33static int timer_expire_handler(struct trace_seq *s, void *data, int size, 33static 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
49static int timer_start_handler(struct trace_seq *s, void *data, int size, 50static 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
148static int drv_bss_info_changed(struct trace_seq *s, void *data, int size, 148static 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
175static int drv_config(struct trace_seq *s, void *data, 176static 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
50static int sched_wakeup_handler(struct trace_seq *s, void *data, int size, 50static 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
105static int sched_switch_handler(struct trace_seq *s, void *data, int size, 105static 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
31static int function_handler(struct trace_seq *s, void *data, int size, 31static 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
222static int 222static int
223fgraph_ent_handler(struct trace_seq *s, void *data, int size, 223fgraph_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
260static int 261static int
261fgraph_ret_handler(struct trace_seq *s, void *data, int size, 262fgraph_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
293static int 294static int
294trace_stack_handler(struct trace_seq *s, void *data, int size, 295trace_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