diff options
Diffstat (limited to 'sys/sys/bitset.h')
-rw-r--r-- | sys/sys/bitset.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/sys/bitset.h b/sys/sys/bitset.h index 8bc9e3d..566d944 100644 --- a/sys/sys/bitset.h +++ b/sys/sys/bitset.h @@ -213,6 +213,21 @@ __bit; \ }) +#define BIT_FLS(_s, p) __extension__ ({ \ + __size_t __i; \ + int __bit; \ + \ + __bit = 0; \ + for (__i = __bitset_words((_s)); __i > 0; __i--) { \ + if ((p)->__bits[__i - 1] != 0) { \ + __bit = flsl((p)->__bits[__i - 1]); \ + __bit += (__i - 1) * _BITSET_BITS; \ + break; \ + } \ + } \ + __bit; \ +}) + #define BIT_COUNT(_s, p) __extension__ ({ \ __size_t __i; \ int __count; \ |