diff options
author | Ingo Molnar <mingo@elte.hu> | 2007-04-25 23:50:03 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-04-27 13:46:51 -0400 |
commit | 39bc89fd4019b164002adaacef92c4140e37955a (patch) | |
tree | 34ff87b8d8c2984af2015dd8c01177df88815214 | |
parent | 20f09390b2da2432309afe8aaa0bd64ec64c4584 (diff) |
make SysRq-T show all tasks again
show_state() (SysRq-T) developed the buggy habbit of not showing
TASK_RUNNING tasks. This was due to the mistaken belief that state_filter
== -1 would be a pass-through filter - while in reality it did not let
TASK_RUNNING == 0 p->state values through.
Fix this by restoring the original '!state_filter means all tasks'
special-case i had in the original version. Test-built and test-booted on
i686, SysRq-T now works as intended.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | include/linux/sched.h | 4 | ||||
-rw-r--r-- | kernel/sched.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 49fe2997a016..a1707583de49 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -196,13 +196,13 @@ extern void init_idle(struct task_struct *idle, int cpu); | |||
196 | extern cpumask_t nohz_cpu_mask; | 196 | extern cpumask_t nohz_cpu_mask; |
197 | 197 | ||
198 | /* | 198 | /* |
199 | * Only dump TASK_* tasks. (-1 for all tasks) | 199 | * Only dump TASK_* tasks. (0 for all tasks) |
200 | */ | 200 | */ |
201 | extern void show_state_filter(unsigned long state_filter); | 201 | extern void show_state_filter(unsigned long state_filter); |
202 | 202 | ||
203 | static inline void show_state(void) | 203 | static inline void show_state(void) |
204 | { | 204 | { |
205 | show_state_filter(-1); | 205 | show_state_filter(0); |
206 | } | 206 | } |
207 | 207 | ||
208 | extern void show_regs(struct pt_regs *); | 208 | extern void show_regs(struct pt_regs *); |
diff --git a/kernel/sched.c b/kernel/sched.c index b9a683730148..960d7c5fca39 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -4746,7 +4746,7 @@ void show_state_filter(unsigned long state_filter) | |||
4746 | * console might take alot of time: | 4746 | * console might take alot of time: |
4747 | */ | 4747 | */ |
4748 | touch_nmi_watchdog(); | 4748 | touch_nmi_watchdog(); |
4749 | if (p->state & state_filter) | 4749 | if (!state_filter || (p->state & state_filter)) |
4750 | show_task(p); | 4750 | show_task(p); |
4751 | } while_each_thread(g, p); | 4751 | } while_each_thread(g, p); |
4752 | 4752 | ||