Author: dougm
Date: Fri May 10 19:55:29 2019
New Revision: 347464
URL: https://svnweb.freebsd.org/changeset/base/347464

Log:
  Replace the expression "-mask & ~mask" with a function call that does
  the same thing, but is commented so that it might be better
  understood.
  
  Approved by: kib (mentor)
  Differential Revision: https://reviews.freebsd.org/D20231

Modified:
  head/sys/kern/subr_blist.c

Modified: head/sys/kern/subr_blist.c
==============================================================================
--- head/sys/kern/subr_blist.c  Fri May 10 19:36:14 2019        (r347463)
+++ head/sys/kern/subr_blist.c  Fri May 10 19:55:29 2019        (r347464)
@@ -643,6 +643,19 @@ blst_next_leaf_alloc(blmeta_t *scan, daddr_t blk, int 
 }
 
 /*
+ * Given a bitmask, flip all the bits from the least-significant 1-bit to the
+ * most significant bit.  If the result is non-zero, then the least-significant
+ * 1-bit of the result is in the same position as the least-signification 0-bit
+ * in mask that is followed by a 1-bit.
+ */
+static inline u_daddr_t
+flip_hibits(u_daddr_t mask)
+{
+
+       return (-mask & ~mask);
+}
+
+/*
  * BLST_LEAF_ALLOC() - allocate at a leaf in the radix tree (a bitmap).
  *
  *     This function is the core of the allocator.  Its execution time is
@@ -659,7 +672,7 @@ blst_leaf_alloc(blmeta_t *scan, daddr_t blk, int count
        count1 = count - 1;
        num_shifts = fls(count1);
        mask = scan->bm_bitmap;
-       while ((-mask & ~mask) != 0 && num_shifts > 0) {
+       while (flip_hibits(mask) != 0 && num_shifts > 0) {
                /*
                 * If bit i is set in mask, then bits in [i, i+range1] are set
                 * in scan->bm_bitmap.  The value of range1 is equal to count1
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to