>From Pierre-Marc Fournier comment about what if someone
want to disable markers or/and tracepoints at compile time.

I put back the "foony" code in markers.h (previously removed)
and changed the flag name to follow the namespace. However, the
concept changed a bit. Instead of defining the CONFIG_MARKERS,
it checks if the NOMARKERS/NOTRACEPOINTS flag is set. If so,
the markers/tp are disabled. Also, UST_NOTRACING flag will d
isable tracepoints *and* markers.

That way someone could easily compile a program *without* any
UST tracing mechanism. (Still namespace polution though).

Feedback(s) are VERY welcome!

Thanks
David

Signed-off-by: David Goulet <[email protected]>
---
 include/ust/marker.h     |   26 ++++++++++++++++++++++++--
 include/ust/tracepoint.h |   13 ++++++++-----
 2 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/include/ust/marker.h b/include/ust/marker.h
index 6103629..a07ec32 100644
--- a/include/ust/marker.h
+++ b/include/ust/marker.h
@@ -77,6 +77,9 @@ struct marker {
        void *location;         /* Address of marker in code */
 } __attribute__((aligned(8)));
 
+/* Set this flag to compile *without* UST markers */
+#if !defined(UST_NOMARKERS) && !defined(UST_NOTRACING)
+
 #define GET_MARKER(channel, name)      (__mark_##channel##_##name)
 
 #define _DEFINE_MARKER(channel, name, tp_name_str, tp_cb, format, unique, m)   
                \
@@ -194,8 +197,27 @@ struct marker {
                        call_private, &regs, ## args);                          
\
        } while (0)
 
-extern void marker_update_probe_range(struct marker *begin,
-       struct marker *end);
+extern void marker_update_probe_range(struct marker *begin, struct marker 
*end);
+
+#else /* UST_NOMARKERS */
+
+#define DEFINE_MARKER(channel, name, tp_name, tp_cb, format)
+#define __trace_mark(generic, channel, name, call_private, format, args...) \
+               __mark_check_format(format, ## args)
+#define __trace_mark_tp(channel, name, call_private, tp_name, tp_cb, format, 
args...)  \
+    do {                                \
+               void __check_tp_type(void)              \
+               {                           \
+                       register_trace_##tp_name(tp_cb, call_private);      \
+               }                           \
+               __mark_check_format(format, ## args);           \
+       } while (0)
+
+static inline void marker_update_probe_range(struct marker *begin, struct 
marker *end)
+{ }
+
+#define GET_MARKER(channel, name)
+#endif /* UST_NOMARKERS */
 
 /**
  * trace_mark - Marker using code patching
diff --git a/include/ust/tracepoint.h b/include/ust/tracepoint.h
index 1c4a384..fe0e3e7 100644
--- a/include/ust/tracepoint.h
+++ b/include/ust/tracepoint.h
@@ -54,8 +54,7 @@ struct tracepoint {
 #define TP_PROTO(args...)      args
 #define TP_ARGS(args...)       args
 
-#define CONFIG_TRACEPOINTS
-#ifdef CONFIG_TRACEPOINTS
+#if !defined(UST_NOTRACEPOINTS) && !defined(UST_NOTRACING)
 
 /*
  * it_func[0] is never NULL because there is at least one element in the array
@@ -142,16 +141,20 @@ extern void tracepoint_update_probe_range(struct 
tracepoint *begin,
        struct tracepoint *end);
 
 #else /* !CONFIG_TRACEPOINTS */
-#define __DECLARE_TRACE(name, proto, args)                             \
+
+#include <errno.h>
+#define __DECLARE_TRACE(name, proto, args, data_proto, data_args)              
                \
        static inline void trace_##name(proto)                          \
        { }                                                             \
        static inline void _trace_##name(proto)                         \
        { }                                                             \
-       static inline int register_trace_##name(void (*probe)(proto))   \
+       static inline int                       \
+       register_trace_##name(void (*probe)(data_proto), void *data)    \
        {                                                               \
                return -ENOSYS;                                         \
        }                                                               \
-       static inline int unregister_trace_##name(void (*probe)(proto)) \
+       static inline int                               \
+       unregister_trace_##name(void (*probe)(data_proto), void *data)  \
        {                                                               \
                return -ENOSYS;                                         \
        }
-- 
1.7.3


_______________________________________________
ltt-dev mailing list
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev

Reply via email to