Fix: update sched instrumentation for 3.19+ kernels
[lttng-modules.git] / instrumentation / events / lttng-module / sched.h
index 6b3b033579bc1146e74f5547ee6cc8fb1d5dc81a..1bea326135a428e0db10c42388a9683d58edd745 100644 (file)
 #ifndef _TRACE_SCHED_DEF_
 #define _TRACE_SCHED_DEF_
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0))
+
+static inline long __trace_sched_switch_state(struct task_struct *p)
+{
+       long state = p->state;
+
+#ifdef CONFIG_PREEMPT
+#ifdef CONFIG_SCHED_DEBUG
+       BUG_ON(p != current);
+#endif /* CONFIG_SCHED_DEBUG */
+       /*
+        * For all intents and purposes a preempted task is a running task.
+        */
+       if (preempt_count() & PREEMPT_ACTIVE)
+               state = TASK_RUNNING | TASK_STATE_MAX;
+#endif /* CONFIG_PREEMPT */
+
+       return state;
+}
+
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0))
 
 static inline long __trace_sched_switch_state(struct task_struct *p)
 {
This page took 0.023863 seconds and 4 git commands to generate.