From 721caea47b6506f7ad9086c3e9801dc9dfe06b6a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Genevi=C3=A8ve=20Bastien?= Date: Wed, 12 Feb 2020 16:58:25 -0500 Subject: [PATCH] sched: Make the sched_switch task state an enum MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This gives meaning to the task state value. Only the bit masks are enumerated, as defined compositions are not exhaustive listing of all possible values and there would be a lot of unknown. Interpretation of combination of bit flags is left to the consumer of the event. Change-Id: I83c5fbee9cba2701c7238c0ac6abd4c8a351b193 Signed-off-by: Geneviève Bastien Signed-off-by: Mathieu Desnoyers --- instrumentation/events/lttng-module/sched.h | 38 +++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/instrumentation/events/lttng-module/sched.h b/instrumentation/events/lttng-module/sched.h index 0f34ff15..c5059617 100644 --- a/instrumentation/events/lttng-module/sched.h +++ b/instrumentation/events/lttng-module/sched.h @@ -165,6 +165,40 @@ static inline long __trace_sched_switch_state(struct task_struct *p) #endif /* _TRACE_SCHED_DEF_ */ +/* + * Enumeration of the task state bitmask. + * Only bit flags are enumerated here, not composition of states. + */ +LTTNG_TRACEPOINT_ENUM(task_state, + TP_ENUM_VALUES( + ctf_enum_value("TASK_RUNNING", TASK_RUNNING) + ctf_enum_value("TASK_INTERRUPTIBLE", TASK_INTERRUPTIBLE) + ctf_enum_value("TASK_UNINTERRUPTIBLE", TASK_UNINTERRUPTIBLE) + ctf_enum_value("TASK_STOPPED", __TASK_STOPPED) + ctf_enum_value("TASK_TRACED", __TASK_TRACED) + ctf_enum_value("EXIT_DEAD", EXIT_DEAD) + ctf_enum_value("EXIT_ZOMBIE", EXIT_ZOMBIE) + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) + ctf_enum_value("TASK_PARKED", TASK_PARKED) +#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) */ + + ctf_enum_value("TASK_DEAD", TASK_DEAD) + ctf_enum_value("TASK_WAKEKILL", TASK_WAKEKILL) + ctf_enum_value("TASK_WAKING", TASK_WAKING) + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) + ctf_enum_value("TASK_NOLOAD", TASK_NOLOAD) +#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) */ + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)) + ctf_enum_value("TASK_NEW", TASK_NEW) +#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)) */ + + ctf_enum_value("TASK_STATE_MAX", TASK_STATE_MAX) + ) +) + /* * Tracepoint for calling kthread_stop, performed to end a kthread: */ @@ -305,9 +339,9 @@ LTTNG_TRACEPOINT_EVENT(sched_switch, ctf_integer(pid_t, prev_tid, prev->pid) ctf_integer(int, prev_prio, prev->prio - MAX_RT_PRIO) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,0)) - ctf_integer(long, prev_state, __trace_sched_switch_state(preempt, prev)) + ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(preempt, prev)) #else - ctf_integer(long, prev_state, __trace_sched_switch_state(prev)) + ctf_enum(task_state, long, prev_state, __trace_sched_switch_state(prev)) #endif ctf_array_text(char, next_comm, next->comm, TASK_COMM_LEN) ctf_integer(pid_t, next_tid, next->pid) -- 2.34.1