linux/include/asm-generic/bitsperlong.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __ASM_GENERIC_BITS_PER_LONG
   3#define __ASM_GENERIC_BITS_PER_LONG
   4
   5#include <uapi/asm-generic/bitsperlong.h>
   6
   7
   8#ifdef CONFIG_64BIT
   9#define BITS_PER_LONG 64
  10#else
  11#define BITS_PER_LONG 32
  12#endif /* CONFIG_64BIT */
  13
  14/*
  15 * FIXME: The check currently breaks x86-64 build, so it's
  16 * temporarily disabled. Please fix x86-64 and reenable
  17 */
  18#if 0 && BITS_PER_LONG != __BITS_PER_LONG
  19#error Inconsistent word size. Check asm/bitsperlong.h
  20#endif
  21
  22#ifndef BITS_PER_LONG_LONG
  23#define BITS_PER_LONG_LONG 64
  24#endif
  25
  26/*
  27 * small_const_nbits(n) is true precisely when it is known at compile-time
  28 * that BITMAP_SIZE(n) is 1, i.e. 1 <= n <= BITS_PER_LONG. This allows
  29 * various bit/bitmap APIs to provide a fast inline implementation. Bitmaps
  30 * of size 0 are very rare, and a compile-time-known-size 0 is most likely
  31 * a sign of error. They will be handled correctly by the bit/bitmap APIs,
  32 * but using the out-of-line functions, so that the inline implementations
  33 * can unconditionally dereference the pointer(s).
  34 */
  35#define small_const_nbits(nbits) \
  36        (__builtin_constant_p(nbits) && (nbits) <= BITS_PER_LONG && (nbits) > 0)
  37
  38#endif /* __ASM_GENERIC_BITS_PER_LONG */
  39