Messages in this thread | | | Date | Thu, 06 Aug 2009 14:05:49 +0800 | From | Li Zefan <> | Subject | [PATCH 0/3] tracing/filters: Support specifying filter hook to a TRACE_EVENT field |
| |
Currently only static strings and dynamic strings have their own filter functions, other types of field are treated as integers.
This patchset allows assigning a specific filter type to a field, so a field which is defined as:
__field_ext(const char *, str, FILTER_PTR_STR)
will be treated as a string but not a plain pointer, and then we can set the filter like this:
# echo 'str == foo' > filter
And it's easy to add more filter functions for different types to turn these into valid operations:
(dev is of type dev_t) # echo 'dev == 8:0' > filter
(callsite is of type void * or unsigned long) # echo 'callsite == skb_free' > filter
[PATCH 1/3] tracing/filters: Add filter_type to struct ftrace_event_field [PATCH 2/3] tracing/filters: Add __field_ext() to TRACE_EVENT [PATCH 3/3] tracing/filters: Support filtering for char * strings --- include/linux/ftrace_event.h | 12 +++++++- include/trace/ftrace.h | 28 ++++++++++++++++---- kernel/trace/trace.h | 2 + kernel/trace/trace_events.c | 9 ++++++- kernel/trace/trace_events_filter.c | 47 +++++++++++++++++++++++++---------- kernel/trace/trace_export.c | 7 +++-- 6 files changed, 79 insertions(+), 26 deletions(-)
| |