[lttng-dev] [PATCH lttng-modules] Fix: update rcu instrumentation for v4.16

Michael Jeanson mjeanson at efficios.com
Mon Feb 12 12:32:25 EST 2018


See upstream commits :

  commit dec98900eae1e22467182e58688abe5fae98bd5f
  Author: Paul E. McKenney <paulmck at linux.vnet.ibm.com>
  Date:   Wed Oct 4 16:24:29 2017 -0700

    rcu: Add ->dynticks field to rcu_dyntick trace event

  commit 84585aa8b6ad24e5bdfba9db4a320a6aeed192ab
  Author: Paul E. McKenney <paulmck at linux.vnet.ibm.com>
  Date:   Wed Oct 4 15:55:16 2017 -0700

    rcu: Shrink ->dynticks_{nmi_,}nesting from long long to long

    Because the ->dynticks_nesting field now only contains the process-based
    nesting level instead of a value encoding both the process nesting level
    and the irq "nesting" level, we no longer need a long long, even on
    32-bit systems.  This commit therefore changes both the ->dynticks_nesting
    and ->dynticks_nmi_nesting fields to long.

Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
---
 instrumentation/events/lttng-module/rcu.h | 44 ++++++++++++++++++++++++++-----
 1 file changed, 38 insertions(+), 6 deletions(-)

diff --git a/instrumentation/events/lttng-module/rcu.h b/instrumentation/events/lttng-module/rcu.h
index 869de08..0e33c78 100644
--- a/instrumentation/events/lttng-module/rcu.h
+++ b/instrumentation/events/lttng-module/rcu.h
@@ -220,31 +220,63 @@ LTTNG_TRACEPOINT_EVENT(rcu_fqs,
  * events use the upper bits of each number, while interrupt-related
  * events use the lower bits.
  */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,16,0))
 LTTNG_TRACEPOINT_EVENT(rcu_dyntick,
 
+	TP_PROTO(const char *polarity, long oldnesting, long newnesting, atomic_t dynticks),
+
+	TP_ARGS(polarity, oldnesting, newnesting, dynticks),
+
+	TP_FIELDS(
+		ctf_string(polarity, polarity)
+		ctf_integer(long, oldnesting, oldnesting)
+		ctf_integer(long, newnesting, newnesting)
+		ctf_integer(int, dynticks, atomic_read(&dynticks))
+	)
+)
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
+LTTNG_TRACEPOINT_EVENT(rcu_dyntick,
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
 	TP_PROTO(const char *polarity, long long oldnesting, long long newnesting),
 
 	TP_ARGS(polarity, oldnesting, newnesting),
+
+	TP_FIELDS(
+		ctf_string(polarity, polarity)
+		ctf_integer(long long, oldnesting, oldnesting)
+		ctf_integer(long long, newnesting, newnesting)
+	)
+)
+
+
 #elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+LTTNG_TRACEPOINT_EVENT(rcu_dyntick,
+
 	TP_PROTO(char *polarity, long long oldnesting, long long newnesting),
 
 	TP_ARGS(polarity, oldnesting, newnesting),
+
+	TP_FIELDS(
+		ctf_string(polarity, polarity)
+		ctf_integer(long long, oldnesting, oldnesting)
+		ctf_integer(long long, newnesting, newnesting)
+	)
+)
+
 #else
+LTTNG_TRACEPOINT_EVENT(rcu_dyntick,
+
 	TP_PROTO(char *polarity),
 
 	TP_ARGS(polarity),
-#endif
 
 	TP_FIELDS(
 		ctf_string(polarity, polarity)
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-		ctf_integer(long long, oldnesting, oldnesting)
-		ctf_integer(long long, newnesting, newnesting)
-#endif
 	)
 )
+#endif
+
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
 /*
-- 
2.7.4



More information about the lttng-dev mailing list