+/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM rcu
#if !defined(LTTNG_TRACE_RCU_H) || defined(TRACE_HEADER_MULTI_READ)
#define LTTNG_TRACE_RCU_H
-#include "../../../probes/lttng-tracepoint-event.h"
+#include <probes/lttng-tracepoint-event.h>
#include <linux/version.h>
/*
* 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))
/*
TP_FIELDS(
ctf_string(rcuname, rcuname)
- ctf_integer(void *, rhp, rhp)
- ctf_integer(void *, func, rhp->func)
+ ctf_integer_hex(void *, rhp, rhp)
+ ctf_integer_hex(void *, func, rhp->func)
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
ctf_integer(long, qlen_lazy, qlen_lazy)
#endif
TP_FIELDS(
ctf_string(rcuname, rcuname)
- ctf_integer(void *, rhp, rhp)
- ctf_integer(unsigned long, offset, offset)
+ ctf_integer_hex(void *, rhp, rhp)
+ ctf_integer_hex(unsigned long, offset, offset)
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
ctf_integer(long, qlen_lazy, qlen_lazy)
#endif
TP_FIELDS(
ctf_string(rcuname, rcuname)
- ctf_integer(void *, rhp, rhp)
- ctf_integer(void *, func, rhp->func)
+ ctf_integer_hex(void *, rhp, rhp)
+ ctf_integer_hex(void *, func, rhp->func)
)
)
TP_FIELDS(
ctf_string(rcuname, rcuname)
- ctf_integer(void *, rhp, rhp)
+ ctf_integer_hex(void *, rhp, rhp)
ctf_integer(unsigned long, offset, offset)
)
)
TP_FIELDS(
ctf_string(rcutorturename, rcutorturename)
- ctf_integer(struct rcu_head *, rhp, rhp)
+ ctf_integer_hex(struct rcu_head *, rhp, rhp)
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
ctf_integer(unsigned long, secs, secs)
ctf_integer(unsigned long, c_old, c_old)
grplo, grphi, gp_tasks) do { } \
while (0)
#define trace_rcu_fqs(rcuname, gpnum, cpu, qsevent) do { } while (0)
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,16,0))
+#define trace_rcu_dyntick(polarity, oldnesting, newnesting, dyntick) do { } while (0)
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
#define trace_rcu_dyntick(polarity, oldnesting, newnesting) do { } while (0)
#else
#define trace_rcu_dyntick(polarity) do { } while (0)
#endif /* LTTNG_TRACE_RCU_H */
/* This part must be outside protection */
-#include "../../../probes/define_trace.h"
+#include <probes/define_trace.h>