Fix tests makefile
[urcu.git] / urcu.c
diff --git a/urcu.c b/urcu.c
index e70980f5b93e259f5506e3fb7e1b602708aa63b3..8ff39db1331e5a33cfc102b9fb3283e6c58fc2df 100644 (file)
--- a/urcu.c
+++ b/urcu.c
@@ -216,7 +216,7 @@ void wait_for_quiescent_state(void)
 {
        LIST_HEAD(qsreaders);
        int wait_loops = 0;
-       struct urcu_reader *index;
+       struct urcu_reader *index, *tmp;
 
        if (list_empty(&registry))
                return;
@@ -231,7 +231,7 @@ void wait_for_quiescent_state(void)
                        force_mb_all_threads();
                }
 
-               list_for_each_entry(index, &registry, head) {
+               list_for_each_entry_safe(index, tmp, &registry, head) {
                        if (!rcu_old_gp_ongoing(&index->ctr))
                                list_move(&index->head, &qsreaders);
                }
@@ -278,7 +278,7 @@ void wait_for_quiescent_state(void)
 #endif /* #else #ifndef HAS_INCOHERENT_CACHES */
        }
        /* put back the reader list in the registry */
-       list_move(&qsreaders, &registry);
+       list_splice(&qsreaders, &registry);
 }
 
 void synchronize_rcu(void)
@@ -372,38 +372,6 @@ void rcu_read_unlock(void)
        _rcu_read_unlock();
 }
 
-void *rcu_dereference(void *p)
-{
-       return _rcu_dereference(p);
-}
-
-void *rcu_assign_pointer_sym(void **p, void *v)
-{
-       wmb();
-       return STORE_SHARED(p, v);
-}
-
-void *rcu_xchg_pointer_sym(void **p, void *v)
-{
-       wmb();
-       return uatomic_xchg(p, v);
-}
-
-void *rcu_cmpxchg_pointer_sym(void **p, void *old, void *_new)
-{
-       wmb();
-       return uatomic_cmpxchg(p, old, _new);
-}
-
-void *rcu_publish_content_sym(void **p, void *v)
-{
-       void *oldptr;
-
-       oldptr = _rcu_xchg_pointer(p, v);
-       synchronize_rcu();
-       return oldptr;
-}
-
 void rcu_register_thread(void)
 {
        urcu_reader.tid = pthread_self();
This page took 0.023176 seconds and 4 git commands to generate.