X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=libust%2Ftracepoint.h;h=2bfb148e8251f5b1d49124b7ba8b8916c040c1aa;hb=872037bb1437ab961f97834a624eb2d9b0706ab2;hp=81eea625e662ebb1e226b1c44a54c02d8e2679e2;hpb=e14a34e05f6dd7b5f1133085561313ad90b8f266;p=ust.git diff --git a/libust/tracepoint.h b/libust/tracepoint.h index 81eea62..2bfb148 100644 --- a/libust/tracepoint.h +++ b/libust/tracepoint.h @@ -28,7 +28,9 @@ //#include //#include -//#include "urcu.h" +#define _LGPL_SOURCE +#include + #include "immediate.h" #include "kernelcompat.h" @@ -49,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 @@ -126,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. @@ -195,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