mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	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: Peter 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: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
		
							parent
							
								
									65d5dc47fe
								
							
						
					
					
						commit
						efb40f588b
					
				
					 2 changed files with 12 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -99,7 +99,7 @@ struct task_group;
 | 
			
		|||
/* get_task_state(): */
 | 
			
		||||
#define TASK_REPORT			(TASK_RUNNING | TASK_INTERRUPTIBLE | \
 | 
			
		||||
					 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)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
	 * 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 */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -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",
 | 
			
		||||
		__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), "|",
 | 
			
		||||
				{ 1, "S"} , { 2, "D" }, { 4, "T" }, { 8, "t" },
 | 
			
		||||
				{ 16, "Z" }, { 32, "X" }, { 64, "x" },
 | 
			
		||||
				{ 128, "K" }, { 256, "W" }, { 512, "P" },
 | 
			
		||||
				{ 1024, "N" }) : "R",
 | 
			
		||||
 | 
			
		||||
		(__entry->prev_state & TASK_REPORT) ?
 | 
			
		||||
		  __print_flags(__entry->prev_state & TASK_REPORT, "|",
 | 
			
		||||
				{ 0x01, "S" }, { 0x02, "D" }, { 0x04, "T" },
 | 
			
		||||
				{ 0x08, "t" }, { 0x10, "X" }, { 0x20, "Z" }) :
 | 
			
		||||
		  "R",
 | 
			
		||||
 | 
			
		||||
		__entry->prev_state & TASK_STATE_MAX ? "+" : "",
 | 
			
		||||
		__entry->next_comm, __entry->next_pid, __entry->next_prio)
 | 
			
		||||
);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue