forked from Minki/linux
lib/test_bitmap.c: add optimisation tests
Patch series "Bitmap optimisations", v2. These three bitmap patches use more efficient specialisations when the compiler can figure out that it's safe to do so. Thanks to Rasmus's eagle eyes, a nasty bug in v1 was avoided, and I've added a test case which would have caught it. This patch (of 4): This version of the test is actually a no-op; the next patch will enable it. Link: http://lkml.kernel.org/r/20170628153221.11322-2-willy@infradead.org Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com> Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: Matthew Wilcox <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b689d4a72f
commit
3cc78125a0
@ -333,10 +333,42 @@ static void __init test_bitmap_u32_array_conversions(void)
|
||||
}
|
||||
}
|
||||
|
||||
#define __bitmap_set(a, b, c) bitmap_set(a, b, c)
|
||||
#define __bitmap_clear(a, b, c) bitmap_clear(a, b, c)
|
||||
|
||||
static void noinline __init test_mem_optimisations(void)
|
||||
{
|
||||
DECLARE_BITMAP(bmap1, 1024);
|
||||
DECLARE_BITMAP(bmap2, 1024);
|
||||
unsigned int start, nbits;
|
||||
|
||||
for (start = 0; start < 1024; start += 8) {
|
||||
memset(bmap1, 0x5a, sizeof(bmap1));
|
||||
memset(bmap2, 0x5a, sizeof(bmap2));
|
||||
for (nbits = 0; nbits < 1024 - start; nbits += 8) {
|
||||
bitmap_set(bmap1, start, nbits);
|
||||
__bitmap_set(bmap2, start, nbits);
|
||||
if (!bitmap_equal(bmap1, bmap2, 1024))
|
||||
printk("set not equal %d %d\n", start, nbits);
|
||||
if (!__bitmap_equal(bmap1, bmap2, 1024))
|
||||
printk("set not __equal %d %d\n", start, nbits);
|
||||
|
||||
bitmap_clear(bmap1, start, nbits);
|
||||
__bitmap_clear(bmap2, start, nbits);
|
||||
if (!bitmap_equal(bmap1, bmap2, 1024))
|
||||
printk("clear not equal %d %d\n", start, nbits);
|
||||
if (!__bitmap_equal(bmap1, bmap2, 1024))
|
||||
printk("clear not __equal %d %d\n", start,
|
||||
nbits);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int __init test_bitmap_init(void)
|
||||
{
|
||||
test_zero_fill_copy();
|
||||
test_bitmap_u32_array_conversions();
|
||||
test_mem_optimisations();
|
||||
|
||||
if (failed_tests == 0)
|
||||
pr_info("all %u tests passed\n", total_tests);
|
||||
|
Loading…
Reference in New Issue
Block a user