blob: 8460cacfa3fd99855c2cba0148a6959dd005a2e7 [file]
========
stdbit.h
========
The optional C23 ``stdbit.h`` header provides bit manipulation macros
(endianness, leading/trailing zeros and ones, count, single-bit test,
bit width, bit floor, bit ceil). NuttX provides this header only when
explicitly enabled via Kconfig.
Configuration
=============
- **CONFIG_ARCH_HAVE_STDBIT_H** (bool, selected by arch)
Architecture indicates it provides ``arch/<arch>/include/stdbit.h``.
- **CONFIG_ARCH_STDBIT_H** (bool "stdbit.h", depends on ARCH_HAVE_STDBIT_H)
Use the redirecting header. The build copies
``include/nuttx/lib/stdbit.h`` to ``include/stdbit.h``; that header
then includes ``<arch/stdbit.h>`` when this option is set.
- **CONFIG_LIBC_STDBIT_GENERIC** (bool "stdbit.h (generic C23)")
Use the generic C23 implementation. The same redirecting file
``include/nuttx/lib/stdbit.h`` is copied to ``include/stdbit.h``,
and the generic implementation is used (no arch header). Requires
compiler builtins (e.g. ``__builtin_clz``, ``__builtin_ctz``,
``__builtin_popcount``); see ``CONFIG_HAVE_BUILTIN_*`` in
``nuttx/compiler.h``.
Either **CONFIG_ARCH_STDBIT_H** or **CONFIG_LIBC_STDBIT_GENERIC** may be
enabled so that ``#include <stdbit.h>`` is available.