X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Fust-tracepoint-event.h;h=d3127016378c143061eb6118075464bb790b8f4c;hb=bb71a8ea3b2e7335393a6810887fb9b145cc6f7e;hp=c50047d0baf4c6fc5a262b70b9f2ed72328e1e23;hpb=81b16412749579b79a4d829ff87e170d0e1ebd0d;p=lttng-ust.git diff --git a/include/lttng/ust-tracepoint-event.h b/include/lttng/ust-tracepoint-event.h index c50047d0..d3127016 100644 --- a/include/lttng/ust-tracepoint-event.h +++ b/include/lttng/ust-tracepoint-event.h @@ -26,31 +26,31 @@ pos = cds_list_entry(tp_rcu_dereference(pos->member.next), __typeof__(*pos), member)) /* - * TRACEPOINT_EVENT_CLASS declares a class of tracepoints receiving the + * LTTNG_UST_TRACEPOINT_EVENT_CLASS declares a class of tracepoints receiving the * same arguments and having the same field layout. * - * TRACEPOINT_EVENT_INSTANCE declares an instance of a tracepoint, with + * LTTNG_UST_TRACEPOINT_EVENT_INSTANCE declares an instance of a tracepoint, with * its own provider and name. It refers to a class (template). * - * TRACEPOINT_EVENT declared both a class and an instance and does a + * LTTNG_UST_TRACEPOINT_EVENT declared both a class and an instance and does a * direct mapping from the instance to the class. */ -#undef TRACEPOINT_EVENT -#define TRACEPOINT_EVENT(_provider, _name, _args, _fields) \ - _TRACEPOINT_EVENT_CLASS(_provider, _name, \ - _TP_PARAMS(_args), \ - _TP_PARAMS(_fields)) \ - _TRACEPOINT_EVENT_INSTANCE(_provider, _name, _name, \ - _TP_PARAMS(_args)) +#undef LTTNG_UST_TRACEPOINT_EVENT +#define LTTNG_UST_TRACEPOINT_EVENT(_provider, _name, _args, _fields) \ + LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, \ + LTTNG_UST__TP_PARAMS(_args), \ + LTTNG_UST__TP_PARAMS(_fields)) \ + LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _name, _name, \ + LTTNG_UST__TP_PARAMS(_args)) -#undef TRACEPOINT_EVENT_CLASS -#define TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ - _TRACEPOINT_EVENT_CLASS(_provider, _name, _TP_PARAMS(_args), _TP_PARAMS(_fields)) +#undef LTTNG_UST_TRACEPOINT_EVENT_CLASS +#define LTTNG_UST_TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ + LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, LTTNG_UST__TP_PARAMS(_args), LTTNG_UST__TP_PARAMS(_fields)) -#undef TRACEPOINT_EVENT_INSTANCE -#define TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ - _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _TP_PARAMS(_args)) +#undef LTTNG_UST_TRACEPOINT_EVENT_INSTANCE +#define LTTNG_UST_TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ + LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, LTTNG_UST__TP_PARAMS(_args)) /* Helpers */ #define _TP_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) @@ -65,53 +65,53 @@ /* * Stage 0 of tracepoint event generation. * - * Check that each TRACEPOINT_EVENT provider argument match the + * Check that each LTTNG_UST_TRACEPOINT_EVENT provider argument match the * TRACEPOINT_PROVIDER by creating dummy callbacks. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include static inline -void _TP_COMBINE_TOKENS(__tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void) +void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void) lttng_ust_notrace; static inline -void _TP_COMBINE_TOKENS(__tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void) +void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void) { } -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ - __tracepoint_provider_mismatch_##_provider(); +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ + lttng_ust_tracepoint_provider_mismatch_##_provider(); -#undef _TRACEPOINT_EVENT_INSTANCE -#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ - __tracepoint_provider_mismatch_##_provider(); +#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE +#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ + lttng_ust_tracepoint_provider_mismatch_##_provider(); static inline -void _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) +void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) lttng_ust_notrace; static inline -void _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) +void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) { -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE } /* * Stage 0.1 of tracepoint event generation. * - * Check that each TRACEPOINT_EVENT provider:name does not exceed the + * Check that each LTTNG_UST_TRACEPOINT_EVENT provider:name does not exceed the * tracepoint name length limit. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include -#undef _TRACEPOINT_EVENT_INSTANCE -#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE +#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ lttng_ust_tracepoint_validate_name_len(_provider, _name); -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* * Stage 0.2 of tracepoint event generation. @@ -121,21 +121,21 @@ void _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) * class and the instance using the class actually match. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include -#undef TP_ARGS -#define TP_ARGS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_ARGS +#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__ -#undef _TRACEPOINT_EVENT_INSTANCE -#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ -void __event_template_proto___##_provider##___##_template(_TP_ARGS_DATA_PROTO(_args)); +#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE +#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ +void __event_template_proto___##_provider##___##_template(LTTNG_UST__TP_ARGS_DATA_PROTO(_args)); -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ -void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)); +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ +void __event_template_proto___##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PROTO(_args)); -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* * Stage 0.9 of tracepoint event generation @@ -201,20 +201,20 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) #define TP_ENUM_VALUES(...) \ __VA_ARGS__ -#undef TRACEPOINT_ENUM -#define TRACEPOINT_ENUM(_provider, _name, _values) \ - const struct lttng_ust_enum_entry *__enum_values__##_provider##_##_name[] = { \ +#undef LTTNG_UST_TRACEPOINT_ENUM +#define LTTNG_UST_TRACEPOINT_ENUM(_provider, _name, _values) \ + const struct lttng_ust_enum_entry * const __enum_values__##_provider##_##_name[] = { \ _values \ ctf_enum_value("", 0) /* Dummy, 0-len array forbidden by C99. */ \ }; -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* * Stage 0.9.1 * Verifying array and sequence elements are of an integer type. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include #include #include @@ -231,14 +231,14 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) _elem_type_base) \ lttng_ust_ctf_array_element_type_is_supported(_type, _item); -#undef TP_FIELDS -#define TP_FIELDS(...) __VA_ARGS__ /* Only one used in this phase */ +#undef LTTNG_UST_TP_FIELDS +#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__ /* Only one used in this phase */ -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ _fields -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* * Stage 1 of tracepoint event generation. @@ -247,7 +247,7 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) * Each event produce an array of fields. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include #include #include @@ -357,18 +357,18 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) .nofilter = 0, \ }), -#undef TP_FIELDS -#define TP_FIELDS(...) __VA_ARGS__ /* Only one used in this phase */ +#undef LTTNG_UST_TP_FIELDS +#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__ /* Only one used in this phase */ -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ - static const struct lttng_ust_event_field *__event_fields___##_provider##___##_name[] = { \ +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ + static const struct lttng_ust_event_field * const __event_fields___##_provider##___##_name[] = { \ _fields \ ctf_integer(int, dummy, 0) /* Dummy, C99 forbids 0-len array. */ \ }; -#undef TRACEPOINT_ENUM -#define TRACEPOINT_ENUM(_provider, _name, _values) \ +#undef LTTNG_UST_TRACEPOINT_ENUM +#define LTTNG_UST_TRACEPOINT_ENUM(_provider, _name, _values) \ static const struct lttng_ust_enum_desc __enum_##_provider##_##_name = { \ .struct_size = sizeof(struct lttng_ust_enum_desc), \ .name = #_provider "_" #_name, \ @@ -376,7 +376,7 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) .nr_entries = _TP_ARRAY_SIZE(__enum_values__##_provider##_##_name) - 1, \ }; -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* * Stage 2 of tracepoint event generation. @@ -384,17 +384,17 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) * Create probe callback prototypes. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include -#undef TP_ARGS -#define TP_ARGS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_ARGS +#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__ -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ -static void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)); +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ +static void __event_probe__##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PROTO(_args)); -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* * Stage 3.0 of tracepoint event generation. @@ -402,7 +402,7 @@ static void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)); * Create static inline function that calculates event size. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include #include @@ -454,21 +454,21 @@ static void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)); #define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \ _ctf_integer_ext(_type, _item, _src, BYTE_ORDER, 10, _nowrite) -#undef TP_ARGS -#define TP_ARGS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_ARGS +#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__ -#undef TP_FIELDS -#define TP_FIELDS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_FIELDS +#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__ -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ static inline \ -size_t __event_get_size__##_provider##___##_name(size_t *__dynamic_len, _TP_ARGS_DATA_PROTO(_args)) \ +size_t __event_get_size__##_provider##___##_name(size_t *__dynamic_len, LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \ lttng_ust_notrace; \ static inline \ size_t __event_get_size__##_provider##___##_name( \ size_t *__dynamic_len __attribute__((__unused__)), \ - _TP_ARGS_DATA_PROTO(_args)) \ + LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \ { \ size_t __event_len = 0; \ unsigned int __dynamic_len_idx __attribute__((__unused__)) = 0; \ @@ -480,7 +480,7 @@ size_t __event_get_size__##_provider##___##_name( \ return __event_len; \ } -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* * Stage 3.1 of tracepoint event generation. @@ -489,7 +489,7 @@ size_t __event_get_size__##_provider##___##_name( \ * We make both write and nowrite data available to the filter. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include #include #include @@ -623,17 +623,17 @@ size_t __event_get_size__##_provider##___##_name( \ #define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \ _ctf_integer_ext(_type, _item, _src, BYTE_ORDER, 10, _nowrite) -#undef TP_ARGS -#define TP_ARGS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_ARGS +#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__ -#undef TP_FIELDS -#define TP_FIELDS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_FIELDS +#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__ -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ static inline \ void __event_prepare_interpreter_stack__##_provider##___##_name(char *__stack_data,\ - _TP_ARGS_DATA_PROTO(_args)) \ + LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \ { \ if (0) { \ (void) __tp_data; /* don't warn if unused */ \ @@ -643,7 +643,7 @@ void __event_prepare_interpreter_stack__##_provider##___##_name(char *__stack_da _fields \ } -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* * Stage 4 of tracepoint event generation. @@ -651,7 +651,7 @@ void __event_prepare_interpreter_stack__##_provider##___##_name(char *__stack_da * Create static inline function that calculates event payload alignment. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include #include @@ -698,26 +698,26 @@ void __event_prepare_interpreter_stack__##_provider##___##_name(char *__stack_da #define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \ _ctf_integer_ext(_type, _item, _src, BYTE_ORDER, 10, _nowrite) -#undef TP_ARGS -#define TP_ARGS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_ARGS +#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__ -#undef TP_FIELDS -#define TP_FIELDS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_FIELDS +#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__ -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ static inline \ -size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args)) \ +size_t __event_get_align__##_provider##___##_name(LTTNG_UST__TP_ARGS_PROTO(_args)) \ lttng_ust_notrace; \ static inline \ -size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args)) \ +size_t __event_get_align__##_provider##___##_name(LTTNG_UST__TP_ARGS_PROTO(_args)) \ { \ size_t __event_align = 1; \ _fields \ return __event_align; \ } -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* @@ -727,7 +727,7 @@ size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args)) \ * and writes event data into the buffer. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include #include @@ -786,11 +786,11 @@ size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args)) \ #undef __get_dynamic_len #define __get_dynamic_len(field) __stackvar.__dynamic_len[__dynamic_len_idx++] -#undef TP_ARGS -#define TP_ARGS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_ARGS +#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__ -#undef TP_FIELDS -#define TP_FIELDS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_FIELDS +#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__ /* * For state dump, check that "session" argument (mandatory) matches the @@ -830,13 +830,13 @@ size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args)) \ * 2*sizeof(unsigned long) for all supported architectures. * Perform UNION (||) of filter runtime list. */ -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ static \ -void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \ +void __event_probe__##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \ lttng_ust_notrace; \ static \ -void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \ +void __event_probe__##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \ { \ struct lttng_ust_event_common *__event = (struct lttng_ust_event_common *) __tp_data; \ size_t __dynamic_len_idx = 0; \ @@ -874,7 +874,7 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \ return; \ if (caa_unlikely(CMM_ACCESS_ONCE(__event->eval_filter))) { \ __event_prepare_interpreter_stack__##_provider##___##_name(__stackvar.__interpreter_stack_data, \ - _TP_ARGS_DATA_VAR(_args)); \ + LTTNG_UST__TP_ARGS_DATA_VAR(_args)); \ __interpreter_stack_prepared = true; \ if (caa_likely(__event->run_filter(__event, \ __stackvar.__interpreter_stack_data, NULL) != LTTNG_UST_EVENT_FILTER_ACCEPT)) \ @@ -889,8 +889,8 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \ struct lttng_ust_ring_buffer_ctx __ctx; \ \ __event_len = __event_get_size__##_provider##___##_name(__stackvar.__dynamic_len, \ - _TP_ARGS_DATA_VAR(_args)); \ - __event_align = __event_get_align__##_provider##___##_name(_TP_ARGS_VAR(_args)); \ + LTTNG_UST__TP_ARGS_DATA_VAR(_args)); \ + __event_align = __event_get_align__##_provider##___##_name(LTTNG_UST__TP_ARGS_VAR(_args)); \ lttng_ust_ring_buffer_ctx_init(&__ctx, __event_recorder, __event_len, __event_align, \ _TP_IP_PARAM(TP_IP_PARAM)); \ __ret = __chan->ops->event_reserve(&__ctx); \ @@ -910,7 +910,7 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \ \ if (caa_unlikely(!__interpreter_stack_prepared && __notif_ctx.eval_capture)) \ __event_prepare_interpreter_stack__##_provider##___##_name(__stackvar.__interpreter_stack_data, \ - _TP_ARGS_DATA_VAR(_args)); \ + LTTNG_UST__TP_ARGS_DATA_VAR(_args)); \ \ __event_notifier->notification_send(__event_notifier, \ __stackvar.__interpreter_stack_data, \ @@ -920,7 +920,7 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \ } \ } -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE #undef __get_dynamic_len @@ -930,20 +930,20 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \ * Create probe signature */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include -#undef TP_ARGS -#define TP_ARGS(...) __VA_ARGS__ +#undef LTTNG_UST_TP_ARGS +#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__ #define _TP_EXTRACT_STRING2(...) #__VA_ARGS__ -#undef _TRACEPOINT_EVENT_CLASS -#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS +#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ static const char __tp_event_signature___##_provider##___##_name[] = \ _TP_EXTRACT_STRING2(_args); -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE #undef _TP_EXTRACT_STRING2 @@ -956,7 +956,7 @@ static const char __tp_event_signature___##_provider##___##_name[] = \ * the compiler will complain. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include /* @@ -971,14 +971,14 @@ static const char __tp_event_signature___##_provider##___##_name[] = \ #define LTTNG_UST_TP_EXTERN_C #endif -#undef TRACEPOINT_LOGLEVEL -#define TRACEPOINT_LOGLEVEL(__provider, __name, __loglevel) \ -static const int _loglevel_value___##__provider##___##__name = __loglevel; \ -LTTNG_UST_TP_EXTERN_C const int *_loglevel___##__provider##___##__name \ - __attribute__((visibility("hidden"))) = \ +#undef LTTNG_UST_TRACEPOINT_LOGLEVEL +#define LTTNG_UST_TRACEPOINT_LOGLEVEL(__provider, __name, __loglevel) \ +static const int _loglevel_value___##__provider##___##__name = __loglevel; \ +LTTNG_UST_TP_EXTERN_C const int * const _loglevel___##__provider##___##__name \ + __attribute__((visibility("hidden"))) = \ &_loglevel_value___##__provider##___##__name; -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE #undef LTTNG_UST_TP_EXTERN_C @@ -988,7 +988,7 @@ LTTNG_UST_TP_EXTERN_C const int *_loglevel___##__provider##___##__name \ * Tracepoint UML URI info. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include /* @@ -1003,12 +1003,12 @@ LTTNG_UST_TP_EXTERN_C const int *_loglevel___##__provider##___##__name \ #define LTTNG_UST_TP_EXTERN_C #endif -#undef TRACEPOINT_MODEL_EMF_URI -#define TRACEPOINT_MODEL_EMF_URI(__provider, __name, __uri) \ -LTTNG_UST_TP_EXTERN_C const char *_model_emf_uri___##__provider##___##__name \ +#undef LTTNG_UST_TRACEPOINT_MODEL_EMF_URI +#define LTTNG_UST_TRACEPOINT_MODEL_EMF_URI(__provider, __name, __uri) \ +LTTNG_UST_TP_EXTERN_C const char * const _model_emf_uri___##__provider##___##__name \ __attribute__((visibility("hidden"))) = __uri; \ -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE #undef LTTNG_UST_TP_EXTERN_C @@ -1022,22 +1022,28 @@ LTTNG_UST_TP_EXTERN_C const char *_model_emf_uri___##__provider##___##__name \ * symbol table. */ -extern const struct lttng_ust_probe_desc _TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER) +extern const struct lttng_ust_probe_desc LTTNG_UST__TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER) __attribute__((visibility("hidden"))); /* * Stage 7.1 of tracepoint event generation. * * Create events description structures. We use a weakref because - * loglevels are optional. If not declared, the event will point to the + * loglevels are optional. If not declared, the event will point to * a loglevel that contains NULL. + * + * C++ requires that const objects have a user-declared default + * constructor. However, in both C++ and C, weakref cannot be + * initialized because it causes the weakref attribute to be ignored. + * Therefore, the loglevel and model_emf_uri pointers are not const + * to ensure C++ compilers default-initialize them. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include -#undef _TRACEPOINT_EVENT_INSTANCE -#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE +#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ static const int * \ __ref_loglevel___##_provider##___##_name \ __attribute__((weakref ("_loglevel___" #_provider "___" #_name))); \ @@ -1056,7 +1062,7 @@ static const struct lttng_ust_event_desc __event_desc___##_provider##_##_name = .model_emf_uri = &__ref_model_emf_uri___##_provider##___##_name, \ }; -#include TRACEPOINT_INCLUDE +#include LTTNG_UST_TRACEPOINT_INCLUDE /* * Stage 7.2 of tracepoint event generation. @@ -1064,15 +1070,15 @@ static const struct lttng_ust_event_desc __event_desc___##_provider##_##_name = * Create array of events. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include -#undef _TRACEPOINT_EVENT_INSTANCE -#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE +#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ &__event_desc___##_provider##_##_name, -static const struct lttng_ust_event_desc *_TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)[] = { -#include TRACEPOINT_INCLUDE +static const struct lttng_ust_event_desc * const LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)[] = { +#include LTTNG_UST_TRACEPOINT_INCLUDE NULL, /* Dummy, C99 forbids 0-len array. */ }; @@ -1083,17 +1089,17 @@ static const struct lttng_ust_event_desc *_TP_COMBINE_TOKENS(__event_desc___, TR * Create a toplevel descriptor for the whole probe. */ -const struct lttng_ust_probe_desc _TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER) = { +const struct lttng_ust_probe_desc LTTNG_UST__TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER) = { .struct_size = sizeof(struct lttng_ust_probe_desc), .provider_name = __tp_stringify(TRACEPOINT_PROVIDER), - .event_desc = _TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER), - .nr_events = _TP_ARRAY_SIZE(_TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)) - 1, + .event_desc = LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER), + .nr_events = _TP_ARRAY_SIZE(LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)) - 1, .major = LTTNG_UST_PROVIDER_MAJOR, .minor = LTTNG_UST_PROVIDER_MINOR, }; -static int _TP_COMBINE_TOKENS(__probe_register_refcount___, TRACEPOINT_PROVIDER); -static struct lttng_ust_registered_probe *_TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER); +static int LTTNG_UST__TP_COMBINE_TOKENS(__probe_register_refcount___, TRACEPOINT_PROVIDER); +static struct lttng_ust_registered_probe *LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER); /* * Stage 9 of tracepoint event generation. @@ -1106,51 +1112,51 @@ static struct lttng_ust_registered_probe *_TP_COMBINE_TOKENS(__lttng_ust_probe_r * Register refcount is protected by libc dynamic loader mutex. */ -/* Reset all macros within TRACEPOINT_EVENT */ +/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include static void -_TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void) +LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void) lttng_ust_notrace __attribute__((constructor)); static void -_TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void) +LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void) { struct lttng_ust_registered_probe *reg_probe; - if (_TP_COMBINE_TOKENS(__probe_register_refcount___, + if (LTTNG_UST__TP_COMBINE_TOKENS(__probe_register_refcount___, TRACEPOINT_PROVIDER)++) { return; } /* - * __tracepoint_provider_check_ ## TRACEPOINT_PROVIDER() is a + * lttng_ust_tracepoint_provider_check_ ## TRACEPOINT_PROVIDER() is a * static inline function that ensures every probe PROVIDER * argument match the provider within which they appear. It * calls empty static inline functions, and therefore has no * runtime effect. However, if it detects an error, a linker * error will appear. */ - _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)(); - assert(!_TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER)); - reg_probe = lttng_ust_probe_register(&_TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER)); + LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, TRACEPOINT_PROVIDER)(); + assert(!LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER)); + reg_probe = lttng_ust_probe_register(<TNG_UST__TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER)); if (!reg_probe) { fprintf(stderr, "LTTng-UST: Error while registering tracepoint probe.\n"); abort(); } - _TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = reg_probe; + LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = reg_probe; } static void -_TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void) +LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void) lttng_ust_notrace __attribute__((destructor)); static void -_TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void) +LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void) { - if (--_TP_COMBINE_TOKENS(__probe_register_refcount___, + if (--LTTNG_UST__TP_COMBINE_TOKENS(__probe_register_refcount___, TRACEPOINT_PROVIDER)) { return; } - lttng_ust_probe_unregister(_TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER)); - _TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = NULL; + lttng_ust_probe_unregister(LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER)); + LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = NULL; } -int _TP_COMBINE_TOKENS(__tracepoint_provider_, TRACEPOINT_PROVIDER) +int LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_, TRACEPOINT_PROVIDER) __attribute__((visibility("default")));