Compiling tracepoint providers in clang will result in 'Wunused-function'
warning, since tracepoint callbacks are defined but never called.

lttng-gen-tp is also updated to not put TRACEPOINT_DEFINE in generated
headers.

Fixes #760

Signed-off-by: Zifei Tong <[email protected]>
---
 doc/examples/gen-tp/sample.c |  1 +
 include/lttng/tracepoint.h   | 13 ++++++++++---
 tools/lttng-gen-tp           |  1 -
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/doc/examples/gen-tp/sample.c b/doc/examples/gen-tp/sample.c
index dab6e7d..ae22f28 100644
--- a/doc/examples/gen-tp/sample.c
+++ b/doc/examples/gen-tp/sample.c
@@ -23,6 +23,7 @@
 
 #include <unistd.h>
 
+#define TRACEPOINT_DEFINE
 #include "sample_tracepoint.h"
 int main(int argc, char **argv)
 {
diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h
index 66e2abd..462a0fc 100644
--- a/include/lttng/tracepoint.h
+++ b/include/lttng/tracepoint.h
@@ -150,8 +150,8 @@ extern "C" {
  * between caller's ip addresses within the probe using the return
  * address.
  */
-#define _DECLARE_TRACEPOINT(_provider, _name, ...)                             
        \
-extern struct tracepoint __tracepoint_##_provider##___##_name;                 
        \
+#if defined(TRACEPOINT_DEFINE)
+#define _DECLARE_TRACEPOINT_CB(_provider, _name, ...)                          
        \
 static inline __attribute__((always_inline)) lttng_ust_notrace                 
        \
 void __tracepoint_cb_##_provider##___##_name(_TP_ARGS_PROTO(__VA_ARGS__));     
        \
 static                                                                         
        \
@@ -174,7 +174,14 @@ void 
__tracepoint_cb_##_provider##___##_name(_TP_ARGS_PROTO(__VA_ARGS__))          \
        } while ((++__tp_probe)->func);                                         
        \
 end:                                                                           
        \
        tp_rcu_read_unlock_bp();                                                
        \
-}                                                                              
        \
+}
+#else
+#define _DECLARE_TRACEPOINT_CB(_provider, _name, ...)
+#endif
+
+#define _DECLARE_TRACEPOINT(_provider, _name, ...)                             
        \
+extern struct tracepoint __tracepoint_##_provider##___##_name;                 
        \
+_DECLARE_TRACEPOINT_CB(_provider, _name, __VA_ARGS__)                          
        \
 static inline lttng_ust_notrace                                                
                \
 void __tracepoint_register_##_provider##___##_name(char *name,                 
        \
                void (*func)(void), void *data);                                
        \
diff --git a/tools/lttng-gen-tp b/tools/lttng-gen-tp
index c49e8a5..ff8c22d 100755
--- a/tools/lttng-gen-tp
+++ b/tools/lttng-gen-tp
@@ -69,7 +69,6 @@ class CFile:
 /*
  * The header containing our TRACEPOINT_EVENTs.
  */
-#define TRACEPOINT_DEFINE
 #include "{headerFilename}"
 """
     def __init__(self, filename, template):
-- 
1.9.0


_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to