diff options
author | 2025-05-15 16:58:32 +0000 | |
---|---|---|
committer | 2025-05-15 20:24:40 +0200 | |
commit | 13f0a02bf4c1c5888c736cedef9ca50de666adb3 (patch) | |
tree | f8f4701eb9d14d289967e4c7a381be18905aff87 /lib | |
parent | cpumask: Relax cpumask_any_but() (diff) | |
download | linux-rng-13f0a02bf4c1c5888c736cedef9ca50de666adb3.tar.xz linux-rng-13f0a02bf4c1c5888c736cedef9ca50de666adb3.zip |
find: Add find_first_andnot_bit()
The function helps to implement cpumask_andnot() APIs.
Signed-off-by: Yury Norov [NVIDIA] <yury.norov@gmail.com>
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: James Morse <james.morse@arm.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
Tested-by: James Morse <james.morse@arm.com>
Tested-by: Tony Luck <tony.luck@intel.com>
Tested-by: Fenghua Yu <fenghuay@nvidia.com>
Link: https://lore.kernel.org/20250515165855.31452-3-james.morse@arm.com
Diffstat (limited to 'lib')
-rw-r--r-- | lib/find_bit.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/find_bit.c b/lib/find_bit.c index 0836bb3d76c5..06b6342aa3ae 100644 --- a/lib/find_bit.c +++ b/lib/find_bit.c @@ -117,6 +117,17 @@ EXPORT_SYMBOL(_find_first_and_bit); #endif /* + * Find the first bit set in 1st memory region and unset in 2nd. + */ +unsigned long _find_first_andnot_bit(const unsigned long *addr1, + const unsigned long *addr2, + unsigned long size) +{ + return FIND_FIRST_BIT(addr1[idx] & ~addr2[idx], /* nop */, size); +} +EXPORT_SYMBOL(_find_first_andnot_bit); + +/* * Find the first set bit in three memory regions. */ unsigned long _find_first_and_and_bit(const unsigned long *addr1, |