diff options
Diffstat (limited to 'include/linux/ftrace_event.h')
-rw-r--r-- | include/linux/ftrace_event.h | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index a81170de7f6b..23f7179bf74e 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
@@ -93,16 +93,22 @@ void tracing_generic_entry_update(struct trace_entry *entry, | |||
93 | unsigned long flags, | 93 | unsigned long flags, |
94 | int pc); | 94 | int pc); |
95 | struct ring_buffer_event * | 95 | struct ring_buffer_event * |
96 | trace_current_buffer_lock_reserve(int type, unsigned long len, | 96 | trace_current_buffer_lock_reserve(struct ring_buffer **current_buffer, |
97 | int type, unsigned long len, | ||
97 | unsigned long flags, int pc); | 98 | unsigned long flags, int pc); |
98 | void trace_current_buffer_unlock_commit(struct ring_buffer_event *event, | 99 | void trace_current_buffer_unlock_commit(struct ring_buffer *buffer, |
100 | struct ring_buffer_event *event, | ||
99 | unsigned long flags, int pc); | 101 | unsigned long flags, int pc); |
100 | void trace_nowake_buffer_unlock_commit(struct ring_buffer_event *event, | 102 | void trace_nowake_buffer_unlock_commit(struct ring_buffer *buffer, |
103 | struct ring_buffer_event *event, | ||
101 | unsigned long flags, int pc); | 104 | unsigned long flags, int pc); |
102 | void trace_current_buffer_discard_commit(struct ring_buffer_event *event); | 105 | void trace_current_buffer_discard_commit(struct ring_buffer *buffer, |
106 | struct ring_buffer_event *event); | ||
103 | 107 | ||
104 | void tracing_record_cmdline(struct task_struct *tsk); | 108 | void tracing_record_cmdline(struct task_struct *tsk); |
105 | 109 | ||
110 | struct event_filter; | ||
111 | |||
106 | struct ftrace_event_call { | 112 | struct ftrace_event_call { |
107 | struct list_head list; | 113 | struct list_head list; |
108 | char *name; | 114 | char *name; |
@@ -110,16 +116,18 @@ struct ftrace_event_call { | |||
110 | struct dentry *dir; | 116 | struct dentry *dir; |
111 | struct trace_event *event; | 117 | struct trace_event *event; |
112 | int enabled; | 118 | int enabled; |
113 | int (*regfunc)(void); | 119 | int (*regfunc)(void *); |
114 | void (*unregfunc)(void); | 120 | void (*unregfunc)(void *); |
115 | int id; | 121 | int id; |
116 | int (*raw_init)(void); | 122 | int (*raw_init)(void); |
117 | int (*show_format)(struct trace_seq *s); | 123 | int (*show_format)(struct ftrace_event_call *call, |
118 | int (*define_fields)(void); | 124 | struct trace_seq *s); |
125 | int (*define_fields)(struct ftrace_event_call *); | ||
119 | struct list_head fields; | 126 | struct list_head fields; |
120 | int filter_active; | 127 | int filter_active; |
121 | void *filter; | 128 | struct event_filter *filter; |
122 | void *mod; | 129 | void *mod; |
130 | void *data; | ||
123 | 131 | ||
124 | atomic_t profile_count; | 132 | atomic_t profile_count; |
125 | int (*profile_enable)(struct ftrace_event_call *); | 133 | int (*profile_enable)(struct ftrace_event_call *); |
@@ -129,15 +137,25 @@ struct ftrace_event_call { | |||
129 | #define MAX_FILTER_PRED 32 | 137 | #define MAX_FILTER_PRED 32 |
130 | #define MAX_FILTER_STR_VAL 128 | 138 | #define MAX_FILTER_STR_VAL 128 |
131 | 139 | ||
132 | extern int init_preds(struct ftrace_event_call *call); | ||
133 | extern void destroy_preds(struct ftrace_event_call *call); | 140 | extern void destroy_preds(struct ftrace_event_call *call); |
134 | extern int filter_match_preds(struct ftrace_event_call *call, void *rec); | 141 | extern int filter_match_preds(struct ftrace_event_call *call, void *rec); |
135 | extern int filter_current_check_discard(struct ftrace_event_call *call, | 142 | extern int filter_current_check_discard(struct ring_buffer *buffer, |
143 | struct ftrace_event_call *call, | ||
136 | void *rec, | 144 | void *rec, |
137 | struct ring_buffer_event *event); | 145 | struct ring_buffer_event *event); |
138 | 146 | ||
139 | extern int trace_define_field(struct ftrace_event_call *call, char *type, | 147 | enum { |
140 | char *name, int offset, int size, int is_signed); | 148 | FILTER_OTHER = 0, |
149 | FILTER_STATIC_STRING, | ||
150 | FILTER_DYN_STRING, | ||
151 | FILTER_PTR_STRING, | ||
152 | }; | ||
153 | |||
154 | extern int trace_define_field(struct ftrace_event_call *call, | ||
155 | const char *type, const char *name, | ||
156 | int offset, int size, int is_signed, | ||
157 | int filter_type); | ||
158 | extern int trace_define_common_fields(struct ftrace_event_call *call); | ||
141 | 159 | ||
142 | #define is_signed_type(type) (((type)(-1)) < 0) | 160 | #define is_signed_type(type) (((type)(-1)) < 0) |
143 | 161 | ||
@@ -162,11 +180,4 @@ do { \ | |||
162 | __trace_printk(ip, fmt, ##args); \ | 180 | __trace_printk(ip, fmt, ##args); \ |
163 | } while (0) | 181 | } while (0) |
164 | 182 | ||
165 | #define __common_field(type, item, is_signed) \ | ||
166 | ret = trace_define_field(event_call, #type, "common_" #item, \ | ||
167 | offsetof(typeof(field.ent), item), \ | ||
168 | sizeof(field.ent.item), is_signed); \ | ||
169 | if (ret) \ | ||
170 | return ret; | ||
171 | |||
172 | #endif /* _LINUX_FTRACE_EVENT_H */ | 183 | #endif /* _LINUX_FTRACE_EVENT_H */ |