summaryrefslogtreecommitdiffstats
path: root/include/trace/syscall.h
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2009-08-24 14:43:13 -0700
committerFrederic Weisbecker <fweisbec@gmail.com>2009-08-26 00:36:41 +0200
commit97419875865859fd2403e66266c02ce028e2f5ab (patch)
tree7df6e6df767e9c8ff538a50bcae17638a1c8da99 /include/trace/syscall.h
parent3d27d8cb34fc156beb86de2338ca4029873a5cc6 (diff)
tracing: Move tracepoint callbacks from declaration to definition
It's not strictly correct for the tracepoint reg/unreg callbacks to occur when a client is hooking up, because the actual tracepoint may not be present yet. This happens to be fine for syscall, since that's in the core kernel, but it would cause problems for tracepoints defined in a module that hasn't been loaded yet. It also means the reg/unreg has to be EXPORTed for any modules to use the tracepoint (as in SystemTap). This patch removes DECLARE_TRACE_WITH_CALLBACK, and instead introduces DEFINE_TRACE_FN which stores the callbacks in struct tracepoint. The callbacks are used now when the active state of the tracepoint changes in set_tracepoint & disable_tracepoint. This also introduces TRACE_EVENT_FN, so ftrace events can also provide registration callbacks if needed. Signed-off-by: Josh Stone <jistone@redhat.com> Cc: Jason Baron <jbaron@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Li Zefan <lizf@cn.fujitsu.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Cc: Jiaying Zhang <jiayingz@google.com> Cc: Martin Bligh <mbligh@google.com> Cc: Lai Jiangshan <laijs@cn.fujitsu.com> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> LKML-Reference: <1251150194-1713-4-git-send-email-jistone@redhat.com> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Diffstat (limited to 'include/trace/syscall.h')
-rw-r--r--include/trace/syscall.h12
1 files changed, 4 insertions, 8 deletions
diff --git a/include/trace/syscall.h b/include/trace/syscall.h
index 5dcb7e3a544..4e194300185 100644
--- a/include/trace/syscall.h
+++ b/include/trace/syscall.h
@@ -13,18 +13,14 @@
extern void syscall_regfunc(void);
extern void syscall_unregfunc(void);
-DECLARE_TRACE_WITH_CALLBACK(syscall_enter,
+DECLARE_TRACE(syscall_enter,
TP_PROTO(struct pt_regs *regs, long id),
- TP_ARGS(regs, id),
- syscall_regfunc,
- syscall_unregfunc
+ TP_ARGS(regs, id)
);
-DECLARE_TRACE_WITH_CALLBACK(syscall_exit,
+DECLARE_TRACE(syscall_exit,
TP_PROTO(struct pt_regs *regs, long ret),
- TP_ARGS(regs, ret),
- syscall_regfunc,
- syscall_unregfunc
+ TP_ARGS(regs, ret)
);
#endif