X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=libust%2Ftracepoint.h;h=07affb3fe5cc281dd0912f152fa8dde3c21f3c4a;hb=6dd969b5dd702909b8eb827e850c851053774055;hp=6f14ea08a696f43428e615fccfb00eda12a90759;hpb=b4512257eb71d0432554047acf6278dc42a15a75;p=lttng-ust.git diff --git a/libust/tracepoint.h b/libust/tracepoint.h index 6f14ea08..07affb3f 100644 --- a/libust/tracepoint.h +++ b/libust/tracepoint.h @@ -28,6 +28,9 @@ //#include //#include +#define _LGPL_SOURCE +#include + #include "immediate.h" #include "kernelcompat.h" @@ -48,7 +51,8 @@ struct tracepoint { #define TPPROTO(args...) args #define TPARGS(args...) args -//ust// #ifdef CONFIG_TRACEPOINTS +#define CONFIG_TRACEPOINTS +#ifdef CONFIG_TRACEPOINTS /* * it_func[0] is never NULL because there is at least one element in the array @@ -58,14 +62,14 @@ struct tracepoint { do { \ void **it_func; \ \ - rcu_read_lock_sched_notrace(); \ + rcu_read_lock(); /*ust rcu_read_lock_sched_notrace(); */ \ it_func = rcu_dereference((tp)->funcs); \ if (it_func) { \ do { \ ((void(*)(proto))(*it_func))(args); \ } while (*(++it_func)); \ } \ - rcu_read_unlock_sched_notrace(); \ + rcu_read_unlock(); /*ust rcu_read_unlock_sched_notrace(); */ \ } while (0) #define __CHECK_TRACE(name, generic, proto, args) \ @@ -125,29 +129,29 @@ struct tracepoint { extern void tracepoint_update_probe_range(struct tracepoint *begin, struct tracepoint *end); -//ust// #else /* !CONFIG_TRACEPOINTS */ -//ust// #define DECLARE_TRACE(name, proto, args) \ -//ust// static inline void trace_##name(proto) \ -//ust// { } \ -//ust// static inline void _trace_##name(proto) \ -//ust// { } \ -//ust// static inline int register_trace_##name(void (*probe)(proto)) \ -//ust// { \ -//ust// return -ENOSYS; \ -//ust// } \ -//ust// static inline int unregister_trace_##name(void (*probe)(proto)) \ -//ust// { \ -//ust// return -ENOSYS; \ -//ust// } -//ust// -//ust// #define DEFINE_TRACE(name) -//ust// #define EXPORT_TRACEPOINT_SYMBOL_GPL(name) -//ust// #define EXPORT_TRACEPOINT_SYMBOL(name) -//ust// -//ust// static inline void tracepoint_update_probe_range(struct tracepoint *begin, -//ust// struct tracepoint *end) -//ust// { } -//ust// #endif /* CONFIG_TRACEPOINTS */ +#else /* !CONFIG_TRACEPOINTS */ +#define DECLARE_TRACE(name, proto, args) \ + static inline void trace_##name(proto) \ + { } \ + static inline void _trace_##name(proto) \ + { } \ + static inline int register_trace_##name(void (*probe)(proto)) \ + { \ + return -ENOSYS; \ + } \ + static inline int unregister_trace_##name(void (*probe)(proto)) \ + { \ + return -ENOSYS; \ + } + +#define DEFINE_TRACE(name) +#define EXPORT_TRACEPOINT_SYMBOL_GPL(name) +#define EXPORT_TRACEPOINT_SYMBOL(name) + +static inline void tracepoint_update_probe_range(struct tracepoint *begin, + struct tracepoint *end) +{ } +#endif /* CONFIG_TRACEPOINTS */ /* * Connect a probe to a tracepoint. @@ -185,7 +189,7 @@ extern int tracepoint_get_iter_range(struct tracepoint **tracepoint, */ static inline void tracepoint_synchronize_unregister(void) { - synchronize_sched(); +//ust// synchronize_sched(); } struct tracepoint_lib { @@ -194,12 +198,16 @@ struct tracepoint_lib { struct list_head list; }; -#define TRACEPOINT_LIB \ -extern struct tracepoint __start___tracepoints[] __attribute__((visibility("hidden"))); \ -extern struct tracepoint __stop___tracepoints[] __attribute__((visibility("hidden"))); \ - \ -static void __attribute__((constructor)) __tracepoints__init(void) \ -{ \ - tracepoint_register_lib(__start___tracepoints, (((long)__stop___tracepoints)-((long)__start___tracepoints))/sizeof(struct tracepoint));\ -} +extern int tracepoint_register_lib(struct tracepoint *tracepoints_start, + int tracepoints_count); + +#define TRACEPOINT_LIB \ + extern struct tracepoint __start___tracepoints[] __attribute__((visibility("hidden"))); \ + extern struct tracepoint __stop___tracepoints[] __attribute__((visibility("hidden"))); \ + static void __attribute__((constructor)) __tracepoints__init(void) \ + { \ + tracepoint_register_lib(__start___tracepoints, \ + (((long)__stop___tracepoints)-((long)__start___tracepoints))/sizeof(struct tracepoint)); \ + } + #endif