[PATCH] tracepoints: add check trace callback type

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Mathieu Desnoyers
Date: Friday, April 30, 2010 - 9:59 am

This check is meant to be used by tracepoint users which do a direct cast of
callbacks to (void *) for direct registration, thus bypassing the
register_trace_##name and unregister_trace_##name checks.

This permits to ensure that the callback type matches the function type at the
call site, but without generating any code.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Ingo Molnar <mingo@elte.hu> 
CC: Andrew Morton <akpm@linux-foundation.org> 
CC: Thomas Gleixner <tglx@linutronix.de> 
CC: Peter Zijlstra <peterz@infradead.org> 
CC: Frederic Weisbecker <fweisbec@gmail.com> 
CC: Arnaldo Carvalho de Melo <acme@redhat.com> 
CC: Lai Jiangshan <laijs@cn.fujitsu.com> 
CC: Li Zefan <lizf@cn.fujitsu.com> 
CC: Masami Hiramatsu <mhiramat@redhat.com> 
CC: Christoph Hellwig <hch@lst.de>
---
 include/linux/tracepoint.h |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Index: linux.trees.git/include/linux/tracepoint.h
===================================================================
--- linux.trees.git.orig/include/linux/tracepoint.h	2010-04-30 12:32:39.000000000 -0400
+++ linux.trees.git/include/linux/tracepoint.h	2010-04-30 12:57:55.000000000 -0400
@@ -78,9 +78,11 @@ struct tracepoint {
 	static inline int unregister_trace_##name(void (*probe)(proto))	\
 	{								\
 		return tracepoint_probe_unregister(#name, (void *)probe);\
+	}								\
+	static inline void check_trace_callback_type_##name(void (*cb)(proto)) \
+	{								\
 	}
 
-
 #define DEFINE_TRACE_FN(name, reg, unreg)				\
 	static const char __tpstrtab_##name[]				\
 	__attribute__((section("__tracepoints_strings"))) = #name;	\
@@ -112,6 +114,9 @@ extern void tracepoint_update_probe_rang
 	static inline int unregister_trace_##name(void (*probe)(proto))	\
 	{								\
 		return -ENOSYS;						\
+	}								\
+	static inline void check_trace_callback_type_##name(void (*cb)(proto)) \
+	{								\
 	}
 
 #define DEFINE_TRACE_FN(name, reg, unreg)

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] tracepoints: add check trace callback type, Mathieu Desnoyers, (Fri Apr 30, 9:59 am)
[tip:perf/core] tracepoints: Add check trace callback type, tip-bot for Mathieu ..., (Fri May 21, 10:09 am)