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