Commit 6d5d3a0c authored by Yury Norov's avatar Yury Norov
Browse files

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: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
parent 82bf9bdf
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -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();