diff options
author | Yury Norov <yury.norov@gmail.com> | 2023-09-25 04:38:11 +0200 |
---|---|---|
committer | Yury Norov <yury.norov@gmail.com> | 2023-10-15 05:25:22 +0200 |
commit | 6d5d3a0c33e0b3cab91e2d229f94b51d80d91fe3 (patch) | |
tree | 7626b365592be65b06c0522aaaa97aebebbc371a /lib | |
parent | bitmap: align __reg_op() wrappers with modern coding style (diff) | |
download | linux-6d5d3a0c33e0b3cab91e2d229f94b51d80d91fe3.tar.xz linux-6d5d3a0c33e0b3cab91e2d229f94b51d80d91fe3.zip |
bitmap: add test for bitmap_*_region() functions
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>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/test_bitmap.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/test_bitmap.c b/lib/test_bitmap.c index f2ea9f30c7c5..65f22c2578b0 100644 --- a/lib/test_bitmap.c +++ b/lib/test_bitmap.c @@ -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(); |