aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-04-10 14:53:50 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-04-14 12:58:03 -0400
commit6d723736e472f7a0cd5b62c84152fceead241328 (patch)
tree8df2f6c47ebdfdeb8979758c877a5abbd9c06aef /include/linux
parent17c873ec280a03894bc718af817f7f24fa787ae1 (diff)
tracing/events: add support for modules to TRACE_EVENT
Impact: allow modules to add TRACE_EVENTS on load This patch adds the final hooks to allow modules to use the TRACE_EVENT macro. A notifier and a data structure are used to link the TRACE_EVENTs defined in the module to connect them with the ftrace event tracing system. It also adds the necessary automated clean ups to the trace events when a module is removed. Cc: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ftrace_event.h3
-rw-r--r--include/linux/module.h4
-rw-r--r--include/linux/trace_seq.h2
3 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
index 17810853b4f8..75f3ac01a87c 100644
--- a/include/linux/ftrace_event.h
+++ b/include/linux/ftrace_event.h
@@ -7,6 +7,7 @@
7 7
8struct trace_array; 8struct trace_array;
9struct tracer; 9struct tracer;
10struct dentry;
10 11
11/* 12/*
12 * The trace entry - the most basic unit of tracing. This is what 13 * The trace entry - the most basic unit of tracing. This is what
@@ -87,6 +88,7 @@ struct ftrace_event_call {
87 char *name; 88 char *name;
88 char *system; 89 char *system;
89 struct dentry *dir; 90 struct dentry *dir;
91 struct trace_event *event;
90 int enabled; 92 int enabled;
91 int (*regfunc)(void); 93 int (*regfunc)(void);
92 void (*unregfunc)(void); 94 void (*unregfunc)(void);
@@ -97,6 +99,7 @@ struct ftrace_event_call {
97 struct list_head fields; 99 struct list_head fields;
98 int n_preds; 100 int n_preds;
99 struct filter_pred **preds; 101 struct filter_pred **preds;
102 void *mod;
100 103
101#ifdef CONFIG_EVENT_PROFILE 104#ifdef CONFIG_EVENT_PROFILE
102 atomic_t profile_count; 105 atomic_t profile_count;
diff --git a/include/linux/module.h b/include/linux/module.h
index 627ac082e2a6..6155fa44168b 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -337,6 +337,10 @@ struct module
337 const char **trace_bprintk_fmt_start; 337 const char **trace_bprintk_fmt_start;
338 unsigned int num_trace_bprintk_fmt; 338 unsigned int num_trace_bprintk_fmt;
339#endif 339#endif
340#ifdef CONFIG_EVENT_TRACING
341 struct ftrace_event_call *trace_events;
342 unsigned int num_trace_events;
343#endif
340 344
341#ifdef CONFIG_MODULE_UNLOAD 345#ifdef CONFIG_MODULE_UNLOAD
342 /* What modules depend on me? */ 346 /* What modules depend on me? */
diff --git a/include/linux/trace_seq.h b/include/linux/trace_seq.h
index 28051da876dd..15ca2c71af13 100644
--- a/include/linux/trace_seq.h
+++ b/include/linux/trace_seq.h
@@ -1,6 +1,8 @@
1#ifndef _LINUX_TRACE_SEQ_H 1#ifndef _LINUX_TRACE_SEQ_H
2#define _LINUX_TRACE_SEQ_H 2#define _LINUX_TRACE_SEQ_H
3 3
4#include <linux/fs.h>
5
4/* 6/*
5 * Trace sequences are used to allow a function to call several other functions 7 * Trace sequences are used to allow a function to call several other functions
6 * to create a string of data to use (up to a max of PAGE_SIZE. 8 * to create a string of data to use (up to a max of PAGE_SIZE.