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