lib: bitmap: add performance test for bitmap_print_to_pagebuf
Functional tests for bitmap_print_to_pagebuf() are provided in lib/test_printf.c. This patch adds performance test for a case of fully set bitmap. Signed-off-by: Yury Norov <yury.norov@gmail.com> Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
This commit is contained in:
parent
ec288a2cf7
commit
db7313005e
|
@ -446,6 +446,42 @@ static void __init test_bitmap_parselist(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void __init test_bitmap_printlist(void)
|
||||
{
|
||||
unsigned long *bmap = kmalloc(PAGE_SIZE, GFP_KERNEL);
|
||||
char *buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
|
||||
char expected[256];
|
||||
int ret, slen;
|
||||
ktime_t time;
|
||||
|
||||
if (!buf || !bmap)
|
||||
goto out;
|
||||
|
||||
memset(bmap, -1, PAGE_SIZE);
|
||||
slen = snprintf(expected, 256, "0-%ld", PAGE_SIZE * 8 - 1);
|
||||
if (slen < 0)
|
||||
goto out;
|
||||
|
||||
time = ktime_get();
|
||||
ret = bitmap_print_to_pagebuf(true, buf, bmap, PAGE_SIZE * 8);
|
||||
time = ktime_get() - time;
|
||||
|
||||
if (ret != slen + 1) {
|
||||
pr_err("bitmap_print_to_pagebuf: result is %d, expected %d\n", ret, slen);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (strncmp(buf, expected, slen)) {
|
||||
pr_err("bitmap_print_to_pagebuf: result is %s, expected %s\n", buf, expected);
|
||||
goto out;
|
||||
}
|
||||
|
||||
pr_err("bitmap_print_to_pagebuf: input is '%s', Time: %llu\n", buf, time);
|
||||
out:
|
||||
kfree(buf);
|
||||
kfree(bmap);
|
||||
}
|
||||
|
||||
static const unsigned long parse_test[] __initconst = {
|
||||
BITMAP_FROM_U64(0),
|
||||
BITMAP_FROM_U64(1),
|
||||
|
@ -818,6 +854,7 @@ static void __init selftest(void)
|
|||
test_bitmap_arr32();
|
||||
test_bitmap_parse();
|
||||
test_bitmap_parselist();
|
||||
test_bitmap_printlist();
|
||||
test_mem_optimisations();
|
||||
test_for_each_set_clump8();
|
||||
test_bitmap_cut();
|
||||
|
|
Loading…
Reference in New Issue