Re: [PATCH -mm 1/2] proc_sched_show_task: use get_nr_threads()

From: Oleg Nesterov
Date: Tue Mar 23 2010 - 11:11:22 EST


On 03/23, Oleg Nesterov wrote:
>
> Trivial, use get_nr_threads() helper to read signal->count which
> we are going to change.
>
> Like other callers, proc_sched_show_task() doesn't need the exactly
> precise nr_threads.

I don't think this can make any problem, but let me clarify just in
case to avoid the possible confusion...

This change is not equivalent. Before this patch, num_threads == 1
if p has already exited (no matter how many other threads we have).

After this patch, we always report the correct number of live threads
in this thread group, this also means we can report zero in unlikely
case.

> Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx>
> ---
>
> kernel/sched_debug.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> --- 34-rc1/kernel/sched_debug.c~MISC_1_PROC_SCHED_SHOW_TASK 2009-12-18 19:05:38.000000000 +0100
> +++ 34-rc1/kernel/sched_debug.c 2010-03-23 14:52:42.000000000 +0100
> @@ -384,15 +384,9 @@ __initcall(init_sched_debug_procfs);
> void proc_sched_show_task(struct task_struct *p, struct seq_file *m)
> {
> unsigned long nr_switches;
> - unsigned long flags;
> - int num_threads = 1;
> -
> - if (lock_task_sighand(p, &flags)) {
> - num_threads = atomic_read(&p->signal->count);
> - unlock_task_sighand(p, &flags);
> - }
>
> - SEQ_printf(m, "%s (%d, #threads: %d)\n", p->comm, p->pid, num_threads);
> + SEQ_printf(m, "%s (%d, #threads: %d)\n", p->comm, p->pid,
> + get_nr_threads(p));
> SEQ_printf(m,
> "---------------------------------------------------------\n");
> #define __P(F) \

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/