Commit efb40f58 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar

sched/tracing: Fix trace_sched_switch task-state printing

Convert trace_sched_switch to use the common task-state helpers and
fix the "X" and "Z" order, possibly they ended up in the wrong order
because TASK_REPORT has them in the wrong order too.
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 65d5dc47
...@@ -99,7 +99,7 @@ struct task_group; ...@@ -99,7 +99,7 @@ struct task_group;
/* get_task_state(): */ /* get_task_state(): */
#define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE | \ #define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE | \
TASK_UNINTERRUPTIBLE | __TASK_STOPPED | \ TASK_UNINTERRUPTIBLE | __TASK_STOPPED | \
__TASK_TRACED | EXIT_ZOMBIE | EXIT_DEAD) __TASK_TRACED | EXIT_DEAD | EXIT_ZOMBIE)
#define task_is_traced(task) ((task->state & __TASK_TRACED) != 0) #define task_is_traced(task) ((task->state & __TASK_TRACED) != 0)
......
...@@ -114,7 +114,10 @@ static inline long __trace_sched_switch_state(bool preempt, struct task_struct * ...@@ -114,7 +114,10 @@ static inline long __trace_sched_switch_state(bool preempt, struct task_struct *
* Preemption ignores task state, therefore preempted tasks are always * Preemption ignores task state, therefore preempted tasks are always
* RUNNING (we will not have dequeued if state != RUNNING). * RUNNING (we will not have dequeued if state != RUNNING).
*/ */
return preempt ? TASK_RUNNING | TASK_STATE_MAX : p->state; if (preempt)
return TASK_STATE_MAX;
return __get_task_state(p);
} }
#endif /* CREATE_TRACE_POINTS */ #endif /* CREATE_TRACE_POINTS */
...@@ -152,12 +155,13 @@ TRACE_EVENT(sched_switch, ...@@ -152,12 +155,13 @@ TRACE_EVENT(sched_switch,
TP_printk("prev_comm=%s prev_pid=%d prev_prio=%d prev_state=%s%s ==> next_comm=%s next_pid=%d next_prio=%d", TP_printk("prev_comm=%s prev_pid=%d prev_prio=%d prev_state=%s%s ==> next_comm=%s next_pid=%d next_prio=%d",
__entry->prev_comm, __entry->prev_pid, __entry->prev_prio, __entry->prev_comm, __entry->prev_pid, __entry->prev_prio,
__entry->prev_state & (TASK_STATE_MAX-1) ?
__print_flags(__entry->prev_state & (TASK_STATE_MAX-1), "|", (__entry->prev_state & TASK_REPORT) ?
{ 1, "S"} , { 2, "D" }, { 4, "T" }, { 8, "t" }, __print_flags(__entry->prev_state & TASK_REPORT, "|",
{ 16, "Z" }, { 32, "X" }, { 64, "x" }, { 0x01, "S" }, { 0x02, "D" }, { 0x04, "T" },
{ 128, "K" }, { 256, "W" }, { 512, "P" }, { 0x08, "t" }, { 0x10, "X" }, { 0x20, "Z" }) :
{ 1024, "N" }) : "R", "R",
__entry->prev_state & TASK_STATE_MAX ? "+" : "", __entry->prev_state & TASK_STATE_MAX ? "+" : "",
__entry->next_comm, __entry->next_pid, __entry->next_prio) __entry->next_comm, __entry->next_pid, __entry->next_prio)
); );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment