aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.h
diff options
context:
space:
mode:
authorTom Zanussi <tzanussi@gmail.com>2009-03-22 04:31:17 -0400
committerIngo Molnar <mingo@elte.hu>2009-03-22 13:38:47 -0400
commitcfb180f3e71b2a280a254c8646a9ab1beab63f84 (patch)
tree93fb1a319b40851ebb7a3cc0d9ea4cc9a88e919a /kernel/trace/trace.h
parent7ce7e4249921d5073e764f7ff7ad83cfa9894bd7 (diff)
tracing: add per-subsystem filtering
This patch adds per-subsystem filtering to the event tracing subsystem. It adds a 'filter' debugfs file to each subsystem directory. This file can be written to to set filters; reading from it will display the current set of filters set for that subsystem. Basically what it does is propagate the filter down to each event contained in the subsystem. If a particular event doesn't have a field with the name specified in the filter, it simply doesn't get set for that event. You can verify whether or not the filter was set for a particular event by looking at the filter file for that event. As with per-event filters, compound expressions are supported, echoing '0' to the subsystem's filter file clears all filters in the subsystem, etc. Signed-off-by: Tom Zanussi <tzanussi@gmail.com> Acked-by: Frederic Weisbecker <fweisbec@gmail.com> LKML-Reference: <1237710677.7703.49.camel@charm-linux> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r--kernel/trace/trace.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index d9eb39e4bb38..f267723c3c52 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -804,6 +804,18 @@ struct ftrace_event_call {
804#endif 804#endif
805}; 805};
806 806
807struct event_subsystem {
808 struct list_head list;
809 const char *name;
810 struct dentry *entry;
811 struct filter_pred **preds;
812};
813
814#define events_for_each(event) \
815 for (event = __start_ftrace_events; \
816 (unsigned long)event < (unsigned long)__stop_ftrace_events; \
817 event++)
818
807#define MAX_FILTER_PRED 8 819#define MAX_FILTER_PRED 8
808 820
809struct filter_pred; 821struct filter_pred;
@@ -832,6 +844,9 @@ extern int filter_add_pred(struct ftrace_event_call *call,
832 struct filter_pred *pred); 844 struct filter_pred *pred);
833extern void filter_free_preds(struct ftrace_event_call *call); 845extern void filter_free_preds(struct ftrace_event_call *call);
834extern int filter_match_preds(struct ftrace_event_call *call, void *rec); 846extern int filter_match_preds(struct ftrace_event_call *call, void *rec);
847extern void filter_free_subsystem_preds(struct event_subsystem *system);
848extern int filter_add_subsystem_pred(struct event_subsystem *system,
849 struct filter_pred *pred);
835 850
836void event_trace_printk(unsigned long ip, const char *fmt, ...); 851void event_trace_printk(unsigned long ip, const char *fmt, ...);
837extern struct ftrace_event_call __start_ftrace_events[]; 852extern struct ftrace_event_call __start_ftrace_events[];