37 #include <linux/limits.h> 76 M0_BASSERT(!(M0_0VEC_ALIGN & (M0_0VEC_ALIGN - 1)));
94 #define test_iterate(varr, ele, dt, buff_nr) \ 96 struct m0_varr *__varr_ = (varr); \ 98 uint64_t __buff_nr = (buff_nr); \ 102 uint32_t __dt = dt; \ 104 M0_ASSERT(size_get(__dt) == sizeof __ele); \ 106 __nr = array_len_compute(__buff_nr, __dt); \ 107 __rc = m0_varr_init(__varr_, __nr, size_get(__dt), BUFF_SIZE); \ 108 M0_ASSERT(__rc == 0); \ 109 m0_varr_iter(__varr_, typeof(__ele), i, obj, 0, \ 110 m0_varr_size(__varr_), 1) { \ 111 obj_init((void*)obj, i, __dt); \ 113 m0_varr_for (__varr_, typeof(__ele), i, obj) { \ 114 obj_sanity_check(obj, i, __dt); \ 116 for (__step = 2; __step <= __nr; ++__step) { \ 117 m0_varr_iter(__varr_, typeof(__ele), i, obj, 0, \ 118 m0_varr_size(__varr_), __step) { \ 119 obj_sanity_check((void *)obj, i, __dt); \ 122 m0_varr_fini(__varr_); \ 208 return sizeof (uint8_t);
210 return sizeof (uint64_t);
212 return sizeof (
struct po2);
214 return sizeof (
struct non_po2);
224 uint64_t num_accomodated;
232 buff_nr *= num_trees;
273 uint32_t obj_per_buff;
292 return (
n + 1) *
n / 2;
301 uint64_t atomic64_obj;
322 for (
i = 0;
i < 100; ++
i) {
371 obj_po2 = (
struct po2 *)
obj;
401 obj_po2 = *(
struct po2 *)
obj;
M0_BASSERT(sizeof(uint64_t)==M0_BITS(DT_ATOMIC_64_SHIFT))
void * va_tree[M0_VA_TNODE_NR]
static size_t size_get(enum data_types dt)
static void test_ut_iterate(uint64_t nr)
static void test_init(void)
void test_ub_iterate(void)
static void test_depth(uint32_t max_depth)
struct varr_cache * va_cache
M0_INTERNAL uint64_t m0_rnd(uint64_t max, uint64_t *seed)
M0_INTERNAL void m0_fi_disable(const char *fp_func, const char *fp_tag)
M0_INTERNAL uint64_t m0_varr_size(const struct m0_varr *arr)
m0_time_t m0_time_now(void)
static void obj_init(void *obj, uint64_t data, enum data_types dt)
M0_INTERNAL int m0_varr_init(struct m0_varr *arr, uint64_t nr, size_t size, size_t bufsize)
#define test_iterate(varr, ele, dt, buff_nr)
static uint16_t int_summation(uint8_t n)
static void varr_ub(int i)
static void test_cache(void)
static void m0_fi_enable_off_n_on_m(const char *func, const char *tag, uint32_t n, uint32_t m)
static void obj_sanity_check(const void *obj, uint64_t data, enum data_types dt)
M0_INTERNAL void m0_varr_fini(struct m0_varr *arr)
struct m0_ub_set m0_varr_ub
#define M0_ALLOC_PTR(ptr)
uint8_t va_bufptr_nr_shift
static void tree_sanity_check(const struct m0_varr *varr, uint32_t depth)
static void test_size(void)
uint32_t shift_get(enum data_types dt)
M0_INTERNAL void * m0_varr_ele_get(struct m0_varr *arr, uint64_t index)
uint64_t array_len_compute(uint64_t buff_nr, enum data_types dt)