From: Peter Zijlstra <peterz@infradead.org>
To: mingo@kernel.org, markus@trippelsdorf.de, rostedt@goodmis.org
Cc: tj@kernel.org, mcgrof@kernel.org, ebiederm@xmission.com,
paulmck@linux.vnet.ibm.com, torvalds@linux-foundation.org,
tglx@linutronix.de, peterz@infradead.org,
linux-kernel@vger.kernel.org
Subject: [PATCH 8/8] sched: Add explicit TASK_PARKED printing
Date: Mon, 25 Sep 2017 14:07:55 +0200 [thread overview]
Message-ID: <20170925121117.338783334@infradead.org> (raw)
In-Reply-To: 20170925120747.125098571@infradead.org
[-- Attachment #1: peterz-sched-state-8.patch --]
[-- Type: text/plain, Size: 2814 bytes --]
Currently TASK_PARKED is masqueraded as TASK_INTERRUPTIBLE, give it
its own print state because it will not in fact get woken by regular
wakeups and is a long-term state.
This requires moving TASK_PARKED into the TASK_REPORT mask, and since
that latter needs to be a contiguous bitmask, we need to shuffle the
bits around a bit.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
fs/proc/array.c | 3 ++-
include/linux/sched.h | 16 +++++++---------
include/trace/events/sched.h | 2 +-
3 files changed, 10 insertions(+), 11 deletions(-)
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -127,9 +127,10 @@ static const char * const task_state_arr
"t (tracing stop)", /* 0x08 */
"X (dead)", /* 0x10 */
"Z (zombie)", /* 0x20 */
+ "P (parked)", /* 0x40 */
/* states beyond TASK_REPORT: */
- "I (idle)", /* 0x40 */
+ "I (idle)", /* 0x80 */
};
static inline const char *get_task_state(struct task_struct *tsk)
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -75,10 +75,10 @@ struct task_group;
#define EXIT_ZOMBIE 0x0020
#define EXIT_TRACE (EXIT_ZOMBIE | EXIT_DEAD)
/* Used in tsk->state again: */
-#define TASK_DEAD 0x0040
-#define TASK_WAKEKILL 0x0080
-#define TASK_WAKING 0x0100
-#define TASK_PARKED 0x0200
+#define TASK_PARKED 0x0040
+#define TASK_DEAD 0x0080
+#define TASK_WAKEKILL 0x0100
+#define TASK_WAKING 0x0200
#define TASK_NOLOAD 0x0400
#define TASK_NEW 0x0800
#define TASK_STATE_MAX 0x1000
@@ -97,7 +97,8 @@ struct task_group;
/* get_task_state(): */
#define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE | \
TASK_UNINTERRUPTIBLE | __TASK_STOPPED | \
- __TASK_TRACED | EXIT_DEAD | EXIT_ZOMBIE)
+ __TASK_TRACED | EXIT_DEAD | EXIT_ZOMBIE | \
+ TASK_PARKED)
#define task_is_traced(task) ((task->state & __TASK_TRACED) != 0)
@@ -1252,9 +1253,6 @@ static inline unsigned int __get_task_st
BUILD_BUG_ON_NOT_POWER_OF_2(TASK_REPORT_MAX);
- if (tsk_state == TASK_PARKED)
- state = TASK_INTERRUPTIBLE;
-
if (tsk_state == TASK_IDLE)
state = TASK_REPORT_IDLE;
@@ -1263,7 +1261,7 @@ static inline unsigned int __get_task_st
static inline char __task_state_to_char(unsigned int state)
{
- static const char state_char[] = "RSDTtXZI";
+ static const char state_char[] = "RSDTtXZPI";
BUILD_BUG_ON(1 + ilog2(TASK_REPORT_MAX) != sizeof(state_char) - 1);
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -160,7 +160,7 @@ TRACE_EVENT(sched_switch,
__print_flags(__entry->prev_state & (TASK_REPORT_MAX - 1), "|",
{ 0x01, "S" }, { 0x02, "D" }, { 0x04, "T" },
{ 0x08, "t" }, { 0x10, "X" }, { 0x20, "Z" },
- { 0x40, "I" }) :
+ { 0x40, "P" }, { 0x80, "I" }) :
"R",
__entry->prev_state & TASK_STATE_MAX ? "+" : "",
next prev parent reply other threads:[~2017-09-25 12:12 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-25 12:07 [PATCH 0/8] sched: Rework task state printing Peter Zijlstra
2017-09-25 12:07 ` [PATCH 1/8] sched: Consistent task-state printing Peter Zijlstra
2017-09-25 20:01 ` Steven Rostedt
2017-09-29 11:50 ` Peter Zijlstra
2017-09-29 13:00 ` Steven Rostedt
2017-10-10 10:55 ` [tip:sched/core] sched/debug: Rename task-state printing helpers tip-bot for Peter Zijlstra
2017-09-25 12:07 ` [PATCH 2/8] sched: Convert TASK_state to hex Peter Zijlstra
2017-09-25 12:07 ` [PATCH 3/8] sched/debug: Remove unused variable Peter Zijlstra
2017-09-25 12:07 ` [PATCH 4/8] sched/trace: Fix trace_sched_switch task-state printing Peter Zijlstra
2017-09-25 12:07 ` [PATCH 5/8] sched/trace: Use common task-state helpers Peter Zijlstra
2017-09-25 12:07 ` [PATCH 6/8] sched: Add explicit TASK_IDLE printing Peter Zijlstra
2017-09-25 12:07 ` [PATCH 7/8] sched: Ignore TASK_IDLE for SysRq-W Peter Zijlstra
2017-09-25 12:07 ` Peter Zijlstra [this message]
2017-09-25 13:41 ` [PATCH 0/8] sched: Rework task state printing Thomas Gleixner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170925121117.338783334@infradead.org \
--to=peterz@infradead.org \
--cc=ebiederm@xmission.com \
--cc=linux-kernel@vger.kernel.org \
--cc=markus@trippelsdorf.de \
--cc=mcgrof@kernel.org \
--cc=mingo@kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.