 /* * Hack to avoid 2.6.13 partial node dynamic sched domain bug. * Require the 'cpu_exclusive' cpuset to include all (or none) * of the CPUs on each node, or return w/o changing sched domains. * Remove this hack when dynamic sched domains fixed. */ { int i, j;  for_each_cpu_mask(i, cur->cpus_allowed) { cpumask_t mask = node_to_cpumask(cpu_to_node(i));  for_each_cpu_mask(j, mask) { if (!cpu_isset(j, cur->cpus_allowed)) return; } } } 
static void update_cpu_domains(struct cpuset *cur){	struct cpuset *c, *par = cur->parent;	cpumask_t pspan, cspan;	if (par == NULL || cpus_empty(cur->cpus_allowed))		return;	/*	 * Hack to avoid 2.6.13 partial node dynamic sched domain bug.	 * Require the 'cpu_exclusive' cpuset to include all (or none)	 * of the CPUs on each node, or return w/o changing sched domains.	 * Remove this hack when dynamic sched domains fixed.	 */	{		int i, j;		for_each_cpu_mask(i, cur->cpus_allowed) {			cpumask_t mask = node_to_cpumask(cpu_to_node(i));			for_each_cpu_mask(j, mask) {				if (!cpu_isset(j, cur->cpus_allowed))					return;			}		}	}	/*	 * Get all cpus from parent's cpus_allowed not part of exclusive	 * children	 */	pspan = par->cpus_allowed;	list_for_each_entry(c, &par->children, sibling) {		if (is_cpu_exclusive(c))			cpus_andnot(pspan, pspan, c->cpus_allowed);	}	if (is_removed(cur) || !is_cpu_exclusive(cur)) {		cpus_or(pspan, pspan, cur->cpus_allowed);		if (cpus_equal(pspan, cur->cpus_allowed))			return;		cspan = CPU_MASK_NONE;	} else {		if (cpus_empty(pspan))			return;		cspan = cur->cpus_allowed;		/*		 * Get all cpus from current cpuset's cpus_allowed not part		 * of exclusive children		 */		list_for_each_entry(c, &cur->children, sibling) {			if (is_cpu_exclusive(c))				cpus_andnot(cspan, cspan, c->cpus_allowed);		}	}	lock_cpu_hotplug();	partition_sched_domains(&pspan, &cspan);	unlock_cpu_hotplug();}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ca2f3daf779f5e89d14e9783fcfd7920842df9e9/cpuset.c/clean/kernel/cpuset.c