X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Fust-tracepoint-event.h;h=18aa4e44f1439b56d194601e5c1d4c89aee4ad9c;hb=d8de13549b80d40b0c823e43e81afd55266f2fe5;hp=0bdc35be4f85ce6a7650efcea86745b5768b26cf;hpb=75c5ad79cbdc0b7d0579ccd1c97902ded5bdc08a;p=lttng-ust.git diff --git a/include/lttng/ust-tracepoint-event.h b/include/lttng/ust-tracepoint-event.h index 0bdc35be..18aa4e44 100644 --- a/include/lttng/ust-tracepoint-event.h +++ b/include/lttng/ust-tracepoint-event.h @@ -434,76 +434,7 @@ static void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args))\ #undef __get_dynamic_len /* - * Stage 6.1 of tracepoint event generation. - * - * Tracepoint loglevel enumeration definition generation. - */ - -/* Reset all macros within TRACEPOINT_EVENT */ -#include - -#undef TRACEPOINT_LOGLEVEL_ENUM -#define TRACEPOINT_LOGLEVEL_ENUM(...) __VA_ARGS__ - -#undef tp_loglevel -#define tp_loglevel(_identifier, _value) \ -static const struct tracepoint_loglevel_entry \ - _TP_COMBINE_TOKENS4(__tp_loglevel_entry__, TRACEPOINT_PROVIDER, ___, _identifier) = { \ - .identifier = #_identifier, \ - .value = (_value), \ - }; - -tp_loglevel(TRACE_EMERG, 0) -tp_loglevel(TRACE_ALERT, 1) -tp_loglevel(TRACE_CRIT, 2) -tp_loglevel(TRACE_ERR, 3) -tp_loglevel(TRACE_WARNING, 4) -tp_loglevel(TRACE_NOTICE, 5) -tp_loglevel(TRACE_INFO, 6) -tp_loglevel(TRACE_SYSTEM, 7) -tp_loglevel(TRACE_PROCESS, 8) -tp_loglevel(TRACE_MODULE, 9) -tp_loglevel(TRACE_UNIT, 10) -tp_loglevel(TRACE_CLASS, 11) -tp_loglevel(TRACE_OBJECT, 12) -tp_loglevel(TRACE_FUNCTION, 13) -tp_loglevel(TRACE_PRINTF, 14) -tp_loglevel(TRACE_DEBUG, 15) - -/* - * Stage 6.2 of tracepoint event generation. - * - * Tracepoint loglevel enumeration array generation. - */ - -/* Reset all macros within TRACEPOINT_EVENT */ -#include - -#undef tp_loglevel -#define tp_loglevel(_identifier, _value) \ - &_TP_COMBINE_TOKENS4(__tp_loglevel_entry__, TRACEPOINT_PROVIDER, ___, _identifier), \ - -static const struct tracepoint_loglevel_entry *_TP_COMBINE_TOKENS(__tracepoint_loglevel_enum__, TRACEPOINT_PROVIDER)[] = { - tp_loglevel(TRACE_EMERG, 0) - tp_loglevel(TRACE_ALERT, 1) - tp_loglevel(TRACE_CRIT, 2) - tp_loglevel(TRACE_ERR, 3) - tp_loglevel(TRACE_WARNING, 4) - tp_loglevel(TRACE_NOTICE, 5) - tp_loglevel(TRACE_INFO, 6) - tp_loglevel(TRACE_SYSTEM, 7) - tp_loglevel(TRACE_PROCESS, 8) - tp_loglevel(TRACE_MODULE, 9) - tp_loglevel(TRACE_UNIT, 10) - tp_loglevel(TRACE_CLASS, 11) - tp_loglevel(TRACE_OBJECT, 12) - tp_loglevel(TRACE_FUNCTION, 13) - tp_loglevel(TRACE_PRINTF, 14) - tp_loglevel(TRACE_DEBUG, 15) -}; - -/* - * Stage 7 of tracepoint event generation. + * Stage 6 of tracepoint event generation. * * Tracepoint loglevel mapping definition generation. We generate a * symbol for each mapping for a provider/event to ensure at most a 1 to @@ -515,15 +446,15 @@ static const struct tracepoint_loglevel_entry *_TP_COMBINE_TOKENS(__tracepoint_l #include #undef TRACEPOINT_LOGLEVEL -#define TRACEPOINT_LOGLEVEL(__provider, __name, __loglevel) \ -static const struct tracepoint_loglevel_entry * \ - _loglevel_mapping___##__provider##___##__name = \ - &__tp_loglevel_entry__##__provider##___##__loglevel; +#define TRACEPOINT_LOGLEVEL(__provider, __name, __loglevel) \ +static const int _loglevel_value___##__provider##___##__name = __loglevel; \ +static const int *_loglevel___##__provider##___##__name = \ + &_loglevel_value___##__provider##___##__name; #include TRACEPOINT_INCLUDE /* - * Stage 8.1 of tracepoint event generation. + * 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 @@ -535,21 +466,21 @@ static const struct tracepoint_loglevel_entry * \ #undef TRACEPOINT_EVENT_INSTANCE #define TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \ -static const struct tracepoint_loglevel_entry * \ - __ref_loglevel_mapping___##_provider##___##_name \ - __attribute__((weakref ("_loglevel_mapping___" #_provider "___" #_name))); \ +static const int * \ + __ref_loglevel___##_provider##___##_name \ + __attribute__((weakref ("_loglevel___" #_provider "___" #_name))); \ const struct lttng_event_desc __event_desc___##_provider##_##_name = { \ .fields = __event_fields___##_provider##___##_template, \ .name = #_provider ":" #_name, \ .probe_callback = (void *) &__event_probe__##_provider##___##_template,\ .nr_fields = _TP_ARRAY_SIZE(__event_fields___##_provider##___##_template), \ - .loglevel = &__ref_loglevel_mapping___##_provider##___##_name, \ + .loglevel = &__ref_loglevel___##_provider##___##_name, \ }; #include TRACEPOINT_INCLUDE /* - * Stage 8.2 of tracepoint event generation. + * Stage 7.2 of tracepoint event generation. * * Create array of events. */ @@ -567,7 +498,7 @@ static const struct lttng_event_desc *_TP_COMBINE_TOKENS(__event_desc___, TRACEP /* - * Stage 9 of tracepoint event generation. + * Stage 8 of tracepoint event generation. * * Create a toplevel descriptor for the whole probe. */ @@ -577,19 +508,19 @@ static struct lttng_probe_desc _TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PR .provider = __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)), - .loglevels = _TP_COMBINE_TOKENS(__tracepoint_loglevel_enum__, TRACEPOINT_PROVIDER), - .nr_loglevels = _TP_ARRAY_SIZE(_TP_COMBINE_TOKENS(__tracepoint_loglevel_enum__, TRACEPOINT_PROVIDER)), }; /* - * Stage 10 of tracepoint event generation. + * Stage 9 of tracepoint event generation. * * Register/unregister probes at module load/unload. + * + * Generate the constructor as an externally visible symbol for use when + * linking the probe statically. */ /* Reset all macros within TRACEPOINT_EVENT */ #include - static void __attribute__((constructor)) _TP_COMBINE_TOKENS(__lttng_events_init__, TRACEPOINT_PROVIDER)(void) { @@ -604,3 +535,5 @@ _TP_COMBINE_TOKENS(__lttng_events_exit__, TRACEPOINT_PROVIDER)(void) { ltt_probe_unregister(&_TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER)); } + +int _TP_COMBINE_TOKENS(__tracepoint_provider_, TRACEPOINT_PROVIDER);