Move to kernel style SPDX license identifiers
[lttng-ust.git] / include / lttng / tracepoint.h
index 7cfae3e4c10cd65c557a525fdbee063cd6d23c53..bcab5e2d7b0fa3c2ac0efb71b2c4f2ed3a68f2fe 100644 (file)
@@ -1,28 +1,12 @@
-#ifndef _LTTNG_TRACEPOINT_H
-#define _LTTNG_TRACEPOINT_H
-
 /*
- * Copyright 2011-2012 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
+ * SPDX-License-Identifier: MIT
+ *
+ * Copyright (C) 2011-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  */
 
+#ifndef _LTTNG_TRACEPOINT_H
+#define _LTTNG_TRACEPOINT_H
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <lttng/tracepoint-types.h>
 #include <lttng/ust-compiler.h>
 
 #ifdef LTTNG_UST_HAVE_SDT_INTEGRATION
-#define SDT_USE_VARIADIC
+/*
+ * Instead of using SDT_USE_VARIADIC from 'sys/sdt.h', use our own namespaced
+ * macros since the instrumented application might already have included
+ * 'sys/sdt.h' without variadic support.
+ */
 #include <sys/sdt.h>
-#define LTTNG_STAP_PROBEV STAP_PROBEV
+
+#define _LTTNG_SDT_NARG(...) \
+       __LTTNG_SDT_NARG(__VA_ARGS__, 12,11,10,9,8,7,6,5,4,3,2,1,0)
+
+#define __LTTNG_SDT_NARG(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12, N, ...) N
+
+#define _LTTNG_SDT_PROBE_N(provider, name, N, ...) \
+       _SDT_PROBE(provider, name, N, (__VA_ARGS__))
+
+#define LTTNG_STAP_PROBEV(provider, name, ...) \
+       _LTTNG_SDT_PROBE_N(provider, name, _LTTNG_SDT_NARG(0, ##__VA_ARGS__), ##__VA_ARGS__)
+
 #else
 #define LTTNG_STAP_PROBEV(...)
 #endif
@@ -165,12 +164,12 @@ void __tracepoint_cb_##_provider##___##_name(_TP_ARGS_PROTO(__VA_ARGS__));                \
 static                                                                                 \
 void __tracepoint_cb_##_provider##___##_name(_TP_ARGS_PROTO(__VA_ARGS__))              \
 {                                                                                      \
-       struct lttng_ust_tracepoint_probe *__tp_probe;                                          \
+       struct lttng_ust_tracepoint_probe *__tp_probe;                                  \
                                                                                        \
        if (caa_unlikely(!TP_RCU_LINK_TEST()))                                          \
                return;                                                                 \
-       tp_rcu_read_lock_bp();                                                          \
-       __tp_probe = tp_rcu_dereference_bp(__tracepoint_##_provider##___##_name.probes); \
+       tp_rcu_read_lock();                                                             \
+       __tp_probe = tp_rcu_dereference(__tracepoint_##_provider##___##_name.probes);   \
        if (caa_unlikely(!__tp_probe))                                                  \
                goto end;                                                               \
        do {                                                                            \
@@ -181,7 +180,7 @@ void __tracepoint_cb_##_provider##___##_name(_TP_ARGS_PROTO(__VA_ARGS__))           \
                                (_TP_ARGS_DATA_VAR(__VA_ARGS__));                       \
        } while ((++__tp_probe)->func);                                                 \
 end:                                                                                   \
-       tp_rcu_read_unlock_bp();                                                        \
+       tp_rcu_read_unlock();                                                           \
 }                                                                                      \
 static inline lttng_ust_notrace                                                                \
 void __tracepoint_register_##_provider##___##_name(char *name,                         \
@@ -218,9 +217,9 @@ struct lttng_ust_tracepoint_dlopen {
        int (*tracepoint_register_lib)(struct lttng_ust_tracepoint * const *tracepoints_start,
                int tracepoints_count);
        int (*tracepoint_unregister_lib)(struct lttng_ust_tracepoint * const *tracepoints_start);
-       void (*rcu_read_lock_sym_bp)(void);
-       void (*rcu_read_unlock_sym_bp)(void);
-       void *(*rcu_dereference_sym_bp)(void *p);
+       void (*rcu_read_lock_sym)(void);
+       void (*rcu_read_unlock_sym)(void);
+       void *(*rcu_dereference_sym)(void *p);
 };
 
 extern struct lttng_ust_tracepoint_dlopen tracepoint_dlopen;
@@ -256,7 +255,6 @@ struct lttng_ust_tracepoint_dlopen *tracepoint_dlopen_ptr
  * control and check if the destructors should be executed.
  */
 struct lttng_ust_tracepoint_destructors_syms {
-       int *old_tracepoint_disable_destructors;
        void (*tracepoint_disable_destructors)(void);
        int (*tracepoint_get_destructors_state)(void);
 };
@@ -278,7 +276,6 @@ static inline void tracepoint_disable_destructors(void)
        if (tracepoint_dlopen_ptr->liblttngust_handle
                        && tracepoint_destructors_syms_ptr->tracepoint_disable_destructors)
                tracepoint_destructors_syms_ptr->tracepoint_disable_destructors();
-       *tracepoint_destructors_syms_ptr->old_tracepoint_disable_destructors = 1;
 }
 
 #ifndef _LGPL_SOURCE
@@ -293,21 +290,21 @@ __tracepoint__init_urcu_sym(void)
         * Symbols below are needed by tracepoint call sites and probe
         * providers.
         */
-       if (!tracepoint_dlopen_ptr->rcu_read_lock_sym_bp)
-               tracepoint_dlopen_ptr->rcu_read_lock_sym_bp =
+       if (!tracepoint_dlopen_ptr->rcu_read_lock_sym)
+               tracepoint_dlopen_ptr->rcu_read_lock_sym =
                        URCU_FORCE_CAST(void (*)(void),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
-                                       "tp_rcu_read_lock_bp"));
-       if (!tracepoint_dlopen_ptr->rcu_read_unlock_sym_bp)
-               tracepoint_dlopen_ptr->rcu_read_unlock_sym_bp =
+                                       "tp_rcu_read_lock"));
+       if (!tracepoint_dlopen_ptr->rcu_read_unlock_sym)
+               tracepoint_dlopen_ptr->rcu_read_unlock_sym =
                        URCU_FORCE_CAST(void (*)(void),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
-                                       "tp_rcu_read_unlock_bp"));
-       if (!tracepoint_dlopen_ptr->rcu_dereference_sym_bp)
-               tracepoint_dlopen_ptr->rcu_dereference_sym_bp =
+                                       "tp_rcu_read_unlock"));
+       if (!tracepoint_dlopen_ptr->rcu_dereference_sym)
+               tracepoint_dlopen_ptr->rcu_dereference_sym =
                        URCU_FORCE_CAST(void *(*)(void *p),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
-                                       "tp_rcu_dereference_sym_bp"));
+                                       "tp_rcu_dereference_sym"));
 }
 #else
 static inline void lttng_ust_notrace
@@ -334,7 +331,7 @@ __tracepoints__init(void)
                tracepoint_dlopen_ptr = &tracepoint_dlopen;
        if (!tracepoint_dlopen_ptr->liblttngust_handle)
                tracepoint_dlopen_ptr->liblttngust_handle =
-                       dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
+                       dlopen("liblttng-ust-tracepoint.so.1", RTLD_NOW | RTLD_GLOBAL);
        if (!tracepoint_dlopen_ptr->liblttngust_handle)
                return;
        __tracepoint__init_urcu_sym();
@@ -369,19 +366,6 @@ __tracepoints__destroy(void)
                 */
                return;
        }
-       /*
-        * Lookup if destructors must be executed using the old method.
-        */
-       if (tracepoint_destructors_syms_ptr->old_tracepoint_disable_destructors
-               && *tracepoint_destructors_syms_ptr->old_tracepoint_disable_destructors) {
-               /*
-                * The old_tracepoint_disable_destructors symbol was found with
-                * dlsym but its value is 1 meaning that destructors must not
-                * be executed.
-                */
-               return;
-       }
-
        ret = dlclose(tracepoint_dlopen_ptr->liblttngust_handle);
        if (ret) {
                fprintf(stderr, "Error (%d) in dlclose\n", ret);
@@ -456,7 +440,7 @@ __tracepoints__ptrs_init(void)
                tracepoint_dlopen_ptr = &tracepoint_dlopen;
        if (!tracepoint_dlopen_ptr->liblttngust_handle)
                tracepoint_dlopen_ptr->liblttngust_handle =
-                       dlopen("liblttng-ust-tracepoint.so.0", RTLD_NOW | RTLD_GLOBAL);
+                       dlopen("liblttng-ust-tracepoint.so.1", RTLD_NOW | RTLD_GLOBAL);
        if (!tracepoint_dlopen_ptr->liblttngust_handle)
                return;
        if (!tracepoint_destructors_syms_ptr)
@@ -469,10 +453,6 @@ __tracepoints__ptrs_init(void)
                URCU_FORCE_CAST(int (*)(struct lttng_ust_tracepoint * const *),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
                                        "tracepoint_unregister_lib"));
-       tracepoint_destructors_syms_ptr->old_tracepoint_disable_destructors =
-               URCU_FORCE_CAST(int *,
-                               dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
-                                       "__tracepoints__disable_destructors"));
        tracepoint_destructors_syms_ptr->tracepoint_disable_destructors =
                URCU_FORCE_CAST(void (*)(void),
                                dlsym(tracepoint_dlopen_ptr->liblttngust_handle,
This page took 0.026783 seconds and 4 git commands to generate.