Messages in this thread | | | Date | Fri, 17 Jan 2003 13:42:19 -0500 (EST) | From | Zwane Mwaikambo <> | Subject | RE: [PATCH] (2/3) Initial load balancing |
| |
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/
| |