These macros operate on strings of bits.
The macro
bit_alloc() returns a pointer of type “
bitstr_t *” to sufficient space to store
nbits bits, or
NULL if no space is available.
The macro
bit_decl() allocates sufficient space to store
nbits bits on the stack.
The macro
bitstr_size() returns the number of elements of type
bitstr_t necessary to store
nbits bits. This is useful for copying bit strings.
The macros
bit_clear() and
bit_set() clear or set the zero-based numbered bit
bit, in the bit string
name.
The
bit_nset() and
bit_nclear() macros set or clear the zero-based numbered bits from
start to
stop in the bit string
name.
The
bit_test() macro evaluates to non-zero if the zero-based numbered bit
bit of bit string
name is set, and zero otherwise.
The
bit_ffs() macro stores in the location referenced by
value the zero-based number of the first bit set in the array of
nbits bits referenced by
name. If no bits are set, the location referenced by
value is set to -1.
The macro
bit_ffc() stores in the location referenced by
value the zero-based number of the first bit not set in the array of
nbits bits referenced by
name. If all bits are set, the location referenced by
value is set to -1.
The arguments to these macros are evaluated only once and may safely have side effects.