X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Fust-tracepoint-event.h;h=5c6b846a3954e219b1fb938b350964afe9a5ca5f;hb=1210ca90e6300ad2dbc271143e14a75355387021;hp=d3127016378c143061eb6118075464bb790b8f4c;hpb=bb71a8ea3b2e7335393a6810887fb9b145cc6f7e;p=lttng-ust.git diff --git a/include/lttng/ust-tracepoint-event.h b/include/lttng/ust-tracepoint-event.h index d3127016..5c6b846a 100644 --- a/include/lttng/ust-tracepoint-event.h +++ b/include/lttng/ust-tracepoint-event.h @@ -15,9 +15,10 @@ #include #include #include +#include #include -#define __LTTNG_UST_NULL_STRING "(null)" +#define LTTNG_UST__NULL_STRING "(null)" #undef tp_list_for_each_entry_rcu #define tp_list_for_each_entry_rcu(pos, head, member) \ @@ -53,30 +54,30 @@ LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, LTTNG_UST__TP_PARAMS(_args)) /* Helpers */ -#define _TP_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +#define LTTNG_UST__TP_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) -#define _tp_max_t(type, x, y) \ +#define lttng_ust__tp_max_t(type, x, y) \ ({ \ - type __max1 = (x); \ - type __max2 = (y); \ - __max1 > __max2 ? __max1: __max2; \ + type lttng_ust__max1 = (x); \ + type lttng_ust__max2 = (y); \ + lttng_ust__max1 > lttng_ust__max2 ? lttng_ust__max1: lttng_ust__max2; \ }) /* * Stage 0 of tracepoint event generation. * * Check that each LTTNG_UST_TRACEPOINT_EVENT provider argument match the - * TRACEPOINT_PROVIDER by creating dummy callbacks. + * LTTNG_UST_TRACEPOINT_PROVIDER by creating dummy callbacks. */ /* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include static inline -void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void) +void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_mismatch_, LTTNG_UST_TRACEPOINT_PROVIDER)(void) lttng_ust_notrace; static inline -void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void) +void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_mismatch_, LTTNG_UST_TRACEPOINT_PROVIDER)(void) { } @@ -89,10 +90,10 @@ void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_mismatch_, TRACE lttng_ust_tracepoint_provider_mismatch_##_provider(); static inline -void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) +void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, LTTNG_UST_TRACEPOINT_PROVIDER)(void) lttng_ust_notrace; static inline -void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void) +void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, LTTNG_UST_TRACEPOINT_PROVIDER)(void) { #include LTTNG_UST_TRACEPOINT_INCLUDE } @@ -197,10 +198,15 @@ void __event_template_proto___##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PR .options = LTTNG_UST_ENUM_ENTRY_OPTION_IS_AUTO, \ }), -#undef TP_ENUM_VALUES -#define TP_ENUM_VALUES(...) \ +#undef LTTNG_UST_TP_ENUM_VALUES +#define LTTNG_UST_TP_ENUM_VALUES(...) \ __VA_ARGS__ +#if LTTNG_UST_COMPAT_API(0) +# undef TP_ENUM_VALUES +# define TP_ENUM_VALUES LTTNG_UST_TP_ENUM_VALUES +#endif /* #if LTTNG_UST_COMPAT_API(0) */ + #undef LTTNG_UST_TRACEPOINT_ENUM #define LTTNG_UST_TRACEPOINT_ENUM(_provider, _name, _values) \ const struct lttng_ust_enum_entry * const __enum_values__##_provider##_##_name[] = { \ @@ -373,7 +379,7 @@ void __event_template_proto___##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PR .struct_size = sizeof(struct lttng_ust_enum_desc), \ .name = #_provider "_" #_name, \ .entries = __enum_values__##_provider##_##_name, \ - .nr_entries = _TP_ARRAY_SIZE(__enum_values__##_provider##_##_name) - 1, \ + .nr_entries = LTTNG_UST__TP_ARRAY_SIZE(__enum_values__##_provider##_##_name) - 1, \ }; #include LTTNG_UST_TRACEPOINT_INCLUDE @@ -443,7 +449,7 @@ static void __event_probe__##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PROTO #undef _ctf_string #define _ctf_string(_item, _src, _nowrite) \ __event_len += __dynamic_len[__dynamic_len_idx++] = \ - strlen((_src) ? (_src) : __LTTNG_UST_NULL_STRING) + 1; + strlen((_src) ? (_src) : LTTNG_UST__NULL_STRING) + 1; #undef _ctf_unused #define _ctf_unused(_src) \ @@ -609,7 +615,7 @@ size_t __event_get_size__##_provider##___##_name( \ #define _ctf_string(_item, _src, _nowrite) \ { \ const void *__ctf_tmp_ptr = \ - ((_src) ? (_src) : __LTTNG_UST_NULL_STRING); \ + ((_src) ? (_src) : LTTNG_UST__NULL_STRING); \ memcpy(__stack_data, &__ctf_tmp_ptr, sizeof(void *)); \ __stack_data += sizeof(void *); \ } @@ -659,20 +665,20 @@ void __event_prepare_interpreter_stack__##_provider##___##_name(char *__stack_da #define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _nowrite) \ if (0) \ (void) (_src); /* Unused */ \ - __event_align = _tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_type)); + __event_align = lttng_ust__tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_type)); #undef _ctf_float #define _ctf_float(_type, _item, _src, _nowrite) \ if (0) \ (void) (_src); /* Unused */ \ - __event_align = _tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_type)); + __event_align = lttng_ust__tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_type)); #undef _ctf_array_encoded #define _ctf_array_encoded(_type, _item, _src, _byte_order, _length, \ _encoding, _nowrite, _elem_type_base) \ if (0) \ (void) (_src); /* Unused */ \ - __event_align = _tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_type)); + __event_align = lttng_ust__tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_type)); #undef _ctf_sequence_encoded #define _ctf_sequence_encoded(_type, _item, _src, _byte_order, _length_type, \ @@ -681,8 +687,8 @@ void __event_prepare_interpreter_stack__##_provider##___##_name(char *__stack_da (void) (_src); /* Unused */ \ if (0) \ (void) (_src_length); /* Unused */ \ - __event_align = _tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_length_type)); \ - __event_align = _tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_type)); + __event_align = lttng_ust__tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_length_type)); \ + __event_align = lttng_ust__tp_max_t(size_t, __event_align, lttng_ust_rb_alignof(_type)); #undef _ctf_string #define _ctf_string(_item, _src, _nowrite) \ @@ -770,7 +776,7 @@ size_t __event_get_align__##_provider##___##_name(LTTNG_UST__TP_ARGS_PROTO(_args #define _ctf_string(_item, _src, _nowrite) \ { \ const char *__ctf_tmp_string = \ - ((_src) ? (_src) : __LTTNG_UST_NULL_STRING); \ + ((_src) ? (_src) : LTTNG_UST__NULL_STRING); \ __chan->ops->event_strcpy(&__ctx, __ctf_tmp_string, \ __get_dynamic_len(dest)); \ } @@ -840,7 +846,7 @@ 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; \ - const size_t __num_fields = _TP_ARRAY_SIZE(__event_fields___##_provider##___##_name) - 1; \ + const size_t __num_fields = LTTNG_UST__TP_ARRAY_SIZE(__event_fields___##_provider##___##_name) - 1; \ union { \ size_t __dynamic_len[__num_fields]; \ char __interpreter_stack_data[2 * sizeof(unsigned long) * __num_fields]; \ @@ -1022,7 +1028,7 @@ LTTNG_UST_TP_EXTERN_C const char * const _model_emf_uri___##__provider##___##__n * symbol table. */ -extern const struct lttng_ust_probe_desc LTTNG_UST__TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER) +extern const struct lttng_ust_probe_desc LTTNG_UST__TP_COMBINE_TOKENS(__probe_desc___, LTTNG_UST_TRACEPOINT_PROVIDER) __attribute__((visibility("hidden"))); /* @@ -1056,7 +1062,7 @@ static const struct lttng_ust_event_desc __event_desc___##_provider##_##_name = .probe_desc = &__probe_desc___##_provider, \ .probe_callback = (void (*)(void)) &__event_probe__##_provider##___##_template, \ .fields = __event_fields___##_provider##___##_template, \ - .nr_fields = _TP_ARRAY_SIZE(__event_fields___##_provider##___##_template) - 1, \ + .nr_fields = LTTNG_UST__TP_ARRAY_SIZE(__event_fields___##_provider##___##_template) - 1, \ .loglevel = &__ref_loglevel___##_provider##___##_name, \ .signature = __tp_event_signature___##_provider##___##_template, \ .model_emf_uri = &__ref_model_emf_uri___##_provider##___##_name, \ @@ -1077,7 +1083,7 @@ static const struct lttng_ust_event_desc __event_desc___##_provider##_##_name = #define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ &__event_desc___##_provider##_##_name, -static const struct lttng_ust_event_desc * const LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)[] = { +static const struct lttng_ust_event_desc * const LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, LTTNG_UST_TRACEPOINT_PROVIDER)[] = { #include LTTNG_UST_TRACEPOINT_INCLUDE NULL, /* Dummy, C99 forbids 0-len array. */ }; @@ -1089,17 +1095,17 @@ static const struct lttng_ust_event_desc * const LTTNG_UST__TP_COMBINE_TOKENS(__ * Create a toplevel descriptor for the whole probe. */ -const struct lttng_ust_probe_desc LTTNG_UST__TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER) = { +const struct lttng_ust_probe_desc LTTNG_UST__TP_COMBINE_TOKENS(__probe_desc___, LTTNG_UST_TRACEPOINT_PROVIDER) = { .struct_size = sizeof(struct lttng_ust_probe_desc), - .provider_name = __tp_stringify(TRACEPOINT_PROVIDER), - .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, + .provider_name = __tp_stringify(LTTNG_UST_TRACEPOINT_PROVIDER), + .event_desc = LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, LTTNG_UST_TRACEPOINT_PROVIDER), + .nr_events = LTTNG_UST__TP_ARRAY_SIZE(LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, LTTNG_UST_TRACEPOINT_PROVIDER)) - 1, .major = LTTNG_UST_PROVIDER_MAJOR, .minor = LTTNG_UST_PROVIDER_MINOR, }; -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); +static int LTTNG_UST__TP_COMBINE_TOKENS(__probe_register_refcount___, LTTNG_UST_TRACEPOINT_PROVIDER); +static struct lttng_ust_registered_probe *LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, LTTNG_UST_TRACEPOINT_PROVIDER); /* * Stage 9 of tracepoint event generation. @@ -1115,48 +1121,48 @@ static struct lttng_ust_registered_probe *LTTNG_UST__TP_COMBINE_TOKENS(__lttng_u /* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */ #include static void -LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void) +LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_init__, LTTNG_UST_TRACEPOINT_PROVIDER)(void) lttng_ust_notrace __attribute__((constructor)); static void -LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void) +LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_init__, LTTNG_UST_TRACEPOINT_PROVIDER)(void) { struct lttng_ust_registered_probe *reg_probe; if (LTTNG_UST__TP_COMBINE_TOKENS(__probe_register_refcount___, - TRACEPOINT_PROVIDER)++) { + LTTNG_UST_TRACEPOINT_PROVIDER)++) { return; } /* - * lttng_ust_tracepoint_provider_check_ ## TRACEPOINT_PROVIDER() is a + * lttng_ust_tracepoint_provider_check_ ## LTTNG_UST_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. */ - 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)); + LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, LTTNG_UST_TRACEPOINT_PROVIDER)(); + assert(!LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, LTTNG_UST_TRACEPOINT_PROVIDER)); + reg_probe = lttng_ust_probe_register(<TNG_UST__TP_COMBINE_TOKENS(__probe_desc___, LTTNG_UST_TRACEPOINT_PROVIDER)); if (!reg_probe) { fprintf(stderr, "LTTng-UST: Error while registering tracepoint probe.\n"); abort(); } - LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = reg_probe; + LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, LTTNG_UST_TRACEPOINT_PROVIDER) = reg_probe; } static void -LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void) +LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_exit__, LTTNG_UST_TRACEPOINT_PROVIDER)(void) lttng_ust_notrace __attribute__((destructor)); static void -LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void) +LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_exit__, LTTNG_UST_TRACEPOINT_PROVIDER)(void) { if (--LTTNG_UST__TP_COMBINE_TOKENS(__probe_register_refcount___, - TRACEPOINT_PROVIDER)) { + LTTNG_UST_TRACEPOINT_PROVIDER)) { return; } - 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; + lttng_ust_probe_unregister(LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, LTTNG_UST_TRACEPOINT_PROVIDER)); + LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, LTTNG_UST_TRACEPOINT_PROVIDER) = NULL; } -int LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_, TRACEPOINT_PROVIDER) +int LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_, LTTNG_UST_TRACEPOINT_PROVIDER) __attribute__((visibility("default")));