DDI_FFS(9F) Kernel Functions for Drivers DDI_FFS(9F)

NAME

ddi_ffs, ddi_ffsll, ddi_fls, ddi_flsllfind first (last) bit set in a long (long) integer

SYNOPSIS

#include <sys/conf.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>
int
ddi_ffs(long mask);
int
ddi_fls(long mask);
int
ddi_ffs(long long mask);
int
ddi_fls(long long mask);

INTERFACE LEVEL

Solaris DDI specific (Solaris DDI).

PARAMETERS

mask
A 32-bit or 64-bit argument value to search through.

DESCRIPTION

The functions ddi_ffs() and ddi_ffsll() take their argument and return the shift count that the first (least significant) bit set in the argument corresponds to. The functions ddi_fls() and ddi_flsll() do the same, only they returns the shift count for the last (most significant) bit set in the argument. ddi_ffs() and ddi_fls() operate on 32-bit values, while ddi_ffsll() and ddi_flsll() operate on 64-bit values.

CONTEXT

These functions can be called from user, interrupt, or kernel context.

RETURN VALUES

0
No bits are set in mask.
N
Bit N is the least significant (ddi_ffs(), ddi_ffsll()) or most significant (ddi_fls(), ddi_flsll()) bit set in mask. Bits are numbered from 1 to 32 or 64, with bit 1 being the least significant bit position and bit 32 or 64 the most significant position, depending on the variant of the functions used.

SEE ALSO

Writing Device Drivers
July 14, 2017 illumos