diff options
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index b93ecbadad6d..95059f091a24 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -56,17 +56,23 @@ enum trace_type { | |||
56 | #define F_STRUCT(args...) args | 56 | #define F_STRUCT(args...) args |
57 | 57 | ||
58 | #undef FTRACE_ENTRY | 58 | #undef FTRACE_ENTRY |
59 | #define FTRACE_ENTRY(name, struct_name, id, tstruct, print) \ | 59 | #define FTRACE_ENTRY(name, struct_name, id, tstruct, print, filter) \ |
60 | struct struct_name { \ | 60 | struct struct_name { \ |
61 | struct trace_entry ent; \ | 61 | struct trace_entry ent; \ |
62 | tstruct \ | 62 | tstruct \ |
63 | } | 63 | } |
64 | 64 | ||
65 | #undef TP_ARGS | 65 | #undef TP_ARGS |
66 | #define TP_ARGS(args...) args | 66 | #define TP_ARGS(args...) args |
67 | 67 | ||
68 | #undef FTRACE_ENTRY_DUP | 68 | #undef FTRACE_ENTRY_DUP |
69 | #define FTRACE_ENTRY_DUP(name, name_struct, id, tstruct, printk) | 69 | #define FTRACE_ENTRY_DUP(name, name_struct, id, tstruct, printk, filter) |
70 | |||
71 | #undef FTRACE_ENTRY_REG | ||
72 | #define FTRACE_ENTRY_REG(name, struct_name, id, tstruct, print, \ | ||
73 | filter, regfn) \ | ||
74 | FTRACE_ENTRY(name, struct_name, id, PARAMS(tstruct), PARAMS(print), \ | ||
75 | filter) | ||
70 | 76 | ||
71 | #include "trace_entries.h" | 77 | #include "trace_entries.h" |
72 | 78 | ||
@@ -148,6 +154,7 @@ struct trace_array { | |||
148 | struct ring_buffer *buffer; | 154 | struct ring_buffer *buffer; |
149 | unsigned long entries; | 155 | unsigned long entries; |
150 | int cpu; | 156 | int cpu; |
157 | int buffer_disabled; | ||
151 | cycle_t time_start; | 158 | cycle_t time_start; |
152 | struct task_struct *waiter; | 159 | struct task_struct *waiter; |
153 | struct trace_array_cpu *data[NR_CPUS]; | 160 | struct trace_array_cpu *data[NR_CPUS]; |
@@ -288,6 +295,8 @@ struct tracer { | |||
288 | /* for function tracing recursion */ | 295 | /* for function tracing recursion */ |
289 | #define TRACE_INTERNAL_BIT (1<<11) | 296 | #define TRACE_INTERNAL_BIT (1<<11) |
290 | #define TRACE_GLOBAL_BIT (1<<12) | 297 | #define TRACE_GLOBAL_BIT (1<<12) |
298 | #define TRACE_CONTROL_BIT (1<<13) | ||
299 | |||
291 | /* | 300 | /* |
292 | * Abuse of the trace_recursion. | 301 | * Abuse of the trace_recursion. |
293 | * As we need a way to maintain state if we are tracing the function | 302 | * As we need a way to maintain state if we are tracing the function |
@@ -589,6 +598,8 @@ static inline int ftrace_trace_task(struct task_struct *task) | |||
589 | static inline int ftrace_is_dead(void) { return 0; } | 598 | static inline int ftrace_is_dead(void) { return 0; } |
590 | #endif | 599 | #endif |
591 | 600 | ||
601 | int ftrace_event_is_function(struct ftrace_event_call *call); | ||
602 | |||
592 | /* | 603 | /* |
593 | * struct trace_parser - servers for reading the user input separated by spaces | 604 | * struct trace_parser - servers for reading the user input separated by spaces |
594 | * @cont: set if the input is not complete - no final space char was found | 605 | * @cont: set if the input is not complete - no final space char was found |
@@ -766,9 +777,7 @@ struct filter_pred { | |||
766 | u64 val; | 777 | u64 val; |
767 | struct regex regex; | 778 | struct regex regex; |
768 | unsigned short *ops; | 779 | unsigned short *ops; |
769 | #ifdef CONFIG_FTRACE_STARTUP_TEST | ||
770 | struct ftrace_event_field *field; | 780 | struct ftrace_event_field *field; |
771 | #endif | ||
772 | int offset; | 781 | int offset; |
773 | int not; | 782 | int not; |
774 | int op; | 783 | int op; |
@@ -818,12 +827,20 @@ extern const char *__start___trace_bprintk_fmt[]; | |||
818 | extern const char *__stop___trace_bprintk_fmt[]; | 827 | extern const char *__stop___trace_bprintk_fmt[]; |
819 | 828 | ||
820 | #undef FTRACE_ENTRY | 829 | #undef FTRACE_ENTRY |
821 | #define FTRACE_ENTRY(call, struct_name, id, tstruct, print) \ | 830 | #define FTRACE_ENTRY(call, struct_name, id, tstruct, print, filter) \ |
822 | extern struct ftrace_event_call \ | 831 | extern struct ftrace_event_call \ |
823 | __attribute__((__aligned__(4))) event_##call; | 832 | __attribute__((__aligned__(4))) event_##call; |
824 | #undef FTRACE_ENTRY_DUP | 833 | #undef FTRACE_ENTRY_DUP |
825 | #define FTRACE_ENTRY_DUP(call, struct_name, id, tstruct, print) \ | 834 | #define FTRACE_ENTRY_DUP(call, struct_name, id, tstruct, print, filter) \ |
826 | FTRACE_ENTRY(call, struct_name, id, PARAMS(tstruct), PARAMS(print)) | 835 | FTRACE_ENTRY(call, struct_name, id, PARAMS(tstruct), PARAMS(print), \ |
836 | filter) | ||
827 | #include "trace_entries.h" | 837 | #include "trace_entries.h" |
828 | 838 | ||
839 | #ifdef CONFIG_FUNCTION_TRACER | ||
840 | int perf_ftrace_event_register(struct ftrace_event_call *call, | ||
841 | enum trace_reg type, void *data); | ||
842 | #else | ||
843 | #define perf_ftrace_event_register NULL | ||
844 | #endif /* CONFIG_FUNCTION_TRACER */ | ||
845 | |||
829 | #endif /* _LINUX_KERNEL_TRACE_H */ | 846 | #endif /* _LINUX_KERNEL_TRACE_H */ |