linux/include/asm-generic/bitops/sched.h
<<
>>
Prefs
   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 fastest
  10 * way of searching a 100-bit bitmap.  It's guaranteed that at least
  11 * 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 == 64
  16        if (b[0])
  17                return __ffs(b[0]);
  18        return __ffs(b[1]) + 64;
  19#elif BITS_PER_LONG == 32
  20        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#else
  28#error BITS_PER_LONG not defined
  29#endif
  30}
  31
  32#endif /* _ASM_GENERIC_BITOPS_SCHED_H_ */
  33