X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Fust-tracepoint-event.h;h=e663e839bc0e5426b643dfce5f4f93e17ca57b8b;hb=cbc06a3bd9abe653eaf278cdf4be8bf28dcca267;hp=7b99ecb649f991b93ab71fefbeb555fb0ad4217e;hpb=fc6d7befdf1ff6ec87f2366b9b567c1db6349b5d;p=lttng-ust.git diff --git a/include/lttng/ust-tracepoint-event.h b/include/lttng/ust-tracepoint-event.h index 7b99ecb6..e663e839 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 @@ -109,10 +109,7 @@ void _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) #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; + lttng_ust_tracepoint_validate_name_len(_provider, _name); #include TRACEPOINT_INCLUDE @@ -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. */ \ }; @@ -365,7 +362,7 @@ void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args) #undef _TRACEPOINT_EVENT_CLASS #define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \ - static const struct lttng_ust_event_field *__event_fields___##_provider##___##_name[] = { \ + static const struct lttng_ust_event_field * const __event_fields___##_provider##___##_name[] = { \ _fields \ ctf_integer(int, dummy, 0) /* Dummy, C99 forbids 0-len array. */ \ }; @@ -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++; @@ -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) \ @@ -975,10 +972,10 @@ static const char __tp_event_signature___##_provider##___##_name[] = \ #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"))) = \ +#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 @@ -1008,7 +1005,7 @@ LTTNG_UST_TP_EXTERN_C const int *_loglevel___##__provider##___##__name \ #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 \ +LTTNG_UST_TP_EXTERN_C const char * const _model_emf_uri___##__provider##___##__name \ __attribute__((visibility("hidden"))) = __uri; \ #include TRACEPOINT_INCLUDE @@ -1032,8 +1029,14 @@ 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 */ @@ -1074,7 +1077,7 @@ static const struct lttng_ust_event_desc __event_desc___##_provider##_##_name = #define _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. */ };