benchmark: Use uatomic for accessing global states
[urcu.git] / tests / benchmark / test_urcu_qsbr.c
index cb09b387821871507365f15cd263a6b7e3be5164..a33dbd342df734baae3fc92678619a72f7116bb1 100644 (file)
@@ -30,8 +30,6 @@
 #endif
 #include "urcu-qsbr.h"
 
-static volatile int test_go, test_stop;
-
 static unsigned long wdelay;
 
 static int *test_rcu_pointer;
@@ -92,19 +90,6 @@ static void set_affinity(void)
 #endif /* HAVE_SCHED_SETAFFINITY */
 }
 
-/*
- * returns 0 if test should end.
- */
-static int test_duration_write(void)
-{
-       return !test_stop;
-}
-
-static int test_duration_read(void)
-{
-       return !test_stop;
-}
-
 static DEFINE_URCU_TLS(unsigned long long, nr_writes);
 static DEFINE_URCU_TLS(unsigned long long, nr_reads);
 
@@ -131,10 +116,7 @@ void *thr_reader(void *_count)
        urcu_posix_assert(!rcu_read_ongoing());
        rcu_thread_online();
 
-       while (!test_go)
-       {
-       }
-       cmm_smp_mb();
+       wait_until_go();
 
        for (;;) {
                rcu_read_lock();
@@ -178,10 +160,7 @@ void *thr_writer(void *_count)
 
        set_affinity();
 
-       while (!test_go)
-       {
-       }
-       cmm_smp_mb();
+       wait_until_go();
 
        for (;;) {
                new = malloc(sizeof(int));
@@ -329,13 +308,7 @@ int main(int argc, char **argv)
                        exit(1);
        }
 
-       cmm_smp_mb();
-
-       test_go = 1;
-
-       sleep(duration);
-
-       test_stop = 1;
+       test_for(duration);
 
        for (i_thr = 0; i_thr < nr_readers; i_thr++) {
                err = pthread_join(tid_reader[i_thr], &tret);
This page took 0.023872 seconds and 4 git commands to generate.