Messages in this thread | | | Date | Tue, 23 Mar 2010 16:09:38 +0100 | From | Oleg Nesterov <> | Subject | Re: [PATCH -mm 1/2] proc_sched_show_task: use get_nr_threads() |
| |
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@redhat.com> > --- > > 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) \
| |