lib/find_bit: add find_next{,_and}_bit_wrap
authorYury Norov <yury.norov@gmail.com>
Mon, 19 Sep 2022 21:05:56 +0000 (14:05 -0700)
committerYury Norov <yury.norov@gmail.com>
Sat, 1 Oct 2022 17:22:57 +0000 (10:22 -0700)
commit6cc18331a987c4a29d66b9c4fd292587fba4d7bd
treeec87f04dbf7cdcb81c4094fa9ad5b9943ecd8de2
parent33e67710beda78aed38a2fe10be6088d4aeb1c53
lib/find_bit: add find_next{,_and}_bit_wrap

The helper is better optimized for the worst case: in case of empty
cpumask, current code traverses 2 * size:

  next = cpumask_next_and(prev, src1p, src2p);
  if (next >= nr_cpu_ids)
   next = cpumask_first_and(src1p, src2p);

At bitmap level we can stop earlier after checking 'size + offset' bits.

Signed-off-by: Yury Norov <yury.norov@gmail.com>
include/linux/find.h
lib/cpumask.c