| BITS(3) | Library Functions Manual | BITS(3) | 
__BIT, __BITS,
  __SHIFTIN, __SHIFTOUT,
  __SHIFTOUT_MASK —
#include <sys/param.h>
#include <sys/cdefs.h>
uintmax_t
  
  __BIT(n);
uintmax_t
  
  __BITS(m,
    n);
__SHIFTIN(v,
    mask);
__SHIFTOUT(v,
    mask);
__SHIFTOUT_MASK(mask);
Use __BIT() and
    __BITS() to define bitmasks:
__BIT(n)__BITS(m,
    n)__SHIFTIN(),
    __SHIFTOUT(), and
    __SHIFTOUT_MASK() help read and write bitfields from
    words:
__SHIFTIN(v,
    mask)__SHIFTOUT(v,
    mask)__SHIFTOUT_MASK(mask)__SHIFTOUT_MASK(m) =
      __SHIFTOUT(m,
      m).bits macros:
uint32_t bits, mask, val; bits = __BITS(2, 3); /* 00001100 */ mask = __BIT(2) | __BIT(3); /* 00001100 */ val = __SHIFTIN(0x03, mask); /* 00001100 */ val = __SHIFTOUT(0xf, mask); /* 00000011 */
bits macros first appeared in
  atw(4), with different names and
  implementation. In their current form these macros appeared in
  NetBSD 4.0.
bits macros were written by David
  Young
  <dyoung@NetBSD.org>.
SHIFTIN() and
  SHIFTOUT().
| November 6, 2016 | NetBSD 9.3 |