cds_lfs_push_rcu(&s, &node->list);
nr_successful_enqueues++;
- if (unlikely(wdelay))
+ if (caa_unlikely(wdelay))
loop_sleep(wdelay);
fail:
nr_enqueues++;
- if (unlikely(!test_duration_enqueue()))
+ if (caa_unlikely(!test_duration_enqueue()))
break;
}
nr_successful_dequeues++;
}
nr_dequeues++;
- if (unlikely(!test_duration_dequeue()))
+ if (caa_unlikely(!test_duration_dequeue()))
break;
- if (unlikely(rduration))
+ if (caa_unlikely(rduration))
loop_sleep(rduration);
}
count_dequeuer = malloc(2 * sizeof(*count_dequeuer) * nr_dequeuers);
cds_lfs_init_rcu(&s);
err = create_all_cpu_call_rcu_data(0);
- assert(!err);
+ if (err) {
+ printf("Per-CPU call_rcu() worker threads unavailable. Using default global worker thread.\n");
+ }
next_aff = 0;
tot_successful_enqueues,
tot_successful_dequeues + end_dequeues);
+ free_all_cpu_call_rcu_data();
free(count_enqueuer);
free(count_dequeuer);
free(tid_enqueuer);