X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Ftracepoint.h;h=b637b8534eb83b67ef8ded57c16b0adf99e3938a;hb=5b393d6424d959e2efbb800b0c8a61b81bf9968e;hp=7e7f7aca1360f696d45a0107b81c8cf257a140b1;hpb=6eddcb066dfe822dcf187715f35e7dbab84dabdf;p=lttng-ust.git diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index 7e7f7aca..b637b853 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 @@ -730,7 +747,7 @@ __tracepoints__ptrs_destroy(void) #endif /* #ifndef LTTNG_UST_TRACEPOINT_EVENT */ -#ifndef TRACEPOINT_LOGLEVEL +#ifndef LTTNG_UST_TRACEPOINT_LOGLEVEL /* * Tracepoint Loglevels @@ -744,88 +761,112 @@ __tracepoints__ptrs_destroy(void) * semantic. Loglevels 7 through 13 offer more fine-grained selection of * debug information. * - * TRACE_EMERG 0 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG 0 * system is unusable * - * TRACE_ALERT 1 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT 1 * action must be taken immediately * - * TRACE_CRIT 2 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT 2 * critical conditions * - * TRACE_ERR 3 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR 3 * error conditions * - * TRACE_WARNING 4 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING 4 * warning conditions * - * TRACE_NOTICE 5 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE 5 * normal, but significant, condition * - * TRACE_INFO 6 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO 6 * informational message * - * TRACE_DEBUG_SYSTEM 7 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM 7 * debug information with system-level scope (set of programs) * - * TRACE_DEBUG_PROGRAM 8 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM 8 * debug information with program-level scope (set of processes) * - * TRACE_DEBUG_PROCESS 9 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS 9 * debug information with process-level scope (set of modules) * - * TRACE_DEBUG_MODULE 10 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE 10 * debug information with module (executable/library) scope (set of units) * - * TRACE_DEBUG_UNIT 11 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT 11 * debug information with compilation unit scope (set of functions) * - * TRACE_DEBUG_FUNCTION 12 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION 12 * debug information with function-level scope * - * TRACE_DEBUG_LINE 13 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE 13 * debug information with line-level scope (LTTNG_UST_TRACEPOINT_EVENT default) * - * TRACE_DEBUG 14 + * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG 14 * debug-level message * * Declare tracepoint loglevels for tracepoints. A LTTNG_UST_TRACEPOINT_EVENT - * should be declared prior to the the TRACEPOINT_LOGLEVEL for a given + * should be declared prior to the the LTTNG_UST_TRACEPOINT_LOGLEVEL for a given * tracepoint name. The first field is the provider name, the second * field is the name of the tracepoint, the third field is the loglevel * name. * - * TRACEPOINT_LOGLEVEL(< [com_company_]project[_component] >, < event >, + * LTTNG_UST_TRACEPOINT_LOGLEVEL(< [com_company_]project[_component] >, < event >, * < loglevel_name >) * - * The TRACEPOINT_PROVIDER must be already declared before declaring a - * TRACEPOINT_LOGLEVEL. + * The LTTNG_UST_TRACEPOINT_PROVIDER must be already declared before declaring a + * LTTNG_UST_TRACEPOINT_LOGLEVEL. */ enum { - TRACE_EMERG = 0, - TRACE_ALERT = 1, - TRACE_CRIT = 2, - TRACE_ERR = 3, - TRACE_WARNING = 4, - TRACE_NOTICE = 5, - TRACE_INFO = 6, - TRACE_DEBUG_SYSTEM = 7, - TRACE_DEBUG_PROGRAM = 8, - TRACE_DEBUG_PROCESS = 9, - TRACE_DEBUG_MODULE = 10, - TRACE_DEBUG_UNIT = 11, - TRACE_DEBUG_FUNCTION = 12, - TRACE_DEBUG_LINE = 13, - TRACE_DEBUG = 14, + LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG = 0, + LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT = 1, + LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT = 2, + LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR = 3, + LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING = 4, + LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE = 5, + LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO = 6, + LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM = 7, + LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM = 8, + LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS = 9, + LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE = 10, + LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT = 11, + LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION = 12, + LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE = 13, + LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG = 14, }; -#define TRACEPOINT_LOGLEVEL(provider, name, loglevel) +#define LTTNG_UST_TRACEPOINT_LOGLEVEL(provider, name, loglevel) + +#if LTTNG_UST_COMPAT_API(0) +#define TRACEPOINT_LOGLEVEL LTTNG_UST_TRACEPOINT_LOGLEVEL + +#define TRACE_EMERG LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG +#define TRACE_ALERT LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT +#define TRACE_CRIT LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT +#define TRACE_ERR LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR +#define TRACE_WARNING LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING +#define TRACE_NOTICE LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE +#define TRACE_INFO LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO +#define TRACE_DEBUG_SYSTEM LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM +#define TRACE_DEBUG_PROGRAM LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM +#define TRACE_DEBUG_PROCESS LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS +#define TRACE_DEBUG_MODULE LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE +#define TRACE_DEBUG_UNIT LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT +#define TRACE_DEBUG_FUNCTION LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION +#define TRACE_DEBUG_LINE LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE +#define TRACE_DEBUG LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG +#endif + +#endif /* #ifndef LTTNG_UST_TRACEPOINT_LOGLEVEL */ -#endif /* #ifndef TRACEPOINT_LOGLEVEL */ +#ifndef LTTNG_UST_TRACEPOINT_MODEL_EMF_URI -#ifndef TRACEPOINT_MODEL_EMF_URI +#define LTTNG_UST_TRACEPOINT_MODEL_EMF_URI(provider, name, uri) -#define TRACEPOINT_MODEL_EMF_URI(provider, name, uri) +#if LTTNG_UST_COMPAT_API(0) +#define TRACEPOINT_MODEL_EMF_URI LTTNG_UST_TRACEPOINT_MODEL_EMF_URI +#endif -#endif /* #ifndef TRACEPOINT_MODEL_EMF_URI */ +#endif /* #ifndef LTTNG_UST_TRACEPOINT_MODEL_EMF_URI */