Fix: trace events in C constructors/destructors
[lttng-ust.git] / include / lttng / ust-compiler.h
index b7fd2c1c42bff2bac5d6bfc1c4f403a61fa82234..e81246a34b63a2cfb374467e211c93286a749a65 100644 (file)
 
 #include <assert.h>
 
+/*
+ * By default, LTTng-UST uses the priority 150 for the tracepoint and probe
+ * provider constructors to trace tracepoints located within
+ * constructors/destructors with a higher priority value within the same
+ * module. This priority can be overridden by the application.
+ */
+#ifndef LTTNG_UST_CONSTRUCTOR_PRIO
+#define LTTNG_UST_CONSTRUCTOR_PRIO     150
+#endif
+
 #define lttng_ust_notrace __attribute__((no_instrument_function))
 
 /*
@@ -130,13 +140,13 @@ const lttng::ust::details::LTTNG_UST_COMPILER_COMBINE_TOKENS(                     \
 #define LTTNG_UST_DECLARE_CONSTRUCTOR_DESTRUCTOR(name, constructor_func,       \
                                                 destructor_func, ...)          \
        static void LTTNG_UST_COMPILER_COMBINE_TOKENS(lttng_ust_constructor_, name)(void) \
-               __attribute__((constructor)) __VA_ARGS__;                       \
+               __attribute__((constructor(LTTNG_UST_CONSTRUCTOR_PRIO))) __VA_ARGS__; \
        static void LTTNG_UST_COMPILER_COMBINE_TOKENS(lttng_ust_constructor_, name)(void) \
        {                                                                       \
                constructor_func();                                             \
        }                                                                       \
        static void LTTNG_UST_COMPILER_COMBINE_TOKENS(lttng_ust_destructor_, name)(void) \
-               __attribute__((destructor)) __VA_ARGS__;                        \
+               __attribute__((destructor(LTTNG_UST_CONSTRUCTOR_PRIO))) __VA_ARGS__; \
        static void LTTNG_UST_COMPILER_COMBINE_TOKENS(lttng_ust_destructor_, name)(void) \
        {                                                                       \
                destructor_func();                                              \
This page took 0.025334 seconds and 4 git commands to generate.