diff options
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 742fe1349276..94ed45e93a80 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -17,7 +17,6 @@ enum trace_type { | |||
17 | TRACE_FN, | 17 | TRACE_FN, |
18 | TRACE_CTX, | 18 | TRACE_CTX, |
19 | TRACE_WAKE, | 19 | TRACE_WAKE, |
20 | TRACE_CONT, | ||
21 | TRACE_STACK, | 20 | TRACE_STACK, |
22 | TRACE_PRINT, | 21 | TRACE_PRINT, |
23 | TRACE_SPECIAL, | 22 | TRACE_SPECIAL, |
@@ -34,7 +33,7 @@ enum trace_type { | |||
34 | TRACE_KMEM_FREE, | 33 | TRACE_KMEM_FREE, |
35 | TRACE_POWER, | 34 | TRACE_POWER, |
36 | 35 | ||
37 | __TRACE_LAST_TYPE | 36 | __TRACE_LAST_TYPE, |
38 | }; | 37 | }; |
39 | 38 | ||
40 | /* | 39 | /* |
@@ -199,7 +198,6 @@ struct kmemtrace_free_entry { | |||
199 | * NEED_RESCED - reschedule is requested | 198 | * NEED_RESCED - reschedule is requested |
200 | * HARDIRQ - inside an interrupt handler | 199 | * HARDIRQ - inside an interrupt handler |
201 | * SOFTIRQ - inside a softirq handler | 200 | * SOFTIRQ - inside a softirq handler |
202 | * CONT - multiple entries hold the trace item | ||
203 | */ | 201 | */ |
204 | enum trace_flag_type { | 202 | enum trace_flag_type { |
205 | TRACE_FLAG_IRQS_OFF = 0x01, | 203 | TRACE_FLAG_IRQS_OFF = 0x01, |
@@ -207,7 +205,6 @@ enum trace_flag_type { | |||
207 | TRACE_FLAG_NEED_RESCHED = 0x04, | 205 | TRACE_FLAG_NEED_RESCHED = 0x04, |
208 | TRACE_FLAG_HARDIRQ = 0x08, | 206 | TRACE_FLAG_HARDIRQ = 0x08, |
209 | TRACE_FLAG_SOFTIRQ = 0x10, | 207 | TRACE_FLAG_SOFTIRQ = 0x10, |
210 | TRACE_FLAG_CONT = 0x20, | ||
211 | }; | 208 | }; |
212 | 209 | ||
213 | #define TRACE_BUF_SIZE 1024 | 210 | #define TRACE_BUF_SIZE 1024 |
@@ -283,7 +280,6 @@ extern void __ftrace_bad_type(void); | |||
283 | do { \ | 280 | do { \ |
284 | IF_ASSIGN(var, ent, struct ftrace_entry, TRACE_FN); \ | 281 | IF_ASSIGN(var, ent, struct ftrace_entry, TRACE_FN); \ |
285 | IF_ASSIGN(var, ent, struct ctx_switch_entry, 0); \ | 282 | IF_ASSIGN(var, ent, struct ctx_switch_entry, 0); \ |
286 | IF_ASSIGN(var, ent, struct trace_field_cont, TRACE_CONT); \ | ||
287 | IF_ASSIGN(var, ent, struct stack_entry, TRACE_STACK); \ | 283 | IF_ASSIGN(var, ent, struct stack_entry, TRACE_STACK); \ |
288 | IF_ASSIGN(var, ent, struct userstack_entry, TRACE_USER_STACK);\ | 284 | IF_ASSIGN(var, ent, struct userstack_entry, TRACE_USER_STACK);\ |
289 | IF_ASSIGN(var, ent, struct print_entry, TRACE_PRINT); \ | 285 | IF_ASSIGN(var, ent, struct print_entry, TRACE_PRINT); \ |
@@ -365,6 +361,21 @@ struct tracer { | |||
365 | struct tracer *next; | 361 | struct tracer *next; |
366 | int print_max; | 362 | int print_max; |
367 | struct tracer_flags *flags; | 363 | struct tracer_flags *flags; |
364 | |||
365 | /* | ||
366 | * If you change one of the following on tracing runtime, recall | ||
367 | * init_tracer_stat() | ||
368 | */ | ||
369 | |||
370 | /* Iteration over statistic entries */ | ||
371 | void *(*stat_start)(void); | ||
372 | void *(*stat_next)(void *prev, int idx); | ||
373 | /* Compare two entries for sorting (optional) for stats */ | ||
374 | int (*stat_cmp)(void *p1, void *p2); | ||
375 | /* Print a stat entry */ | ||
376 | int (*stat_show)(struct seq_file *s, void *p); | ||
377 | /* Print the headers of your stat entries */ | ||
378 | int (*stat_headers)(struct seq_file *s); | ||
368 | }; | 379 | }; |
369 | 380 | ||
370 | struct trace_seq { | 381 | struct trace_seq { |
@@ -450,6 +461,8 @@ void tracing_start_sched_switch_record(void); | |||
450 | int register_tracer(struct tracer *type); | 461 | int register_tracer(struct tracer *type); |
451 | void unregister_tracer(struct tracer *type); | 462 | void unregister_tracer(struct tracer *type); |
452 | 463 | ||
464 | void init_tracer_stat(struct tracer *trace); | ||
465 | |||
453 | extern unsigned long nsecs_to_usecs(unsigned long nsecs); | 466 | extern unsigned long nsecs_to_usecs(unsigned long nsecs); |
454 | 467 | ||
455 | extern unsigned long tracing_max_latency; | 468 | extern unsigned long tracing_max_latency; |
@@ -481,10 +494,10 @@ struct tracer_switch_ops { | |||
481 | void *private; | 494 | void *private; |
482 | struct tracer_switch_ops *next; | 495 | struct tracer_switch_ops *next; |
483 | }; | 496 | }; |
484 | |||
485 | char *trace_find_cmdline(int pid); | ||
486 | #endif /* CONFIG_CONTEXT_SWITCH_TRACER */ | 497 | #endif /* CONFIG_CONTEXT_SWITCH_TRACER */ |
487 | 498 | ||
499 | extern char *trace_find_cmdline(int pid); | ||
500 | |||
488 | #ifdef CONFIG_DYNAMIC_FTRACE | 501 | #ifdef CONFIG_DYNAMIC_FTRACE |
489 | extern unsigned long ftrace_update_tot_cnt; | 502 | extern unsigned long ftrace_update_tot_cnt; |
490 | #define DYN_FTRACE_TEST_NAME trace_selftest_dynamic_test_func | 503 | #define DYN_FTRACE_TEST_NAME trace_selftest_dynamic_test_func |
@@ -513,15 +526,6 @@ extern int trace_selftest_startup_branch(struct tracer *trace, | |||
513 | #endif /* CONFIG_FTRACE_STARTUP_TEST */ | 526 | #endif /* CONFIG_FTRACE_STARTUP_TEST */ |
514 | 527 | ||
515 | extern void *head_page(struct trace_array_cpu *data); | 528 | extern void *head_page(struct trace_array_cpu *data); |
516 | extern int trace_seq_printf(struct trace_seq *s, const char *fmt, ...); | ||
517 | extern void trace_seq_print_cont(struct trace_seq *s, | ||
518 | struct trace_iterator *iter); | ||
519 | |||
520 | extern int | ||
521 | seq_print_ip_sym(struct trace_seq *s, unsigned long ip, | ||
522 | unsigned long sym_flags); | ||
523 | extern ssize_t trace_seq_to_user(struct trace_seq *s, char __user *ubuf, | ||
524 | size_t cnt); | ||
525 | extern long ns2usecs(cycle_t nsec); | 529 | extern long ns2usecs(cycle_t nsec); |
526 | extern int | 530 | extern int |
527 | trace_vprintk(unsigned long ip, int depth, const char *fmt, va_list args); | 531 | trace_vprintk(unsigned long ip, int depth, const char *fmt, va_list args); |