aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.h
diff options
context:
space:
mode:
authorLi Zefan <lizf@cn.fujitsu.com>2009-07-19 22:20:53 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-07-20 13:29:19 -0400
commit1f9963cbb0280e0cd554161e00f1a0eeddbf1ae1 (patch)
tree80e27aa2cf5401fc04f7dbb806ad7e0ec04b6e8c /kernel/trace/trace.h
parentff4e9da2330beb8d64498a513d3f9694e941b01a (diff)
tracing/filters: improve subsystem filter
Currently a subsystem filter should be applicable to all events under the subsystem, and if it failed, all the event filters will be cleared. Those behaviors make subsys filter much less useful: # echo 'vec == 1' > irq/softirq_entry/filter # echo 'irq == 5' > irq/filter bash: echo: write error: Invalid argument # cat irq/softirq_entry/filter none I'd expect it set the filter for irq_handler_entry/exit, and not touch softirq_entry/exit. The basic idea is, try to see if the filter can be applied to which events, and then just apply to the those events: # echo 'vec == 1' > softirq_entry/filter # echo 'irq == 5' > filter # cat irq_handler_entry/filter irq == 5 # cat softirq_entry/filter vec == 1 Changelog for v2: - do some cleanups to address Frederic's comments. Inspired-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> Acked-by: Frederic Weisbecker <fweisbec@gmail.com> LKML-Reference: <4A63D485.7030703@cn.fujitsu.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r--kernel/trace/trace.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 94305c7bc11c..758b0dbed552 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -750,13 +750,14 @@ struct event_filter {
750 int n_preds; 750 int n_preds;
751 struct filter_pred **preds; 751 struct filter_pred **preds;
752 char *filter_string; 752 char *filter_string;
753 bool no_reset;
753}; 754};
754 755
755struct event_subsystem { 756struct event_subsystem {
756 struct list_head list; 757 struct list_head list;
757 const char *name; 758 const char *name;
758 struct dentry *entry; 759 struct dentry *entry;
759 void *filter; 760 struct event_filter *filter;
760 int nr_events; 761 int nr_events;
761}; 762};
762 763