diff options
author | Doug Moore <dougm@FreeBSD.org> | 2023-07-06 18:36:12 +0000 |
---|---|---|
committer | Doug Moore <dougm@FreeBSD.org> | 2023-07-06 18:36:12 +0000 |
commit | d4e236c70b0db52cd7232a11ad0a2ed895e65f70 (patch) | |
tree | b269cb688bcc3071396f0fff8ed4ffbd598c78b1 | |
parent | 6419ed7ee7d0580b061b5913b05695ccd47fe81e (diff) | |
download | src-d4e236c70b0db52cd7232a11ad0a2ed895e65f70.tar.gz src-d4e236c70b0db52cd7232a11ad0a2ed895e65f70.zip |
inline_ffs: remove backup binary implementation
There is no longer be any point to maintaining a binary search routine
for ffs; inlines will always do it as well or better.
Reviewed by: mhorne
Differential Revision: https://reviews.freebsd.org/D40703
-rw-r--r-- | sys/kern/subr_blist.c | 35 |
1 files changed, 3 insertions, 32 deletions
diff --git a/sys/kern/subr_blist.c b/sys/kern/subr_blist.c index ba13fb4efd80..aa0ba6a88610 100644 --- a/sys/kern/subr_blist.c +++ b/sys/kern/subr_blist.c @@ -184,42 +184,13 @@ bitrange(int n, int count) ((u_daddr_t)-1 >> (BLIST_RADIX - (n + count)))); } -/* - * Find the first bit set in a u_daddr_t. - */ -static inline int -generic_bitpos(u_daddr_t mask) -{ - int hi, lo, mid; - - lo = 0; - hi = BLIST_RADIX; - while (lo + 1 < hi) { - mid = (lo + hi) >> 1; - if (mask & bitrange(0, mid)) - hi = mid; - else - lo = mid; - } - return (lo); -} - static inline int bitpos(u_daddr_t mask) { - switch (sizeof(mask)) { -#ifdef HAVE_INLINE_FFSLL - case sizeof(long long): - return (ffsll(mask) - 1); -#endif -#ifdef HAVE_INLINE_FFS - case sizeof(int): - return (ffs(mask) - 1); -#endif - default: - return (generic_bitpos(mask)); - } + _Static_assert(sizeof(long long) >= sizeof(mask), + "mask too big for ffsll()"); + return (ffsll(mask) - 1); } /* |