if (caa_unlikely(!__tp_probe)) \
goto end; \
do { \
- void *__tp_cb = __tp_probe->func; \
+ void (*__tp_cb)(void) = __tp_probe->func; \
void *__tp_data = __tp_probe->data; \
\
URCU_FORCE_CAST(void (*)(_TP_ARGS_DATA_PROTO(__VA_ARGS__)), __tp_cb) \
tp_rcu_read_unlock_bp(); \
} \
static inline void __tracepoint_register_##_provider##___##_name(char *name, \
- void *func, void *data) \
+ void (*func)(void), void *data) \
{ \
__tracepoint_probe_register(name, func, data, \
__tracepoint_##_provider##___##_name.signature); \
} \
static inline void __tracepoint_unregister_##_provider##___##_name(char *name, \
- void *func, void *data) \
+ void (*func)(void), void *data) \
{ \
__tracepoint_probe_unregister(name, func, data); \
}
-extern int __tracepoint_probe_register(const char *name, void *func, void *data,
- const char *signature);
-extern int __tracepoint_probe_unregister(const char *name, void *func, void *data);
+extern int __tracepoint_probe_register(const char *name, void (*func)(void),
+ void *data, const char *signature);
+extern int __tracepoint_probe_unregister(const char *name, void (*func)(void),
+ void *data);
/*
* tracepoint dynamic linkage handling (callbacks). Hidden visibility:
__attribute__((used, section("__tracepoints_ptrs"))) = \
&__tracepoint_##_provider##___##_name;
-/*
- * These weak symbols, the constructor, and destructor take care of
- * registering only _one_ instance of the tracepoints per shared-ojbect
- * (or for the whole main program).
- */
extern struct tracepoint * const __start___tracepoints_ptrs[]
- __attribute__((weak, visibility("hidden")));
+ __attribute__((visibility("hidden")));
extern struct tracepoint * const __stop___tracepoints_ptrs[]
- __attribute__((weak, visibility("hidden")));
+ __attribute__((visibility("hidden")));
int __tracepoint_registered
- __attribute__((weak, visibility("hidden")));
+ __attribute__((visibility("hidden")));
struct tracepoint_dlopen tracepoint_dlopen
- __attribute__((weak, visibility("hidden")));
+ __attribute__((visibility("hidden")));
static void __attribute__((constructor)) __tracepoints__init(void)
{