mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	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
					
				
					 1 changed files with 37 additions and 0 deletions
				
			
		| 
						 | 
					@ -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 = {
 | 
					static const unsigned long parse_test[] __initconst = {
 | 
				
			||||||
	BITMAP_FROM_U64(0),
 | 
						BITMAP_FROM_U64(0),
 | 
				
			||||||
	BITMAP_FROM_U64(1),
 | 
						BITMAP_FROM_U64(1),
 | 
				
			||||||
| 
						 | 
					@ -818,6 +854,7 @@ static void __init selftest(void)
 | 
				
			||||||
	test_bitmap_arr32();
 | 
						test_bitmap_arr32();
 | 
				
			||||||
	test_bitmap_parse();
 | 
						test_bitmap_parse();
 | 
				
			||||||
	test_bitmap_parselist();
 | 
						test_bitmap_parselist();
 | 
				
			||||||
 | 
						test_bitmap_printlist();
 | 
				
			||||||
	test_mem_optimisations();
 | 
						test_mem_optimisations();
 | 
				
			||||||
	test_for_each_set_clump8();
 | 
						test_for_each_set_clump8();
 | 
				
			||||||
	test_bitmap_cut();
 | 
						test_bitmap_cut();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue