RE: [PATCH] (2/3) Initial load balancing

Zwane Mwaikambo (zwane@holomorphy.com)
Fri, 17 Jan 2003 13:42:19 -0500 (EST)


On Fri, 17 Jan 2003, Pallipadi, Venkatesh wrote:

> > +{
> > + unsigned long old_mask;
> > +
> > + old_mask = p->cpus_allowed;
> > + if (!(old_mask & (1UL << dest_cpu)))
> > + return;
> > + /* force the process onto the specified CPU */
> > + set_cpus_allowed(p, 1UL << dest_cpu);
> > +
> > + /* restore the cpus allowed mask */
> > + set_cpus_allowed(p, old_mask);
> > +}
>
> It may be better to add a _note_ to this function saying that it is not
> supposed to be called by multiple callers at the same time. As of now,
> as it is called at exec time only, I think it is safe. But, if it get used at other
> places, (or called once+preempt) we may have situations where we may loose the cpus_allowed mask
> or miss some sched_migrate_task(). I am looking at, what if some sched_migrate_task()
> or user set_affinity gets initiated in between two set_cpus_allowed in
> this routine.

Shouldn't there be a get_task_struct there?

Zwane

-- 
function.linuxpower.ca

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