static pthread_barrier_t worker_barrier;
static int obj0, obj1;
-static RADIX_TREE(mt_tree, GFP_KERNEL);
+static DEFINE_XARRAY(xa);
static void *reader_fn(void *arg)
{
for (i = 0; i < 1000000; i++) {
rcu_read_lock();
- entry = radix_tree_lookup(&mt_tree, 0);
+ entry = xa_load(&xa, 0);
rcu_read_unlock();
if (entry != &obj0) {
printf("iteration %d bad entry = %p\n", i, entry);
pthread_barrier_wait(&worker_barrier);
for (i = 0; i < 1000000; i++) {
- radix_tree_insert(&mt_tree, 1, &obj1);
- radix_tree_delete(&mt_tree, 1);
+ xa_store(&xa, 1, &obj1, GFP_KERNEL);
+ xa_erase(&xa, 1);
}
rcu_unregister_thread();
printv(1, "regression test 4 starting\n");
- radix_tree_insert(&mt_tree, 0, &obj0);
+ xa_store(&xa, 0, &obj0, GFP_KERNEL);
pthread_barrier_init(&worker_barrier, NULL, 2);
if (pthread_create(&reader, NULL, reader_fn, NULL) ||