uatomic/x86: Remove redundant memory barriers
[urcu.git] / tests / benchmark / test_urcu.c
index ea849fa7c481ce37cdf5dd9a384b12043d5b13b4..053993ae940349c7f0ae8a559bdf1f7180fd167a 100644 (file)
@@ -1,23 +1,9 @@
+// SPDX-FileCopyrightText: 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+//
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /*
- * test_urcu.c
- *
  * Userspace RCU library - test program
- *
- * Copyright February 2009 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include <stdio.h>
@@ -44,8 +30,6 @@
 #endif
 #include <urcu.h>
 
-static volatile int test_go, test_stop;
-
 static unsigned long wdelay;
 
 static int *test_rcu_pointer;
@@ -107,19 +91,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);
 
@@ -142,10 +113,7 @@ void *thr_reader(void *_count)
        rcu_register_thread();
        urcu_posix_assert(!rcu_read_ongoing());
 
-       while (!test_go)
-       {
-       }
-       cmm_smp_mb();
+       wait_until_go();
 
        for (;;) {
                rcu_read_lock();
@@ -186,10 +154,7 @@ void *thr_writer(void *_count)
 
        set_affinity();
 
-       while (!test_go)
-       {
-       }
-       cmm_smp_mb();
+       wait_until_go();
 
        for (;;) {
                new = malloc(sizeof(int));
@@ -337,13 +302,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.033818 seconds and 4 git commands to generate.