1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 2ff3e33b0SJiri Olsa #include <linux/compiler.h> 3ff3e33b0SJiri Olsa #include <linux/bitmap.h> 49c3516d1SJiri Olsa #include <perf/cpumap.h> 587ffb6c6SArnaldo Carvalho de Melo #include <internal/cpumap.h> 6ff3e33b0SJiri Olsa #include "tests.h" 7ff3e33b0SJiri Olsa #include "debug.h" 8ff3e33b0SJiri Olsa 9ff3e33b0SJiri Olsa #define NBITS 100 10ff3e33b0SJiri Olsa 11ff3e33b0SJiri Olsa static unsigned long *get_bitmap(const char *str, int nbits) 12ff3e33b0SJiri Olsa { 139c3516d1SJiri Olsa struct perf_cpu_map *map = perf_cpu_map__new(str); 14ff3e33b0SJiri Olsa unsigned long *bm = NULL; 15ff3e33b0SJiri Olsa int i; 16ff3e33b0SJiri Olsa 17*7fc5b571SAndy Shevchenko bm = bitmap_zalloc(nbits); 18ff3e33b0SJiri Olsa 19ff3e33b0SJiri Olsa if (map && bm) { 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) 2538f01d8dSJiri Olsa perf_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 4381f17c90SArnaldo 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