X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu.c;h=d0d61385385d713bf221e078767295bd3ecfb2d6;hp=ee79d1efc7b7a98f87f30a3f5de4abe9e7c822b3;hb=f5f51ac3ef3e0db8a0940c456bce22bc9000fdbf;hpb=b257a10b0b05064dcb5dc9d4d1c5f95c0364b9dd diff --git a/urcu.c b/urcu.c index ee79d1e..d0d6138 100644 --- a/urcu.c +++ b/urcu.c @@ -101,7 +101,7 @@ void wait_for_quiescent_state(int parity) /* * BUSY-LOOP. */ - while (*index->urcu_active_readers != 0) + while (index->urcu_active_readers[parity] != 0) barrier(); } /* @@ -119,7 +119,7 @@ void wait_for_quiescent_state(int parity) */ void *urcu_publish_content(void **ptr, void *new) { - int ret, prev_parity; + int prev_parity; void *oldptr; /* @@ -134,8 +134,8 @@ void *urcu_publish_content(void **ptr, void *new) */ oldptr = *ptr; *ptr = new; - wmb(); /* Write ptr before changing the qparity */ /* All threads should read qparity before ptr */ + /* Write ptr before changing the qparity */ force_mb_all_threads(); prev_parity = switch_next_urcu_qparity(); @@ -207,7 +207,6 @@ void urcu_register_thread(void) void urcu_unregister_thread(void) { - pthread_t self = pthread_self(); rcu_write_lock(); urcu_remove_reader(pthread_self()); rcu_write_unlock();