33 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _ASM_GENERIC_BITOPS_SCHED_H_3#define _ASM_GENERIC_BITOPS_SCHED_H_4 5#include <linux/compiler.h> /* unlikely() */6#include <asm/types.h>7 8/*9 * Every architecture must define this function. It's the fastest10 * way of searching a 100-bit bitmap. It's guaranteed that at least11 * one of the 100 bits is cleared.12 */13static inline int sched_find_first_bit(const unsigned long *b)14{15#if BITS_PER_LONG == 6416 if (b[0])17 return __ffs(b[0]);18 return __ffs(b[1]) + 64;19#elif BITS_PER_LONG == 3220 if (b[0])21 return __ffs(b[0]);22 if (b[1])23 return __ffs(b[1]) + 32;24 if (b[2])25 return __ffs(b[2]) + 64;26 return __ffs(b[3]) + 96;27#else28#error BITS_PER_LONG not defined29#endif30}31 32#endif /* _ASM_GENERIC_BITOPS_SCHED_H_ */33