X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Ftracepoint.h;h=0f6b34ee39f400712f796d4099a99687164c05c4;hb=7f2f82c3b336458e815e9a4ed100d7084c9e7138;hp=f85db068d378383d941dbc8271ed555a71d1a9b9;hpb=81b16412749579b79a4d829ff87e170d0e1ebd0d;p=lttng-ust.git diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index f85db068..0f6b34ee 100644 --- a/include/lttng/tracepoint.h +++ b/include/lttng/tracepoint.h @@ -19,6 +19,7 @@ #include /* for sdt */ #include #include +#include #define LTTNG_UST_TRACEPOINT_NAME_LEN_MAX 256 @@ -49,23 +50,23 @@ extern "C" { #endif -#define tracepoint_enabled(provider, name) \ +#define lttng_ust_tracepoint_enabled(provider, name) \ caa_unlikely(CMM_LOAD_SHARED(__tracepoint_##provider##___##name.state)) -#define do_tracepoint(provider, name, ...) \ +#define lttng_ust_do_tracepoint(provider, name, ...) \ __tracepoint_cb_##provider##___##name(__VA_ARGS__) -#define tracepoint(provider, name, ...) \ - do { \ - LTTNG_UST_STAP_PROBEV(provider, name, ## __VA_ARGS__); \ - if (tracepoint_enabled(provider, name)) \ - do_tracepoint(provider, name, __VA_ARGS__); \ +#define lttng_ust_tracepoint(provider, name, ...) \ + do { \ + LTTNG_UST_STAP_PROBEV(provider, name, ## __VA_ARGS__); \ + if (lttng_ust_tracepoint_enabled(provider, name)) \ + lttng_ust_do_tracepoint(provider, name, __VA_ARGS__); \ } while (0) -#define TP_ARGS(...) __VA_ARGS__ +#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__ /* - * TP_ARGS takes tuples of type, argument separated by a comma. + * LTTNG_UST_TP_ARGS takes tuples of type, argument separated by a comma. * It can take up to 10 tuples (which means that less than 10 tuples is * fine too). * Each tuple is also separated by a comma. @@ -180,7 +181,7 @@ extern "C" { * between caller's ip addresses within the probe using the return * address. */ -#define _DECLARE_TRACEPOINT(_provider, _name, ...) \ +#define LTTNG_UST__DECLARE_TRACEPOINT(_provider, _name, ...) \ extern struct lttng_ust_tracepoint __tracepoint_##_provider##___##_name; \ static inline \ void __tracepoint_cb_##_provider##___##_name(_TP_ARGS_PROTO(__VA_ARGS__)) \ @@ -207,31 +208,31 @@ end: \ tp_rcu_read_unlock(); \ } \ static inline \ -void __tracepoint_register_##_provider##___##_name(char *name, \ +void __tracepoint_register_##_provider##___##_name(char *provider_name, char *event_name, \ void (*func)(void), void *data) \ lttng_ust_notrace; \ static inline \ -void __tracepoint_register_##_provider##___##_name(char *name, \ +void __tracepoint_register_##_provider##___##_name(char *provider_name, char *event_name, \ void (*func)(void), void *data) \ { \ - __tracepoint_probe_register(name, func, data, \ + __tracepoint_probe_register(provider_name, event_name, func, data, \ __tracepoint_##_provider##___##_name.signature); \ } \ static inline \ -void __tracepoint_unregister_##_provider##___##_name(char *name, \ +void __tracepoint_unregister_##_provider##___##_name(char *provider_name, char *event_name, \ void (*func)(void), void *data) \ lttng_ust_notrace; \ static inline \ -void __tracepoint_unregister_##_provider##___##_name(char *name, \ +void __tracepoint_unregister_##_provider##___##_name(char *provider_name, char *event_name, \ void (*func)(void), void *data) \ { \ - __tracepoint_probe_unregister(name, func, data); \ + __tracepoint_probe_unregister(provider_name, event_name, func, data); \ } -extern int __tracepoint_probe_register(const char *name, void (*func)(void), - void *data, const char *signature); -extern int __tracepoint_probe_unregister(const char *name, void (*func)(void), - void *data); +extern int __tracepoint_probe_register(const char *provider_name, const char *event_name, + void (*func)(void), void *data, const char *signature); +extern int __tracepoint_probe_unregister(const char *provider_name, const char *event_name, + void (*func)(void), void *data); /* * tracepoint dynamic linkage handling (callbacks). Hidden visibility: @@ -466,16 +467,20 @@ extern struct lttng_ust_tracepoint * const __stop___tracepoints_ptrs[] */ #define _TP_EXTRACT_STRING(...) #__VA_ARGS__ -#define _DEFINE_TRACEPOINT(_provider, _name, _args) \ +#define LTTNG_UST__DEFINE_TRACEPOINT(_provider, _name, _args) \ lttng_ust_tracepoint_validate_name_len(_provider, _name); \ extern int __tracepoint_provider_##_provider; \ - static const char __tp_strtab_##_provider##___##_name[] \ + static const char __tp_provider_strtab_##_provider##___##_name[] \ __attribute__((section("__tracepoints_strings"))) = \ - #_provider ":" #_name; \ + #_provider; \ + static const char __tp_name_strtab_##_provider##___##_name[] \ + __attribute__((section("__tracepoints_strings"))) = \ + #_name; \ struct lttng_ust_tracepoint __tracepoint_##_provider##___##_name \ __attribute__((section("__tracepoints"))) = { \ sizeof(struct lttng_ust_tracepoint), \ - __tp_strtab_##_provider##___##_name, \ + __tp_provider_strtab_##_provider##___##_name, \ + __tp_name_strtab_##_provider##___##_name, \ 0, \ NULL, \ _TRACEPOINT_UNDEFINED_REF(_provider), \ @@ -559,10 +564,18 @@ __tracepoints__ptrs_destroy(void) #else /* TRACEPOINT_DEFINE */ -#define _DEFINE_TRACEPOINT(_provider, _name, _args) +#define LTTNG_UST__DEFINE_TRACEPOINT(_provider, _name, _args) #endif /* #else TRACEPOINT_DEFINE */ +#if LTTNG_UST_COMPAT_API(0) +#define tracepoint lttng_ust_tracepoint +#define do_tracepoint lttng_ust_do_tracepoint +#define tracepoint_enabled lttng_ust_tracepoint_enabled +#define TP_ARGS LTTNG_UST_TP_ARGS +#define TP_FIELDS LTTNG_UST_TP_FIELDS +#endif /* #if LTTNG_UST_COMPAT_API(0) */ + #ifdef __cplusplus } #endif @@ -615,23 +628,23 @@ __tracepoints__ptrs_destroy(void) #endif /* #ifndef TRACEPOINT_ENUM */ -#ifndef TRACEPOINT_EVENT +#ifndef LTTNG_UST_TRACEPOINT_EVENT /* - * How to use the TRACEPOINT_EVENT macro: + * How to use the LTTNG_UST_TRACEPOINT_EVENT macro: * * An example: * - * TRACEPOINT_EVENT(someproject_component, event_name, + * LTTNG_UST_TRACEPOINT_EVENT(someproject_component, event_name, * - * * TP_ARGS takes from 0 to 10 "type, field_name" pairs * + * * LTTNG_UST_TP_ARGS takes from 0 to 10 "type, field_name" pairs * * - * TP_ARGS(int, arg0, void *, arg1, char *, string, size_t, strlen, + * LTTNG_UST_TP_ARGS(int, arg0, void *, arg1, char *, string, size_t, strlen, * long *, arg4, size_t, arg4_len), * - * * TP_FIELDS describes the event payload layout in the trace * + * * LTTNG_UST_TP_FIELDS describes the event payload layout in the trace * * - * TP_FIELDS( + * LTTNG_UST_TP_FIELDS( * * Integer, printed in base 10 * * ctf_integer(int, field_a, arg0) * @@ -699,17 +712,23 @@ __tracepoints__ptrs_destroy(void) * the provider:event identifier is limited to 127 characters. */ -#define TRACEPOINT_EVENT(provider, name, args, fields) \ - _DECLARE_TRACEPOINT(provider, name, _TP_PARAMS(args)) \ - _DEFINE_TRACEPOINT(provider, name, _TP_PARAMS(args)) +#define LTTNG_UST_TRACEPOINT_EVENT(provider, name, args, fields) \ + LTTNG_UST__DECLARE_TRACEPOINT(provider, name, _TP_PARAMS(args)) \ + LTTNG_UST__DEFINE_TRACEPOINT(provider, name, _TP_PARAMS(args)) + +#define LTTNG_UST_TRACEPOINT_EVENT_CLASS(provider, name, args, fields) -#define TRACEPOINT_EVENT_CLASS(provider, name, args, fields) +#define LTTNG_UST_TRACEPOINT_EVENT_INSTANCE(provider, _template, name, args) \ + LTTNG_UST__DECLARE_TRACEPOINT(provider, name, _TP_PARAMS(args)) \ + LTTNG_UST__DEFINE_TRACEPOINT(provider, name, _TP_PARAMS(args)) -#define TRACEPOINT_EVENT_INSTANCE(provider, _template, name, args) \ - _DECLARE_TRACEPOINT(provider, name, _TP_PARAMS(args)) \ - _DEFINE_TRACEPOINT(provider, name, _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 +#endif /* #if LTTNG_UST_COMPAT_API(0) */ -#endif /* #ifndef TRACEPOINT_EVENT */ +#endif /* #ifndef LTTNG_UST_TRACEPOINT_EVENT */ #ifndef TRACEPOINT_LOGLEVEL @@ -765,12 +784,12 @@ __tracepoints__ptrs_destroy(void) * debug information with function-level scope * * TRACE_DEBUG_LINE 13 - * debug information with line-level scope (TRACEPOINT_EVENT default) + * debug information with line-level scope (LTTNG_UST_TRACEPOINT_EVENT default) * * TRACE_DEBUG 14 * debug-level message * - * Declare tracepoint loglevels for tracepoints. A TRACEPOINT_EVENT + * Declare tracepoint loglevels for tracepoints. A LTTNG_UST_TRACEPOINT_EVENT * should be declared prior to the the 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