| BITX64(9F) | Kernel Functions for Drivers | BITX64(9F) | 
bitx8, bitx16,
    bitx32, bitx64 —
    extract bits from an integer
#include
    <sys/bitext.h>
uint8_t
  
  bitx8(uint8_t value,
    uint_t high, uint_t low);
uint16_t
  
  bitx16(uint16_t value,
    uint_t high, uint_t low);
uint32_t
  
  bitx32(uint32_t value,
    uint_t high, uint_t low);
uint64_t
  
  bitx64(uint64_t value,
    uint_t high, uint_t low);
Volatile - This interface is still evolving in illumos. API and ABI stability is not guaranteed.
The
    bitx8(),
    bitx16(),
    bitx32(),
    and
    bitx64()
    functions are used to extract a range of bits from on an 8, 16, 32, and
    64-bit value respectively. These functions are all implementations of a
    classical application of a bitwise-AND of a mask and a logical right shift.
    More specifically, the arguments high and
    low describe an inclusive range of bits
    ([low, high]) to extract from
    value. The extracted bits are all shifted right such
    that the resulting value starts at bit 0 (that is, shifted over by
    low).
Each of the variants here operates on a specifically sized integer. high and low must fit within the bit range that the integer implies. For example, the valid range for bitx32 is from 0 to 31. high must not be less than low.
These functions may be called in all contexts, user, kernel, and interrupt.
Upon successful completion, the bitx8(),
    bitx16(), bitx32(), and
    bitx64() functions all return the indicated portion
    of val.
| April 12, 2022 | OmniOS |