diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2009-08-06 22:33:22 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2009-08-26 00:32:06 -0400 |
commit | 43b51ead3f752a3935116e5b1a94254b8573734f (patch) | |
tree | 5d9e88635c85ba7b1d273dea3c4d8d96e5000154 /include/trace | |
parent | aa38e9fc3ea804290efd3a39316d7f7e6c945800 (diff) |
tracing/filters: Add __field_ext() to TRACE_EVENT
Add __field_ext(), so a field can be assigned to a specific
filter_type, which matches a corresponding filter function.
For example, a later patch will allow this:
__field_ext(const char *, str, FILTER_PTR_STR);
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
LKML-Reference: <4A7B9272.6050709@cn.fujitsu.com>
[
Fixed a -1 to FILTER_OTHER
Forward ported to latest kernel.
]
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'include/trace')
-rw-r--r-- | include/trace/ftrace.h | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index 127400255e4c..1b1f742a6045 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h | |||
@@ -21,6 +21,9 @@ | |||
21 | #undef __field | 21 | #undef __field |
22 | #define __field(type, item) type item; | 22 | #define __field(type, item) type item; |
23 | 23 | ||
24 | #undef __field_ext | ||
25 | #define __field_ext(type, item, filter_type) type item; | ||
26 | |||
24 | #undef __array | 27 | #undef __array |
25 | #define __array(type, item, len) type item[len]; | 28 | #define __array(type, item, len) type item[len]; |
26 | 29 | ||
@@ -62,7 +65,10 @@ | |||
62 | */ | 65 | */ |
63 | 66 | ||
64 | #undef __field | 67 | #undef __field |
65 | #define __field(type, item); | 68 | #define __field(type, item) |
69 | |||
70 | #undef __field_ext | ||
71 | #define __field_ext(type, item, filter_type) | ||
66 | 72 | ||
67 | #undef __array | 73 | #undef __array |
68 | #define __array(type, item, len) | 74 | #define __array(type, item, len) |
@@ -110,6 +116,9 @@ | |||
110 | if (!ret) \ | 116 | if (!ret) \ |
111 | return 0; | 117 | return 0; |
112 | 118 | ||
119 | #undef __field_ext | ||
120 | #define __field_ext(type, item, filter_type) __field(type, item) | ||
121 | |||
113 | #undef __array | 122 | #undef __array |
114 | #define __array(type, item, len) \ | 123 | #define __array(type, item, len) \ |
115 | ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \ | 124 | ret = trace_seq_printf(s, "\tfield:" #type " " #item "[" #len "];\t" \ |
@@ -265,28 +274,33 @@ ftrace_raw_output_##call(struct trace_iterator *iter, int flags) \ | |||
265 | 274 | ||
266 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) | 275 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) |
267 | 276 | ||
268 | #undef __field | 277 | #undef __field_ext |
269 | #define __field(type, item) \ | 278 | #define __field_ext(type, item, filter_type) \ |
270 | ret = trace_define_field(event_call, #type, #item, \ | 279 | ret = trace_define_field(event_call, #type, #item, \ |
271 | offsetof(typeof(field), item), \ | 280 | offsetof(typeof(field), item), \ |
272 | sizeof(field.item), is_signed_type(type)); \ | 281 | sizeof(field.item), \ |
282 | is_signed_type(type), filter_type); \ | ||
273 | if (ret) \ | 283 | if (ret) \ |
274 | return ret; | 284 | return ret; |
275 | 285 | ||
286 | #undef __field | ||
287 | #define __field(type, item) __field_ext(type, item, FILTER_OTHER) | ||
288 | |||
276 | #undef __array | 289 | #undef __array |
277 | #define __array(type, item, len) \ | 290 | #define __array(type, item, len) \ |
278 | BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \ | 291 | BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \ |
279 | ret = trace_define_field(event_call, #type "[" #len "]", #item, \ | 292 | ret = trace_define_field(event_call, #type "[" #len "]", #item, \ |
280 | offsetof(typeof(field), item), \ | 293 | offsetof(typeof(field), item), \ |
281 | sizeof(field.item), 0); \ | 294 | sizeof(field.item), 0, FILTER_OTHER); \ |
282 | if (ret) \ | 295 | if (ret) \ |
283 | return ret; | 296 | return ret; |
284 | 297 | ||
285 | #undef __dynamic_array | 298 | #undef __dynamic_array |
286 | #define __dynamic_array(type, item, len) \ | 299 | #define __dynamic_array(type, item, len) \ |
287 | ret = trace_define_field(event_call, "__data_loc " #type "[]", #item, \ | 300 | ret = trace_define_field(event_call, "__data_loc " #type "[]", #item, \ |
288 | offsetof(typeof(field), __data_loc_##item), \ | 301 | offsetof(typeof(field), __data_loc_##item), \ |
289 | sizeof(field.__data_loc_##item), 0); | 302 | sizeof(field.__data_loc_##item), 0, \ |
303 | FILTER_OTHER); | ||
290 | 304 | ||
291 | #undef __string | 305 | #undef __string |
292 | #define __string(item, src) __dynamic_array(char, item, -1) | 306 | #define __string(item, src) __dynamic_array(char, item, -1) |
@@ -320,6 +334,9 @@ ftrace_define_fields_##call(struct ftrace_event_call *event_call) \ | |||
320 | #undef __field | 334 | #undef __field |
321 | #define __field(type, item) | 335 | #define __field(type, item) |
322 | 336 | ||
337 | #undef __field_ext | ||
338 | #define __field_ext(type, item, filter_type) | ||
339 | |||
323 | #undef __array | 340 | #undef __array |
324 | #define __array(type, item, len) | 341 | #define __array(type, item, len) |
325 | 342 | ||