Remove localerr.h
[ust.git] / libust / tracepoint.h
index 6f14ea08a696f43428e615fccfb00eda12a90759..b1ee16d0c7dd6989fc428062cb3d168cd74ce38f 100644 (file)
@@ -5,19 +5,19 @@
  * Copyright (C) 2008 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
  * Copyright (C) 2009 Pierre-Marc Fournier
  *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
  *
- * This program is distributed in the hope that it will be useful,
+ * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
  *
  * Heavily inspired from the Linux Kernel Markers.
  *
@@ -28,6 +28,9 @@
 //#include <linux/types.h>
 //#include <linux/rcupdate.h>
 
+#define _LGPL_SOURCE
+#include <urcu-bp.h>
+
 #include "immediate.h"
 #include "kernelcompat.h"
 
@@ -48,7 +51,8 @@ struct tracepoint {
 #define TPPROTO(args...)       args
 #define TPARGS(args...)                args
 
-//ust// #ifdef CONFIG_TRACEPOINTS
+#define CONFIG_TRACEPOINTS
+#ifdef CONFIG_TRACEPOINTS
 
 /*
  * it_func[0] is never NULL because there is at least one element in the array
@@ -58,14 +62,14 @@ struct tracepoint {
        do {                                                            \
                void **it_func;                                         \
                                                                        \
-               rcu_read_lock_sched_notrace();                          \
+               rcu_read_lock(); /*ust rcu_read_lock_sched_notrace();   */                      \
                it_func = rcu_dereference((tp)->funcs);                 \
                if (it_func) {                                          \
                        do {                                            \
                                ((void(*)(proto))(*it_func))(args);     \
                        } while (*(++it_func));                         \
                }                                                       \
-               rcu_read_unlock_sched_notrace();                        \
+               rcu_read_unlock(); /*ust rcu_read_unlock_sched_notrace(); */                    \
        } while (0)
 
 #define __CHECK_TRACE(name, generic, proto, args)                      \
@@ -125,29 +129,29 @@ struct tracepoint {
 extern void tracepoint_update_probe_range(struct tracepoint *begin,
        struct tracepoint *end);
 
-//ust// #else /* !CONFIG_TRACEPOINTS */
-//ust// #define DECLARE_TRACE(name, proto, args)                               \
-//ust//        static inline void trace_##name(proto)                          \
-//ust//        { }                                                             \
-//ust//        static inline void _trace_##name(proto)                         \
-//ust//        { }                                                             \
-//ust//        static inline int register_trace_##name(void (*probe)(proto))   \
-//ust//        {                                                               \
-//ust//                return -ENOSYS;                                         \
-//ust//        }                                                               \
-//ust//        static inline int unregister_trace_##name(void (*probe)(proto)) \
-//ust//        {                                                               \
-//ust//                return -ENOSYS;                                         \
-//ust//        }
-//ust// 
-//ust// #define DEFINE_TRACE(name)
-//ust// #define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
-//ust// #define EXPORT_TRACEPOINT_SYMBOL(name)
-//ust// 
-//ust// static inline void tracepoint_update_probe_range(struct tracepoint *begin,
-//ust//        struct tracepoint *end)
-//ust// { }
-//ust// #endif /* CONFIG_TRACEPOINTS */
+#else /* !CONFIG_TRACEPOINTS */
+#define DECLARE_TRACE(name, proto, args)                               \
+       static inline void trace_##name(proto)                          \
+       { }                                                             \
+       static inline void _trace_##name(proto)                         \
+       { }                                                             \
+       static inline int register_trace_##name(void (*probe)(proto))   \
+       {                                                               \
+               return -ENOSYS;                                         \
+       }                                                               \
+       static inline int unregister_trace_##name(void (*probe)(proto)) \
+       {                                                               \
+               return -ENOSYS;                                         \
+       }
+
+#define DEFINE_TRACE(name)
+#define EXPORT_TRACEPOINT_SYMBOL_GPL(name)
+#define EXPORT_TRACEPOINT_SYMBOL(name)
+
+static inline void tracepoint_update_probe_range(struct tracepoint *begin,
+       struct tracepoint *end)
+{ }
+#endif /* CONFIG_TRACEPOINTS */
 
 /*
  * Connect a probe to a tracepoint.
@@ -185,7 +189,7 @@ extern int tracepoint_get_iter_range(struct tracepoint **tracepoint,
  */
 static inline void tracepoint_synchronize_unregister(void)
 {
-       synchronize_sched();
+//ust//        synchronize_sched();
 }
 
 struct tracepoint_lib {
@@ -194,12 +198,16 @@ struct tracepoint_lib {
        struct list_head list;
 };
 
-#define TRACEPOINT_LIB                                                                 \
-extern struct tracepoint __start___tracepoints[] __attribute__((visibility("hidden")));                \
-extern struct tracepoint __stop___tracepoints[] __attribute__((visibility("hidden")));         \
-                                                                                       \
-static void __attribute__((constructor)) __tracepoints__init(void)                             \
-{                                                                                      \
-       tracepoint_register_lib(__start___tracepoints, (((long)__stop___tracepoints)-((long)__start___tracepoints))/sizeof(struct tracepoint));\
-}
+extern int tracepoint_register_lib(struct tracepoint *tracepoints_start,
+                                  int tracepoints_count);
+
+#define TRACEPOINT_LIB                                                 \
+       extern struct tracepoint __start___tracepoints[] __attribute__((visibility("hidden"))); \
+       extern struct tracepoint __stop___tracepoints[] __attribute__((visibility("hidden"))); \
+       static void __attribute__((constructor)) __tracepoints__init(void) \
+       {                                                               \
+               tracepoint_register_lib(__start___tracepoints,          \
+                                       (((long)__stop___tracepoints)-((long)__start___tracepoints))/sizeof(struct tracepoint)); \
+       }
+
 #endif
This page took 0.031741 seconds and 4 git commands to generate.