static void mtree_erase_index(struct maple_tree *mt, unsigned long index)
{
- MT_BUG_ON(mt, mtree_erase(mt, index) != xa_mk_value(index & LONG_MAX));
- MT_BUG_ON(mt, mtree_load(mt, index) != NULL);
+ MT_BUG_ON(mt, mtree_erase(mt, index) != xa_mk_value(index & LONG_MAX));
+ MT_BUG_ON(mt, mtree_load(mt, index) != NULL);
}
static int mtree_test_insert(struct maple_tree *mt, unsigned long index,
erase_check_load(mt, i);
}
-
erase_check_erase(mt, 20); //8003
for (int i = 0; i < 25; i++) {
if (i <= 20 && i >= 13)
erase_check_load(mt, i);
}
-
mt_set_non_kernel(1);
erase_check_erase(mt, 22); //8008
for (int i = 0; i < 25; i++) {
// Too big test.
0x0,
18446744073709551615UL,
- 562915594369133 << 12,
+ 562915594369134UL << 12,
0x0,
-EBUSY,
// Inclusive , Inclusive (with the -1)
check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1,
xa_mk_value(range[i] >> 12), 0);
+ mt_validate(mt);
}
for (i = 0; i < req_range_cnt; i += 5) {
req_range[i+3] >> 12, // expected address
req_range[i+4], // expected return
xa_mk_value(req_range[i] >> 12)); // pointer
+ mt_validate(mt);
}
mtree_destroy(mt);
for (i = 0; i < range_cnt; i += 2) {
check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1,
xa_mk_value(range[i] >> 12), 0);
+ mt_validate(mt);
}
for (i = 0; i < req_range_cnt; i += 5) {
req_range[i+3] >> 12, // expected address
req_range[i+4], // expected return
xa_mk_value(req_range[i] >> 12)); // pointer
+ mt_validate(mt);
}
mtree_destroy(mt);
}
static noinline void check_next_entry(struct maple_tree *mt)
+{
+// void *entry = NULL;
+ unsigned long limit = 30, i = 1;
+ MT_BUG_ON(mt, !mtree_empty(mt));
+// MA_STATE(mas, mt, i, i);
+
+ check_seq(mt, limit, false);
+ rcu_read_lock();
+#if 0
+ for (;i >= limit; i++) {
+ //mas_next_entry
+ MT_BUG_ON(mt, entry != i(void*));
+ i++;
+ }
+ BUG_ON(i != limit);
+ mas
+#endif
+ rcu_read_unlock();
+ mtree_destroy(mt);
+
+}
+
+static noinline void check_prev_entry(struct maple_tree *mt)
{
MT_BUG_ON(mt, !mtree_empty(mt));
check_seq(mt, 30, false);
+ rcu_read_lock();
+ rcu_read_unlock();
mtree_destroy(mt);
}
mtree_init(&tree, 0);
check_next_entry(&tree);
+ mtree_init(&tree, 0);
+ check_prev_entry(&tree);
+
/* Test ranges (store and insert) */
mtree_init(&tree, 0);
check_ranges(&tree);