X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Fust-tracepoint-event.h;h=7a7c07995e06646eafaaad89ccbac78ac804bd1f;hb=0274f7f24e55825f2a51804d50100676d468c06d;hp=0a97f0dfcf80815a2df59d6bf3e17ddf99e9ff4f;hpb=b4c54822d66aaf7bc10fe27cb8bfd8622b370d6b;p=lttng-ust.git diff --git a/include/lttng/ust-tracepoint-event.h b/include/lttng/ust-tracepoint-event.h index 0a97f0df..7a7c0799 100644 --- a/include/lttng/ust-tracepoint-event.h +++ b/include/lttng/ust-tracepoint-event.h @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include @@ -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, \ +#undef LTTNG_UST_TRACEPOINT_EVENT +#define LTTNG_UST_TRACEPOINT_EVENT(_provider, _name, _args, _fields) \ + LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, \ _TP_PARAMS(_args), \ _TP_PARAMS(_fields)) \ - _TRACEPOINT_EVENT_INSTANCE(_provider, _name, _name, \ + LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _name, _name, \ _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, _TP_PARAMS(_args), _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, _TP_PARAMS(_args)) /* Helpers */ #define _TP_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) @@ -65,34 +65,34 @@ /* * 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 _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 _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 _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 _TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) { #include TRACEPOINT_INCLUDE } @@ -100,19 +100,16 @@ void _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) /* * 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) \ -static const char \ - __tp_name_len_check##_provider##___##_name[LTTNG_UST_ABI_SYM_NAME_LEN] \ - __attribute__((unused)) = \ - #_provider ":" #_name; +#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 @@ -124,18 +121,18 @@ static const char \ * 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) \ +#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE +#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ void __event_template_proto___##_provider##___##_template(_TP_ARGS_DATA_PROTO(_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) \ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)); #include TRACEPOINT_INCLUDE @@ -150,7 +147,7 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) /* Enumeration entry (single value) */ #undef ctf_enum_value #define ctf_enum_value(_string, _value) \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \ .struct_size = sizeof(struct lttng_ust_enum_entry), \ .start = { \ .value = lttng_ust_is_signed_type(__typeof__(_value)) ? \ @@ -168,7 +165,7 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) /* Enumeration entry (range) */ #undef ctf_enum_range #define ctf_enum_range(_string, _range_start, _range_end) \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \ .struct_size = sizeof(struct lttng_ust_enum_entry), \ .start = { \ .value = lttng_ust_is_signed_type(__typeof__(_range_start)) ? \ @@ -186,7 +183,7 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) /* Enumeration entry (automatic value; follows the rules of CTF) */ #undef ctf_enum_auto #define ctf_enum_auto(_string) \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \ .struct_size = sizeof(struct lttng_ust_enum_entry), \ .start = { \ .value = -1ULL, \ @@ -206,7 +203,7 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) #undef TRACEPOINT_ENUM #define TRACEPOINT_ENUM(_provider, _name, _values) \ - const struct lttng_ust_enum_entry *__enum_values__##_provider##_##_name[] = { \ + const struct lttng_ust_enum_entry * const __enum_values__##_provider##_##_name[] = { \ _values \ ctf_enum_value("", 0) /* Dummy, 0-len array forbidden by C99. */ \ }; @@ -217,7 +214,7 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) * 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 @@ -234,11 +231,11 @@ 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 @@ -250,14 +247,14 @@ 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 #undef _ctf_integer_ext #define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _nowrite) \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ .struct_size = sizeof(struct lttng_ust_event_field), \ .name = #_item, \ .type = lttng_ust_type_integer_define(_type, _byte_order, _base), \ @@ -267,7 +264,7 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) #undef _ctf_float #define _ctf_float(_type, _item, _src, _nowrite) \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ .struct_size = sizeof(struct lttng_ust_event_field), \ .name = #_item, \ .type = lttng_ust_type_float_define(_type), \ @@ -279,10 +276,10 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) #define _ctf_array_encoded(_type, _item, _src, _byte_order, \ _length, _encoding, _nowrite, \ _elem_type_base) \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ .struct_size = sizeof(struct lttng_ust_event_field), \ .name = #_item, \ - .type = (const struct lttng_ust_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_type_array, { \ + .type = (const struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_type_array, { \ .parent = { \ .type = lttng_ust_type_array, \ }, \ @@ -300,17 +297,17 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) #define _ctf_sequence_encoded(_type, _item, _src, _byte_order, \ _length_type, _src_length, _encoding, _nowrite, \ _elem_type_base) \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ .struct_size = sizeof(struct lttng_ust_event_field), \ .name = "_" #_item "_length", \ .type = lttng_ust_type_integer_define(_length_type, BYTE_ORDER, 10), \ .nowrite = _nowrite, \ .nofilter = 1, \ }), \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ .struct_size = sizeof(struct lttng_ust_event_field), \ .name = #_item, \ - .type = (const struct lttng_ust_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_type_sequence, { \ + .type = (const struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_type_sequence, { \ .parent = { \ .type = lttng_ust_type_sequence, \ }, \ @@ -326,10 +323,10 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) #undef _ctf_string #define _ctf_string(_item, _src, _nowrite) \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ .struct_size = sizeof(struct lttng_ust_event_field), \ .name = #_item, \ - .type = (const struct lttng_ust_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_type_string, { \ + .type = (const struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_type_string, { \ .parent = { \ .type = lttng_ust_type_string, \ }, \ @@ -345,10 +342,10 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) #undef _ctf_enum #define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \ - __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ + LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \ .struct_size = sizeof(struct lttng_ust_event_field), \ .name = #_item, \ - .type = (const struct lttng_ust_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_type_enum, { \ + .type = (const struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_type_enum, { \ .parent = { \ .type = lttng_ust_type_enum, \ }, \ @@ -360,12 +357,12 @@ 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. */ \ }; @@ -387,14 +384,14 @@ 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) \ +#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)); #include TRACEPOINT_INCLUDE @@ -405,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 @@ -413,14 +410,14 @@ static void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)); #define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _nowrite) \ if (0) \ (void) (_src); /* Unused */ \ - __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \ + __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \ __event_len += sizeof(_type); #undef _ctf_float #define _ctf_float(_type, _item, _src, _nowrite) \ if (0) \ (void) (_src); /* Unused */ \ - __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \ + __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \ __event_len += sizeof(_type); #undef _ctf_array_encoded @@ -428,7 +425,7 @@ static void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)); _nowrite, _elem_type_base) \ if (0) \ (void) (_src); /* Unused */ \ - __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \ + __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \ __event_len += sizeof(_type) * (_length); #undef _ctf_sequence_encoded @@ -436,9 +433,9 @@ static void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)); _src_length, _encoding, _nowrite, _elem_type_base) \ if (0) \ (void) (_src); /* Unused */ \ - __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_length_type)); \ + __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_length_type)); \ __event_len += sizeof(_length_type); \ - __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \ + __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \ __dynamic_len[__dynamic_len_idx] = (_src_length); \ __event_len += sizeof(_type) * __dynamic_len[__dynamic_len_idx]; \ __dynamic_len_idx++; @@ -457,14 +454,14 @@ 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)) \ lttng_ust_notrace; \ @@ -492,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 @@ -626,14 +623,14 @@ 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)) \ @@ -654,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 @@ -701,14 +698,14 @@ 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)) \ lttng_ust_notrace; \ @@ -730,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 @@ -789,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 @@ -833,8 +830,8 @@ 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)) \ lttng_ust_notrace; \ @@ -889,12 +886,12 @@ void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \ size_t __event_len, __event_align; \ struct lttng_ust_event_recorder *__event_recorder = (struct lttng_ust_event_recorder *) __event->child; \ struct lttng_ust_channel_buffer *__chan = __event_recorder->chan; \ - struct lttng_ust_lib_ring_buffer_ctx __ctx; \ + 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_lib_ring_buffer_ctx_init(&__ctx, __event_recorder, __event_len, __event_align, \ + 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); \ if (__ret < 0) \ @@ -933,16 +930,16 @@ 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); @@ -959,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 /* @@ -969,21 +966,21 @@ static const char __tp_event_signature___##_provider##___##_name[] = \ * mangled. */ #ifdef __cplusplus -#define LTTNG_TP_EXTERN_C extern "C" +#define LTTNG_UST_TP_EXTERN_C extern "C" #else -#define LTTNG_TP_EXTERN_C +#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_TP_EXTERN_C const int *_loglevel___##__provider##___##__name \ - __attribute__((visibility("hidden"))) = \ +#define 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 -#undef LTTNG_TP_EXTERN_C +#undef LTTNG_UST_TP_EXTERN_C /* * Stage 6.1 of tracepoint event generation. @@ -991,7 +988,7 @@ LTTNG_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 /* @@ -1001,19 +998,19 @@ LTTNG_TP_EXTERN_C const int *_loglevel___##__provider##___##__name \ * mangled. */ #ifdef __cplusplus -#define LTTNG_TP_EXTERN_C extern "C" +#define LTTNG_UST_TP_EXTERN_C extern "C" #else -#define LTTNG_TP_EXTERN_C +#define LTTNG_UST_TP_EXTERN_C #endif #undef TRACEPOINT_MODEL_EMF_URI #define TRACEPOINT_MODEL_EMF_URI(__provider, __name, __uri) \ -LTTNG_TP_EXTERN_C const char *_model_emf_uri___##__provider##___##__name \ +LTTNG_UST_TP_EXTERN_C const char * const _model_emf_uri___##__provider##___##__name \ __attribute__((visibility("hidden"))) = __uri; \ #include TRACEPOINT_INCLUDE -#undef LTTNG_TP_EXTERN_C +#undef LTTNG_UST_TP_EXTERN_C /* * Stage 7.0 of tracepoint event generation. @@ -1032,15 +1029,21 @@ extern const struct lttng_ust_probe_desc _TP_COMBINE_TOKENS(__probe_desc___, TRA * 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))); \ @@ -1067,14 +1070,14 @@ 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)[] = { +static const struct lttng_ust_event_desc * const _TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)[] = { #include TRACEPOINT_INCLUDE NULL, /* Dummy, C99 forbids 0-len array. */ }; @@ -1109,7 +1112,7 @@ 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) @@ -1124,14 +1127,14 @@ _TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void) 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)(); + _TP_COMBINE_TOKENS(lttng_ust_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)); if (!reg_probe) { @@ -1155,5 +1158,5 @@ _TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void) _TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = NULL; } -int _TP_COMBINE_TOKENS(__tracepoint_provider_, TRACEPOINT_PROVIDER) +int _TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_, TRACEPOINT_PROVIDER) __attribute__((visibility("default")));