diff options
| author | Peter Zijlstra <[email protected]> | 2017-09-22 18:30:40 +0200 | 
|---|---|---|
| committer | Ingo Molnar <[email protected]> | 2017-09-29 11:02:56 +0200 | 
| commit | 06eb61844d841d0032a9950ce7f8e783ee49c0d0 (patch) | |
| tree | 2c1db5ade5acc687e67f37d69e711bf0470df532 /fs/proc/array.c | |
| parent | 5f6ad26ea353fdf3dad2328052cbee49e0b9c5b4 (diff) | |
sched/debug: Add explicit TASK_IDLE printing
Markus reported that kthreads that idle using TASK_IDLE instead of
TASK_INTERRUPTIBLE are reported in as TASK_UNINTERRUPTIBLE and things
like htop mark those red.
This is undesirable, so add an explicit state for TASK_IDLE.
Reported-by: Markus Trippelsdorf <[email protected]>
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'fs/proc/array.c')
| -rw-r--r-- | fs/proc/array.c | 21 | 
1 files changed, 13 insertions, 8 deletions
| diff --git a/fs/proc/array.c b/fs/proc/array.c index 01196d3ad452..a120a4549d48 100644 --- a/fs/proc/array.c +++ b/fs/proc/array.c @@ -119,18 +119,23 @@ static inline void task_name(struct seq_file *m, struct task_struct *p)   * simple bit tests.   */  static const char * const task_state_array[] = { -	"R (running)",		/*   0 */ -	"S (sleeping)",		/*   1 */ -	"D (disk sleep)",	/*   2 */ -	"T (stopped)",		/*   4 */ -	"t (tracing stop)",	/*   8 */ -	"X (dead)",		/*  16 */ -	"Z (zombie)",		/*  32 */ + +	/* states in TASK_REPORT: */ +	"R (running)",		/* 0x00 */ +	"S (sleeping)",		/* 0x01 */ +	"D (disk sleep)",	/* 0x02 */ +	"T (stopped)",		/* 0x04 */ +	"t (tracing stop)",	/* 0x08 */ +	"X (dead)",		/* 0x10 */ +	"Z (zombie)",		/* 0x20 */ + +	/* states beyond TASK_REPORT: */ +	"I (idle)",		/* 0x40 */  };  static inline const char *get_task_state(struct task_struct *tsk)  { -	BUILD_BUG_ON(1 + ilog2(TASK_REPORT) != ARRAY_SIZE(task_state_array) - 1); +	BUILD_BUG_ON(1 + ilog2(TASK_REPORT_MAX) != ARRAY_SIZE(task_state_array));  	return task_state_array[__get_task_state(tsk)];  } |