lttng_ust_tracepoint_provider_unregister(provider_name, event_name, func, data); \
}
-extern int lttng_ust_tracepoint_provider_register(const char *provider_name, const char *event_name,
+/*
+ * Registration of tracepoint provider probe functions with
+ * lttng_ust_tracepoint_provider_register, unregistration with
+ * lttng_ust_tracepoint_provider_unregister.
+ */
+int lttng_ust_tracepoint_provider_register(const char *provider_name, const char *event_name,
void (*func)(void), void *data, const char *signature);
-extern int lttng_ust_tracepoint_provider_unregister(const char *provider_name, const char *event_name,
+int lttng_ust_tracepoint_provider_unregister(const char *provider_name, const char *event_name,
void (*func)(void), void *data);
+/*
+ * Registration of tracepoint instrumentation modules with lttng_ust_tracepoint_module_register,
+ * unregistration with lttng_ust_tracepoint_module_unregister.
+ */
+int lttng_ust_tracepoint_module_register(struct lttng_ust_tracepoint * const *tracepoints_start,
+ int tracepoints_count);
+int lttng_ust_tracepoint_module_unregister(struct lttng_ust_tracepoint * const *tracepoints_start);
+
/*
* tracepoint dynamic linkage handling (callbacks). Hidden visibility:
* shared across objects in a module/main executable.
void *liblttngust_handle;
- int (*lttng_ust_tracepoint_register_lib)(struct lttng_ust_tracepoint * const *tracepoints_start,
+ int (*lttng_ust_tracepoint_module_register)(struct lttng_ust_tracepoint * const *tracepoints_start,
int tracepoints_count);
- int (*lttng_ust_tracepoint_unregister_lib)(struct lttng_ust_tracepoint * const *tracepoints_start);
+ int (*lttng_ust_tracepoint_module_unregister)(struct lttng_ust_tracepoint * const *tracepoints_start);
void (*rcu_read_lock_sym)(void);
void (*rcu_read_unlock_sym)(void);
void *(*rcu_dereference_sym)(void *p);
return;
if (!lttng_ust_tracepoint_destructors_syms_ptr)
lttng_ust_tracepoint_destructors_syms_ptr = <tng_ust_tracepoint_destructors_syms;
- lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_register_lib =
+ lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_register =
URCU_FORCE_CAST(int (*)(struct lttng_ust_tracepoint * const *, int),
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
- "lttng_ust_tracepoint_register_lib"));
- lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_unregister_lib =
+ "lttng_ust_tracepoint_module_register"));
+ lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_unregister =
URCU_FORCE_CAST(int (*)(struct lttng_ust_tracepoint * const *),
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
- "lttng_ust_tracepoint_unregister_lib"));
+ "lttng_ust_tracepoint_module_unregister"));
lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_disable_destructors =
URCU_FORCE_CAST(void (*)(void),
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
"lttng_ust_tp_get_destructors_state"));
lttng_ust_tracepoint__init_urcu_sym();
- if (lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_register_lib) {
- lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_register_lib(__start_lttng_ust_tracepoints_ptrs,
+ if (lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_register) {
+ lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_register(__start_lttng_ust_tracepoints_ptrs,
__stop_lttng_ust_tracepoints_ptrs -
__start_lttng_ust_tracepoints_ptrs);
}
lttng_ust_tracepoint_dlopen_ptr = <tng_ust_tracepoint_dlopen;
if (!lttng_ust_tracepoint_destructors_syms_ptr)
lttng_ust_tracepoint_destructors_syms_ptr = <tng_ust_tracepoint_destructors_syms;
- if (lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_unregister_lib)
- lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_unregister_lib(__start_lttng_ust_tracepoints_ptrs);
+ if (lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_unregister)
+ lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_unregister(__start_lttng_ust_tracepoints_ptrs);
if (lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle
&& lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_get_destructors_state
&& lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_get_destructors_state()
#define LTTNG_UST_TRACEPOINT_EVENT_CLASS(provider, name, args, fields)
-#define LTTNG_UST_TRACEPOINT_EVENT_INSTANCE(provider, _template, name, args) \
+#define LTTNG_UST_TRACEPOINT_EVENT_INSTANCE(template_provider, template_name, provider, name, args) \
LTTNG_UST__DECLARE_TRACEPOINT(provider, name, LTTNG_UST__TP_PARAMS(args)) \
LTTNG_UST__DEFINE_TRACEPOINT(provider, name, LTTNG_UST__TP_PARAMS(args))
#if LTTNG_UST_COMPAT_API(0)
#define TRACEPOINT_EVENT LTTNG_UST_TRACEPOINT_EVENT
#define TRACEPOINT_EVENT_CLASS LTTNG_UST_TRACEPOINT_EVENT_CLASS
-#define TRACEPOINT_EVENT_INSTANCE LTTNG_UST_TRACEPOINT_EVENT_INSTANCE
+#define TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, args) \
+ LTTNG_UST_TRACEPOINT_EVENT_INSTANCE(_provider, _template, \
+ _provider, _name, LTTNG_UST__TP_PARAMS(args))
+
#endif /* #if LTTNG_UST_COMPAT_API(0) */
#endif /* #ifndef LTTNG_UST_TRACEPOINT_EVENT */