lib: bitmap: fold nbits into region struct
authorPaul Gortmaker <paul.gortmaker@windriver.com>
Sun, 21 Feb 2021 08:08:23 +0000 (03:08 -0500)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 8 Mar 2021 22:16:58 +0000 (14:16 -0800)
This will reduce parameter passing and enable using nbits as part
of future dynamic region parameter parsing.

Cc: Yury Norov <yury.norov@gmail.com>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Suggested-by: Yury Norov <yury.norov@gmail.com>
Acked-by: Yury Norov <yury.norov@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
lib/bitmap.c

index 75006c4..162e285 100644 (file)
@@ -487,24 +487,24 @@ EXPORT_SYMBOL(bitmap_print_to_pagebuf);
 
 /*
  * Region 9-38:4/10 describes the following bitmap structure:
- * 0      9  12    18                  38
- * .........****......****......****......
- *         ^  ^     ^                   ^
- *      start  off   group_len        end
+ * 0      9  12    18                  38           N
+ * .........****......****......****..................
+ *         ^  ^     ^                   ^           ^
+ *      start  off   group_len        end       nbits
  */
 struct region {
        unsigned int start;
        unsigned int off;
        unsigned int group_len;
        unsigned int end;
+       unsigned int nbits;
 };
 
-static int bitmap_set_region(const struct region *r,
-                               unsigned long *bitmap, int nbits)
+static int bitmap_set_region(const struct region *r, unsigned long *bitmap)
 {
        unsigned int start;
 
-       if (r->end >= nbits)
+       if (r->end >= r->nbits)
                return -ERANGE;
 
        for (start = r->start; start <= r->end; start += r->group_len)
@@ -640,7 +640,8 @@ int bitmap_parselist(const char *buf, unsigned long *maskp, int nmaskbits)
        struct region r;
        long ret;
 
-       bitmap_zero(maskp, nmaskbits);
+       r.nbits = nmaskbits;
+       bitmap_zero(maskp, r.nbits);
 
        while (buf) {
                buf = bitmap_find_region(buf);
@@ -655,7 +656,7 @@ int bitmap_parselist(const char *buf, unsigned long *maskp, int nmaskbits)
                if (ret)
                        return ret;
 
-               ret = bitmap_set_region(&r, maskp, nmaskbits);
+               ret = bitmap_set_region(&r, maskp);
                if (ret)
                        return ret;
        }