X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Ftracepoint.h;h=71250ce04361be49ffd335655d2a2a278bef3e3d;hb=2ebf164be81fea5f9ec19314a030b5f80a8f8fc5;hp=7e7f7aca1360f696d45a0107b81c8cf257a140b1;hpb=6eddcb066dfe822dcf187715f35e7dbab84dabdf;p=lttng-ust.git diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index 7e7f7aca..71250ce0 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; @@ -433,70 +433,83 @@ __tracepoints__destroy(void) memset(lttng_ust_tracepoint_dlopen_ptr, 0, sizeof(*lttng_ust_tracepoint_dlopen_ptr)); } -#ifdef TRACEPOINT_DEFINE +#if LTTNG_UST_COMPAT_API(0) +# if defined(TRACEPOINT_DEFINE) && !defined(LTTNG_UST_TRACEPOINT_DEFINE) +# define LTTNG_UST_TRACEPOINT_DEFINE +# endif +#endif /* #if LTTNG_UST_COMPAT_API(0) */ + +#ifdef LTTNG_UST_TRACEPOINT_DEFINE /* * These weak symbols, the constructor, and destructor take care of * 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 +522,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 +560,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() @@ -562,11 +575,11 @@ __tracepoints__ptrs_destroy(void) } } -#else /* TRACEPOINT_DEFINE */ +#else /* LTTNG_UST_TRACEPOINT_DEFINE */ #define LTTNG_UST__DEFINE_TRACEPOINT(_provider, _name, _args) -#endif /* #else TRACEPOINT_DEFINE */ +#endif /* #else LTTNG_UST_TRACEPOINT_DEFINE */ #if LTTNG_UST_COMPAT_API(0) #define tracepoint lttng_ust_tracepoint @@ -584,7 +597,7 @@ __tracepoints__ptrs_destroy(void) /* The following declarations must be outside re-inclusion protection. */ -#ifndef TRACEPOINT_ENUM +#ifndef LTTNG_UST_TRACEPOINT_ENUM /* * Tracepoint Enumerations @@ -595,7 +608,7 @@ __tracepoints__ptrs_destroy(void) * * An example: * - * TRACEPOINT_ENUM(someproject_component, enumname, + * LTTNG_UST_TRACEPOINT_ENUM(someproject_component, enumname, * TP_ENUM_VALUES( * ctf_enum_value("even", 0) * ctf_enum_value("uneven", 1) @@ -619,14 +632,18 @@ __tracepoints__ptrs_destroy(void) * ctf_enum(someproject_component, enumname, enumtype, enumfield, enumval) * * Where "someproject_component" and "enumname" match those in the - * TRACEPOINT_ENUM, "enumtype" is a signed or unsigned integer type + * LTTNG_UST_TRACEPOINT_ENUM, "enumtype" is a signed or unsigned integer type * backing the enumeration, "enumfield" is the name of the field and * "enumval" is the value. */ -#define TRACEPOINT_ENUM(provider, name, values) +#define LTTNG_UST_TRACEPOINT_ENUM(provider, name, values) + +#if LTTNG_UST_COMPAT_API(0) +#define TRACEPOINT_ENUM LTTNG_UST_TRACEPOINT_ENUM +#endif /* #if LTTNG_UST_COMPAT_API(0) */ -#endif /* #ifndef TRACEPOINT_ENUM */ +#endif /* #ifndef LTTNG_UST_TRACEPOINT_ENUM */ #ifndef LTTNG_UST_TRACEPOINT_EVENT