static int test_force_sync;
-static volatile int test_go, test_stop_enqueue, test_stop_dequeue;
+static volatile int test_stop_enqueue, test_stop_dequeue;
static unsigned long rduration;
*/
static int test_duration_dequeue(void)
{
- return !test_stop_dequeue;
+ return !uatomic_load(&test_stop_dequeue, CMM_RELAXED);
}
static int test_duration_enqueue(void)
{
- return !test_stop_enqueue;
+ return !uatomic_load(&test_stop_enqueue, CMM_RELAXED);
}
static DEFINE_URCU_TLS(unsigned long long, nr_dequeues);
set_affinity();
- while (!test_go)
- {
- }
- cmm_smp_mb();
+ wait_until_go();
for (;;) {
struct cds_wfs_node *node = malloc(sizeof(*node));
set_affinity();
- while (!test_go)
- {
- }
- cmm_smp_mb();
+ wait_until_go();
urcu_posix_assert(test_pop || test_pop_all);
cmm_smp_mb();
- test_go = 1;
+ begin_test();
for (i_thr = 0; i_thr < duration; i_thr++) {
sleep(1);
}
}
- test_stop_enqueue = 1;
+ uatomic_store(&test_stop_enqueue, 1, CMM_RELEASE);
if (test_wait_empty) {
while (nr_enqueuers != uatomic_read(&test_enqueue_stopped)) {
}
}
- test_stop_dequeue = 1;
+ uatomic_store(&test_stop_dequeue, 1, CMM_RELAXED);
for (i_thr = 0; i_thr < nr_enqueuers; i_thr++) {
err = pthread_join(tid_enqueuer[i_thr], &tret);