X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Ftracepoint.h;h=b02ec3301893d563b0ca17bf1ddf4279a623ddae;hb=096c06e5c6f0a44f261b53c473c223ba88b686fd;hp=7e7f7aca1360f696d45a0107b81c8cf257a140b1;hpb=6eddcb066dfe822dcf187715f35e7dbab84dabdf;p=lttng-ust.git diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index 7e7f7aca..b02ec330 100644 --- a/include/lttng/tracepoint.h +++ b/include/lttng/tracepoint.h @@ -251,9 +251,9 @@ struct lttng_ust_tracepoint_dlopen { void *liblttngust_handle; - int (*tracepoint_register_lib)(struct lttng_ust_tracepoint * const *tracepoints_start, + int (*lttng_ust_tracepoint_register_lib)(struct lttng_ust_tracepoint * const *tracepoints_start, int tracepoints_count); - int (*tracepoint_unregister_lib)(struct lttng_ust_tracepoint * const *tracepoints_start); + int (*lttng_ust_tracepoint_unregister_lib)(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); @@ -373,10 +373,10 @@ lttng_ust_tracepoint__init_urcu_sym(void) #endif static void -__tracepoints__init(void) +lttng_ust__tracepoints__init(void) lttng_ust_notrace __attribute__((constructor)); static void -__tracepoints__init(void) +lttng_ust__tracepoints__init(void) { if (lttng_ust_tracepoint_registered++) { if (!lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle) @@ -396,10 +396,10 @@ __tracepoints__init(void) } static void -__tracepoints__destroy(void) +lttng_ust__tracepoints__destroy(void) lttng_ust_notrace __attribute__((destructor)); static void -__tracepoints__destroy(void) +lttng_ust__tracepoints__destroy(void) { int ret; @@ -440,63 +440,70 @@ __tracepoints__destroy(void) * registering only _one_ instance of the tracepoints per shared-ojbect * (or for the whole main program). */ -extern struct lttng_ust_tracepoint * const __start___tracepoints_ptrs[] +extern struct lttng_ust_tracepoint * const __start_lttng_ust_tracepoints_ptrs[] __attribute__((weak, visibility("hidden"))); -extern struct lttng_ust_tracepoint * const __stop___tracepoints_ptrs[] +extern struct lttng_ust_tracepoint * const __stop_lttng_ust_tracepoints_ptrs[] __attribute__((weak, visibility("hidden"))); /* - * When TRACEPOINT_PROBE_DYNAMIC_LINKAGE is defined, we do not emit a + * When LTTNG_UST_TRACEPOINT_PROBE_DYNAMIC_LINKAGE is defined, we do not emit a * unresolved symbol that requires the provider to be linked in. When - * TRACEPOINT_PROBE_DYNAMIC_LINKAGE is not defined, we emit an + * LTTNG_UST_TRACEPOINT_PROBE_DYNAMIC_LINKAGE is not defined, we emit an * unresolved symbol that depends on having the provider linked in, * otherwise the linker complains. This deals with use of static * libraries, ensuring that the linker does not remove the provider * object from the executable. */ -#ifdef TRACEPOINT_PROBE_DYNAMIC_LINKAGE -#define _TRACEPOINT_UNDEFINED_REF(provider) NULL -#else /* TRACEPOINT_PROBE_DYNAMIC_LINKAGE */ -#define _TRACEPOINT_UNDEFINED_REF(provider) <tng_ust_tracepoint_provider_##provider -#endif /* TRACEPOINT_PROBE_DYNAMIC_LINKAGE */ + +#if LTTNG_UST_COMPAT_API(0) +# if defined(TRACEPOINT_PROBE_DYNAMIC_LINKAGE) && !defined(LTTNG_UST_TRACEPOINT_PROBE_DYNAMIC_LINKAGE) +# define LTTNG_UST_TRACEPOINT_PROBE_DYNAMIC_LINKAGE +# endif +#endif /* #if LTTNG_UST_COMPAT_API(0) */ + +#ifdef LTTNG_UST_TRACEPOINT_PROBE_DYNAMIC_LINKAGE +#define LTTNG_UST__TRACEPOINT_UNDEFINED_REF(provider) NULL +#else /* LTTNG_UST_TRACEPOINT_PROBE_DYNAMIC_LINKAGE */ +#define LTTNG_UST__TRACEPOINT_UNDEFINED_REF(provider) <tng_ust_tracepoint_provider_##provider +#endif /* LTTNG_UST_TRACEPOINT_PROBE_DYNAMIC_LINKAGE */ /* * Note: to allow PIC code, we need to allow the linker to update the pointers - * in the __tracepoints_ptrs section. + * in the lttng_ust_tracepoints_ptrs section. * Therefore, this section is _not_ const (read-only). */ -#define _TP_EXTRACT_STRING(...) #__VA_ARGS__ +#define LTTNG_UST__TP_EXTRACT_STRING(...) #__VA_ARGS__ #define LTTNG_UST__DEFINE_TRACEPOINT(_provider, _name, _args) \ lttng_ust_tracepoint_validate_name_len(_provider, _name); \ extern int lttng_ust_tracepoint_provider_##_provider; \ - static const char __tp_provider_strtab_##_provider##___##_name[] \ - __attribute__((section("__tracepoints_strings"))) = \ + static const char lttng_ust_tp_provider_strtab_##_provider##___##_name[] \ + __attribute__((section("lttng_ust_tracepoints_strings"))) = \ #_provider; \ - static const char __tp_name_strtab_##_provider##___##_name[] \ - __attribute__((section("__tracepoints_strings"))) = \ + static const char lttng_ust_tp_name_strtab_##_provider##___##_name[] \ + __attribute__((section("lttng_ust_tracepoints_strings"))) = \ #_name; \ struct lttng_ust_tracepoint lttng_ust_tracepoint_##_provider##___##_name \ - __attribute__((section("__tracepoints"))) = { \ + __attribute__((section("lttng_ust_tracepoints"))) = { \ sizeof(struct lttng_ust_tracepoint), \ - __tp_provider_strtab_##_provider##___##_name, \ - __tp_name_strtab_##_provider##___##_name, \ + lttng_ust_tp_provider_strtab_##_provider##___##_name, \ + lttng_ust_tp_name_strtab_##_provider##___##_name, \ 0, \ NULL, \ - _TRACEPOINT_UNDEFINED_REF(_provider), \ - _TP_EXTRACT_STRING(_args), \ + LTTNG_UST__TRACEPOINT_UNDEFINED_REF(_provider), \ + LTTNG_UST__TP_EXTRACT_STRING(_args), \ }; \ static struct lttng_ust_tracepoint * \ lttng_ust_tracepoint_ptr_##_provider##___##_name \ - __attribute__((section("__tracepoints_ptrs"), used)) \ + __attribute__((section("lttng_ust_tracepoints_ptrs"), used)) \ __lttng_ust_variable_attribute_no_sanitize_address = \ <tng_ust_tracepoint_##_provider##___##_name; static void -__tracepoints__ptrs_init(void) +lttng_ust__tracepoints__ptrs_init(void) lttng_ust_notrace __attribute__((constructor)); static void -__tracepoints__ptrs_init(void) +lttng_ust__tracepoints__ptrs_init(void) { if (lttng_ust_tracepoint_ptrs_registered++) return; @@ -509,35 +516,35 @@ __tracepoints__ptrs_init(void) return; if (!lttng_ust_tracepoint_destructors_syms_ptr) lttng_ust_tracepoint_destructors_syms_ptr = <tng_ust_tracepoint_destructors_syms; - lttng_ust_tracepoint_dlopen_ptr->tracepoint_register_lib = + lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_register_lib = URCU_FORCE_CAST(int (*)(struct lttng_ust_tracepoint * const *, int), dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle, - "tracepoint_register_lib")); - lttng_ust_tracepoint_dlopen_ptr->tracepoint_unregister_lib = + "lttng_ust_tracepoint_register_lib")); + lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_unregister_lib = URCU_FORCE_CAST(int (*)(struct lttng_ust_tracepoint * const *), dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle, - "tracepoint_unregister_lib")); + "lttng_ust_tracepoint_unregister_lib")); lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_disable_destructors = URCU_FORCE_CAST(void (*)(void), dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle, - "tp_disable_destructors")); + "lttng_ust_tp_disable_destructors")); lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_get_destructors_state = URCU_FORCE_CAST(int (*)(void), dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle, - "tp_get_destructors_state")); + "lttng_ust_tp_get_destructors_state")); lttng_ust_tracepoint__init_urcu_sym(); - if (lttng_ust_tracepoint_dlopen_ptr->tracepoint_register_lib) { - lttng_ust_tracepoint_dlopen_ptr->tracepoint_register_lib(__start___tracepoints_ptrs, - __stop___tracepoints_ptrs - - __start___tracepoints_ptrs); + 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, + __stop_lttng_ust_tracepoints_ptrs - + __start_lttng_ust_tracepoints_ptrs); } } static void -__tracepoints__ptrs_destroy(void) +lttng_ust__tracepoints__ptrs_destroy(void) lttng_ust_notrace __attribute__((destructor)); static void -__tracepoints__ptrs_destroy(void) +lttng_ust__tracepoints__ptrs_destroy(void) { int ret; @@ -547,8 +554,8 @@ __tracepoints__ptrs_destroy(void) 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->tracepoint_unregister_lib) - lttng_ust_tracepoint_dlopen_ptr->tracepoint_unregister_lib(__start___tracepoints_ptrs); + 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->liblttngust_handle && lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_get_destructors_state && lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_get_destructors_state()