Listing 5. Finding a CPU to Which to Push a Task int cpupri_find(struct cpupri *cp, struct task_struct *p, cpumask_t *lowest_mask) { ... for_each_cpupri_active(cp->pri_active, idx) { struct cpupri_vec *vec = &cp->pri_to_cpu[idx]; cpumask_t mask; if (idx >= task_pri) break; cpus_and(mask, p->cpus_allowed, vec->mask); if (cpus_empty(mask)) continue; *lowest_mask = mask; return 1; } return 0; }