Messages in this thread | | | From | Rusty Russell <> | Subject | Re: Optimisation for smp_num_cpus loop in hotplug | Date | Sat, 22 Jun 2002 05:17:19 +1000 |
| |
In message <200206211531.g5LFViZ07396@localhost.localdomain> you write: > rusty@rustcorp.com.au said: > > Yeah, it's simple, and none of the current ones are really critical. > > But I think we're better off with: > > for (i = first_cpu(); i < NR_CPUS; i = next_cpu(i)) { > > > Which is simple enough not to need an iterator macro, and also has the > > bonus of giving irq-balancing et al. an efficient, portable way of > > looking for the "next" cpu. > > So you're thinking that next_cpu(i) is something like > > __ffs((~(unsigned)((1<<i)-1) & cpu_online_map) > > plus an extra exception piece to take next_cpu(i) above NR_CPUS if we have no
> remaining CPUs (because __ffs would be undefined)? It's the exception piece > that I don't see how to do really efficiently.
find_next_bit already does this, but the generic one would look something like:
unsigned long mask = ~(unsigned long)((1<<(cpu+1))-1); if (mask & cpu_online_map) return _ffs(mask & cpu_online_map); return NR_CPUS;
Cheers! Rusty. -- Anyone who quotes me in their sig is an idiot. -- Rusty Russell. - 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/
| |