bitmap: add test for bitmap_*_region() functions
authorYury Norov <yury.norov@gmail.com>
Mon, 25 Sep 2023 02:38:11 +0000 (19:38 -0700)
committerYury Norov <yury.norov@gmail.com>
Sun, 15 Oct 2023 03:25:22 +0000 (20:25 -0700)
Test basic functionality of bitmap_{allocate,release,find_free}_region()
functions.

CC: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Yury Norov <yury.norov@gmail.com>
lib/test_bitmap.c

index f2ea9f30c7c5d7764a52fc1f24c37393fb3bbb2a..65f22c2578b066a4222d72c73edaf5291b0ac2f6 100644 (file)
@@ -330,6 +330,29 @@ static void __init test_copy(void)
        expect_eq_pbl("0-108,128-1023", bmap2, 1024);
 }
 
+static void __init test_bitmap_region(void)
+{
+       int pos, order;
+
+       DECLARE_BITMAP(bmap, 1000);
+
+       bitmap_zero(bmap, 1000);
+
+       for (order = 0; order < 10; order++) {
+               pos = bitmap_find_free_region(bmap, 1000, order);
+               if (order == 0)
+                       expect_eq_uint(pos, 0);
+               else
+                       expect_eq_uint(pos, order < 9 ? BIT(order) : -ENOMEM);
+       }
+
+       bitmap_release_region(bmap, 0, 0);
+       for (order = 1; order < 9; order++)
+               bitmap_release_region(bmap, BIT(order), order);
+
+       expect_eq_uint(bitmap_weight(bmap, 1000), 0);
+}
+
 #define EXP2_IN_BITS   (sizeof(exp2) * 8)
 
 static void __init test_replace(void)
@@ -1227,6 +1250,7 @@ static void __init selftest(void)
        test_zero_clear();
        test_fill_set();
        test_copy();
+       test_bitmap_region();
        test_replace();
        test_bitmap_arr32();
        test_bitmap_arr64();