Re: getting processor numbers

Ingo Molnar
2007-04-04T10:02:12Z

* Oleg Nesterov <oleg@tv-sign.ru> wrote:

> On 04/04, Ingo Molnar wrote:
> >
> > * Oleg Nesterov <oleg@tv-sign.ru> wrote:
> >
> > > But we don't need tasklist_lock at all, we can use
> > > rcu_read_lock/unlock. Q: don't we need task_rq_lock() to read
> > > ->cpus_allowed "atomically" ?
> >
> > right now ->cpus_allowed is protected by tasklist_lock. We cannot do
> > RCU here because ->cpus_allowed modifications are not RCUified.
>
> Is it so? that was my question. Afaics, set_cpus_allowed() does
> p->cpus_allowed = new_mask under rq->lock, so I don't understand how
> tasklist_lock can help.

you are right, we could (and should) make this depend on rq_lock only -
i.e. just take away the tasklist_lock like your patch does. It's not
like the user could expect to observe any ordering between PID lookup
and affinity-mask changes. And my RCU comment is bogus: it's not like we
allocate ->cpus_allowed :-/

Ingo