Messages in this thread |  | | Date | Sat, 2 Jul 2022 14:47:54 -0700 | From | Yury Norov <> | Subject | Re: [PATCH v4 4/5] cpumask: Add UP optimised for_each_*_cpu versions |
| |
On Sat, Jul 02, 2022 at 06:08:27PM +0200, Sander Vanheule wrote: > On uniprocessor builds, the following loops will always run over a mask > that contains one enabled CPU (cpu0): > - for_each_possible_cpu > - for_each_online_cpu > - for_each_present_cpu > > Provide uniprocessor-specific macros for these loops, that always run > exactly once. > > Signed-off-by: Sander Vanheule <sander@svanheule.net>
Acked-by: Yury Norov <yury.norov@gmail.com>
> --- > include/linux/cpumask.h | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h > index 7fbef41b3093..6c5b4ee000f2 100644 > --- a/include/linux/cpumask.h > +++ b/include/linux/cpumask.h > @@ -750,9 +750,16 @@ extern const DECLARE_BITMAP(cpu_all_bits, NR_CPUS); > /* First bits of cpu_bit_bitmap are in fact unset. */ > #define cpu_none_mask to_cpumask(cpu_bit_bitmap[0]) > > +#if NR_CPUS == 1 > +/* Uniprocessor: the possible/online/present masks are always "1" */ > +#define for_each_possible_cpu(cpu) for ((cpu) = 0; (cpu) < 1; (cpu)++) > +#define for_each_online_cpu(cpu) for ((cpu) = 0; (cpu) < 1; (cpu)++) > +#define for_each_present_cpu(cpu) for ((cpu) = 0; (cpu) < 1; (cpu)++) > +#else > #define for_each_possible_cpu(cpu) for_each_cpu((cpu), cpu_possible_mask) > #define for_each_online_cpu(cpu) for_each_cpu((cpu), cpu_online_mask) > #define for_each_present_cpu(cpu) for_each_cpu((cpu), cpu_present_mask) > +#endif > > /* Wrappers for arch boot code to manipulate normally-constant masks */ > void init_cpu_present(const struct cpumask *src); > -- > 2.36.1
|  |