Fix: check for event class/instance prototype mismatch
[lttng-ust.git] / include / lttng / ust-tracepoint-event.h
index 2bb4a38ee7df3e7f9751c94ec81a9d943d3db011..7890c247453e93c0c4b0ee9038ce6531b1a49757 100644 (file)
@@ -120,6 +120,30 @@ static const char                                                  \
 
 #include TRACEPOINT_INCLUDE
 
+/*
+ * Stage 0.2 of tracepoint event generation.
+ *
+ * Create dummy trace prototypes for each event class, and for each used
+ * template. This will allow checking whether the prototypes from the
+ * class and the instance using the class actually match.
+ */
+
+/* Reset all macros within TRACEPOINT_EVENT */
+#include <lttng/ust-tracepoint-event-reset.h>
+
+#undef TP_ARGS
+#define 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 TRACEPOINT_EVENT_CLASS
+#define TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args));
+
+#include TRACEPOINT_INCLUDE
+
 /*
  * Stage 0.9 of tracepoint event generation
  *
@@ -865,9 +889,7 @@ LTTNG_TP_EXTERN_C const int *_loglevel___##__provider##___##__name     \
 
 #include TRACEPOINT_INCLUDE
 
-#ifdef __cplusplus
 #undef LTTNG_TP_EXTERN_C
-#endif
 
 /*
  * Stage 6.1 of tracepoint event generation.
@@ -893,13 +915,11 @@ LTTNG_TP_EXTERN_C const int *_loglevel___##__provider##___##__name           \
 #undef TRACEPOINT_MODEL_EMF_URI
 #define TRACEPOINT_MODEL_EMF_URI(__provider, __name, __uri)               \
 LTTNG_TP_EXTERN_C const char *_model_emf_uri___##__provider##___##__name   \
-               __attribute__((visibility("hidden"))) = __uri              \
+               __attribute__((visibility("hidden"))) = __uri;             \
 
 #include TRACEPOINT_INCLUDE
 
-#ifdef __cplusplus
 #undef LTTNG_TP_EXTERN_C
-#endif
 
 /*
  * Stage 7.1 of tracepoint event generation.
@@ -1011,7 +1031,7 @@ _TP_COMBINE_TOKENS(__lttng_events_init__, TRACEPOINT_PROVIDER)(void)
        _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)();
        ret = lttng_probe_register(&_TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER));
        if (ret) {
-               fprintf(stderr, "LTTng-UST: Error (%d) while registering tracepoint probe. Duplicate registration of tracepoint probes having the same name is not allowed.\n", ret);
+               fprintf(stderr, "LTTng-UST: Error (%d) while registering tracepoint probe.\n", ret);
                abort();
        }
 }
This page took 0.032906 seconds and 4 git commands to generate.