1*ff3e33b0SJiri Olsa #include <linux/compiler.h> 2*ff3e33b0SJiri Olsa #include <linux/bitmap.h> 3*ff3e33b0SJiri Olsa #include "tests.h" 4*ff3e33b0SJiri Olsa #include "cpumap.h" 5*ff3e33b0SJiri Olsa #include "debug.h" 6*ff3e33b0SJiri Olsa 7*ff3e33b0SJiri Olsa #define NBITS 100 8*ff3e33b0SJiri Olsa 9*ff3e33b0SJiri Olsa static unsigned long *get_bitmap(const char *str, int nbits) 10*ff3e33b0SJiri Olsa { 11*ff3e33b0SJiri Olsa struct cpu_map *map = cpu_map__new(str); 12*ff3e33b0SJiri Olsa unsigned long *bm = NULL; 13*ff3e33b0SJiri Olsa int i; 14*ff3e33b0SJiri Olsa 15*ff3e33b0SJiri Olsa bm = bitmap_alloc(nbits); 16*ff3e33b0SJiri Olsa 17*ff3e33b0SJiri Olsa if (map && bm) { 18*ff3e33b0SJiri Olsa bitmap_zero(bm, nbits); 19*ff3e33b0SJiri Olsa 20*ff3e33b0SJiri Olsa for (i = 0; i < map->nr; i++) 21*ff3e33b0SJiri Olsa set_bit(map->map[i], bm); 22*ff3e33b0SJiri Olsa } 23*ff3e33b0SJiri Olsa 24*ff3e33b0SJiri Olsa if (map) 25*ff3e33b0SJiri Olsa cpu_map__put(map); 26*ff3e33b0SJiri Olsa return bm; 27*ff3e33b0SJiri Olsa } 28*ff3e33b0SJiri Olsa 29*ff3e33b0SJiri Olsa static int test_bitmap(const char *str) 30*ff3e33b0SJiri Olsa { 31*ff3e33b0SJiri Olsa unsigned long *bm = get_bitmap(str, NBITS); 32*ff3e33b0SJiri Olsa char buf[100]; 33*ff3e33b0SJiri Olsa int ret; 34*ff3e33b0SJiri Olsa 35*ff3e33b0SJiri Olsa bitmap_scnprintf(bm, NBITS, buf, sizeof(buf)); 36*ff3e33b0SJiri Olsa pr_debug("bitmap: %s\n", buf); 37*ff3e33b0SJiri Olsa 38*ff3e33b0SJiri Olsa ret = !strcmp(buf, str); 39*ff3e33b0SJiri Olsa free(bm); 40*ff3e33b0SJiri Olsa return ret; 41*ff3e33b0SJiri Olsa } 42*ff3e33b0SJiri Olsa 43*ff3e33b0SJiri Olsa int test__bitmap_print(int subtest __maybe_unused) 44*ff3e33b0SJiri Olsa { 45*ff3e33b0SJiri Olsa TEST_ASSERT_VAL("failed to convert map", test_bitmap("1")); 46*ff3e33b0SJiri Olsa TEST_ASSERT_VAL("failed to convert map", test_bitmap("1,5")); 47*ff3e33b0SJiri Olsa TEST_ASSERT_VAL("failed to convert map", test_bitmap("1,3,5,7,9,11,13,15,17,19,21-40")); 48*ff3e33b0SJiri Olsa TEST_ASSERT_VAL("failed to convert map", test_bitmap("2-5")); 49*ff3e33b0SJiri Olsa TEST_ASSERT_VAL("failed to convert map", test_bitmap("1,3-6,8-10,24,35-37")); 50*ff3e33b0SJiri Olsa TEST_ASSERT_VAL("failed to convert map", test_bitmap("1,3-6,8-10,24,35-37")); 51*ff3e33b0SJiri Olsa TEST_ASSERT_VAL("failed to convert map", test_bitmap("1-10,12-20,22-30,32-40")); 52*ff3e33b0SJiri Olsa return 0; 53*ff3e33b0SJiri Olsa } 54