*/
#include <urcu-bp.h>
-#include <tracepoint-types.h>
+#include <lttng/tracepoint-types.h>
#include <urcu/compiler.h>
#include <dlfcn.h> /* for dlopen */
* fine too).
* Each tuple is also separated by a comma.
*/
-#define _TP_COMBINE_TOKENS1(_tokena, _tokenb) _tokena##_tokenb
-#define _TP_COMBINE_TOKENS(_tokena, _tokenb) _TP_COMBINE_TOKENS1(_tokena, _tokenb)
+#define __TP_COMBINE_TOKENS(_tokena, _tokenb) \
+ _tokena##_tokenb
+#define _TP_COMBINE_TOKENS(_tokena, _tokenb) \
+ __TP_COMBINE_TOKENS(_tokena, _tokenb)
+#define __TP_COMBINE_TOKENS3(_tokena, _tokenb, _tokenc) \
+ _tokena##_tokenb##_tokenc
+#define _TP_COMBINE_TOKENS3(_tokena, _tokenb, _tokenc) \
+ __TP_COMBINE_TOKENS3(_tokena, _tokenb, _tokenc)
+#define __TP_COMBINE_TOKENS4(_tokena, _tokenb, _tokenc, _tokend) \
+ _tokena##_tokenb##_tokenc##_tokend
+#define _TP_COMBINE_TOKENS4(_tokena, _tokenb, _tokenc, _tokend) \
+ __TP_COMBINE_TOKENS4(_tokena, _tokenb, _tokenc, _tokend)
/* _TP_EXVAR* extract the var names. */
#define _TP_EXVAR0()
#define _TP_ARGS_DATA_VAR(...) _TP_DATA_VAR_N(_TP_NARGS(0, ##__VA_ARGS__), ##__VA_ARGS__)
#define _TP_PARAMS(...) __VA_ARGS__
+#ifdef _LGPL_SOURCE
+#define _TP_RCU_LINK_TEST() 1
+#else
+#define _TP_RCU_LINK_TEST() rcu_read_lock_bp
+#endif
+
#define _DECLARE_TRACEPOINT(provider, name, ...) \
extern struct tracepoint __tracepoint_##provider##___##name; \
static inline void __tracepoint_cb_##provider##___##name(_TP_ARGS_PROTO(__VA_ARGS__)) \
{ \
struct tracepoint_probe *__tp_probe; \
\
- if (!rcu_read_lock_bp) \
+ if (!_TP_RCU_LINK_TEST()) \
return; \
rcu_read_lock_bp(); \
__tp_probe = rcu_dereference_bp(__tracepoint_##provider##___##name.probes); \