diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-12 23:34:09 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-12 23:34:09 -0400 |
commit | 2084e0225ed14cc1959c8aa703a3870c95fde4ab (patch) | |
tree | 818517eb07b585e981ce81c200294a8ec7a8e992 /kernel/trace/trace.h | |
parent | 4c6ed8f496fe89ff81b3d6e617a531bedfb613e4 (diff) | |
parent | 5cc985488845ec7227a2c5cfd2fd62cf57fb411a (diff) |
Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index c5e1d8865fe4..35cfa7bbaf38 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -20,6 +20,7 @@ enum trace_type { | |||
20 | TRACE_WAKE, | 20 | TRACE_WAKE, |
21 | TRACE_STACK, | 21 | TRACE_STACK, |
22 | TRACE_PRINT, | 22 | TRACE_PRINT, |
23 | TRACE_BPRINT, | ||
23 | TRACE_SPECIAL, | 24 | TRACE_SPECIAL, |
24 | TRACE_MMIO_RW, | 25 | TRACE_MMIO_RW, |
25 | TRACE_MMIO_MAP, | 26 | TRACE_MMIO_MAP, |
@@ -117,7 +118,7 @@ struct userstack_entry { | |||
117 | /* | 118 | /* |
118 | * trace_printk entry: | 119 | * trace_printk entry: |
119 | */ | 120 | */ |
120 | struct print_entry { | 121 | struct bprint_entry { |
121 | struct trace_entry ent; | 122 | struct trace_entry ent; |
122 | unsigned long ip; | 123 | unsigned long ip; |
123 | int depth; | 124 | int depth; |
@@ -125,6 +126,13 @@ struct print_entry { | |||
125 | u32 buf[]; | 126 | u32 buf[]; |
126 | }; | 127 | }; |
127 | 128 | ||
129 | struct print_entry { | ||
130 | struct trace_entry ent; | ||
131 | unsigned long ip; | ||
132 | int depth; | ||
133 | char buf[]; | ||
134 | }; | ||
135 | |||
128 | #define TRACE_OLD_SIZE 88 | 136 | #define TRACE_OLD_SIZE 88 |
129 | 137 | ||
130 | struct trace_field_cont { | 138 | struct trace_field_cont { |
@@ -286,6 +294,7 @@ extern void __ftrace_bad_type(void); | |||
286 | IF_ASSIGN(var, ent, struct stack_entry, TRACE_STACK); \ | 294 | IF_ASSIGN(var, ent, struct stack_entry, TRACE_STACK); \ |
287 | IF_ASSIGN(var, ent, struct userstack_entry, TRACE_USER_STACK);\ | 295 | IF_ASSIGN(var, ent, struct userstack_entry, TRACE_USER_STACK);\ |
288 | IF_ASSIGN(var, ent, struct print_entry, TRACE_PRINT); \ | 296 | IF_ASSIGN(var, ent, struct print_entry, TRACE_PRINT); \ |
297 | IF_ASSIGN(var, ent, struct bprint_entry, TRACE_BPRINT); \ | ||
289 | IF_ASSIGN(var, ent, struct special_entry, 0); \ | 298 | IF_ASSIGN(var, ent, struct special_entry, 0); \ |
290 | IF_ASSIGN(var, ent, struct trace_mmiotrace_rw, \ | 299 | IF_ASSIGN(var, ent, struct trace_mmiotrace_rw, \ |
291 | TRACE_MMIO_RW); \ | 300 | TRACE_MMIO_RW); \ |
@@ -570,6 +579,8 @@ extern int trace_selftest_startup_branch(struct tracer *trace, | |||
570 | extern void *head_page(struct trace_array_cpu *data); | 579 | extern void *head_page(struct trace_array_cpu *data); |
571 | extern long ns2usecs(cycle_t nsec); | 580 | extern long ns2usecs(cycle_t nsec); |
572 | extern int | 581 | extern int |
582 | trace_vbprintk(unsigned long ip, int depth, const char *fmt, va_list args); | ||
583 | extern int | ||
573 | trace_vprintk(unsigned long ip, int depth, const char *fmt, va_list args); | 584 | trace_vprintk(unsigned long ip, int depth, const char *fmt, va_list args); |
574 | 585 | ||
575 | extern unsigned long trace_flags; | 586 | extern unsigned long trace_flags; |
@@ -737,6 +748,9 @@ static inline void trace_branch_disable(void) | |||
737 | } | 748 | } |
738 | #endif /* CONFIG_BRANCH_TRACER */ | 749 | #endif /* CONFIG_BRANCH_TRACER */ |
739 | 750 | ||
751 | /* set ring buffers to default size if not already done so */ | ||
752 | int tracing_update_buffers(void); | ||
753 | |||
740 | /* trace event type bit fields, not numeric */ | 754 | /* trace event type bit fields, not numeric */ |
741 | enum { | 755 | enum { |
742 | TRACE_EVENT_TYPE_PRINTF = 1, | 756 | TRACE_EVENT_TYPE_PRINTF = 1, |
@@ -759,4 +773,21 @@ void event_trace_printk(unsigned long ip, const char *fmt, ...); | |||
759 | extern struct ftrace_event_call __start_ftrace_events[]; | 773 | extern struct ftrace_event_call __start_ftrace_events[]; |
760 | extern struct ftrace_event_call __stop_ftrace_events[]; | 774 | extern struct ftrace_event_call __stop_ftrace_events[]; |
761 | 775 | ||
776 | extern const char *__start___trace_bprintk_fmt[]; | ||
777 | extern const char *__stop___trace_bprintk_fmt[]; | ||
778 | |||
779 | #define event_trace_printk(ip, fmt, args...) \ | ||
780 | do { \ | ||
781 | __trace_printk_check_format(fmt, ##args); \ | ||
782 | tracing_record_cmdline(current); \ | ||
783 | if (__builtin_constant_p(fmt)) { \ | ||
784 | static const char *trace_printk_fmt \ | ||
785 | __attribute__((section("__trace_printk_fmt"))) = \ | ||
786 | __builtin_constant_p(fmt) ? fmt : NULL; \ | ||
787 | \ | ||
788 | __trace_bprintk(ip, trace_printk_fmt, ##args); \ | ||
789 | } else \ | ||
790 | __trace_printk(ip, fmt, ##args); \ | ||
791 | } while (0) | ||
792 | |||
762 | #endif /* _LINUX_KERNEL_TRACE_H */ | 793 | #endif /* _LINUX_KERNEL_TRACE_H */ |