1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _ASM_GENERIC_BITOPS_SCHED_H_ 3*4882a593Smuzhiyun #define _ASM_GENERIC_BITOPS_SCHED_H_ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/compiler.h> /* unlikely() */ 6*4882a593Smuzhiyun #include <asm/types.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* 9*4882a593Smuzhiyun * Every architecture must define this function. It's the fastest 10*4882a593Smuzhiyun * way of searching a 100-bit bitmap. It's guaranteed that at least 11*4882a593Smuzhiyun * one of the 100 bits is cleared. 12*4882a593Smuzhiyun */ sched_find_first_bit(const unsigned long * b)13*4882a593Smuzhiyunstatic inline int sched_find_first_bit(const unsigned long *b) 14*4882a593Smuzhiyun { 15*4882a593Smuzhiyun #if BITS_PER_LONG == 64 16*4882a593Smuzhiyun if (b[0]) 17*4882a593Smuzhiyun return __ffs(b[0]); 18*4882a593Smuzhiyun return __ffs(b[1]) + 64; 19*4882a593Smuzhiyun #elif BITS_PER_LONG == 32 20*4882a593Smuzhiyun if (b[0]) 21*4882a593Smuzhiyun return __ffs(b[0]); 22*4882a593Smuzhiyun if (b[1]) 23*4882a593Smuzhiyun return __ffs(b[1]) + 32; 24*4882a593Smuzhiyun if (b[2]) 25*4882a593Smuzhiyun return __ffs(b[2]) + 64; 26*4882a593Smuzhiyun return __ffs(b[3]) + 96; 27*4882a593Smuzhiyun #else 28*4882a593Smuzhiyun #error BITS_PER_LONG not defined 29*4882a593Smuzhiyun #endif 30*4882a593Smuzhiyun } 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #endif /* _ASM_GENERIC_BITOPS_SCHED_H_ */ 33