int (*tracepoint_register_lib)(struct lttng_ust_tracepoint * const *tracepoints_start,
int tracepoints_count);
int (*tracepoint_unregister_lib)(struct lttng_ust_tracepoint * const *tracepoints_start);
-#ifndef _LGPL_SOURCE
void (*rcu_read_lock_sym_bp)(void);
void (*rcu_read_unlock_sym_bp)(void);
void *(*rcu_dereference_sym_bp)(void *p);
-#endif
};
extern struct lttng_ust_tracepoint_dlopen tracepoint_dlopen;
__tracepoints__disable_destructors = 1;
}
-#if defined(TRACEPOINT_DEFINE) || defined(TRACEPOINT_CREATE_PROBES)
-
/*
* These weak symbols, the constructor, and destructor take care of
* registering only _one_ instance of the tracepoints per shared-ojbect
static void
__tracepoints__init(void)
{
- if (__tracepoint_registered++)
+ if (__tracepoint_registered++) {
+ if (!tracepoint_dlopen_ptr->liblttngust_handle)
+ return;
+ __tracepoint__init_urcu_sym();
return;
+ }
if (!tracepoint_dlopen_ptr)
tracepoint_dlopen_ptr = &tracepoint_dlopen;
}
}
-#endif
-
#ifdef TRACEPOINT_DEFINE
/*