X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu.c;h=b323711294ae25ffc7c65641ab1a73240aa03aaa;hp=07661a3cb448b34505f24a8552a421741bb282bd;hb=ec4e58a3aba2084440012f8ccac3a31eb6101183;hpb=2f873279bc92fac32e6549d6eb72f3197c7048ac diff --git a/urcu.c b/urcu.c index 07661a3..b323711 100644 --- a/urcu.c +++ b/urcu.c @@ -211,17 +211,17 @@ static void force_mb_all_threads(void) */ static void wait_gp(struct reader_registry *index) { - atomic_dec(&gp_futex); + uatomic_dec(&gp_futex); force_mb_single_thread(index); /* Write futex before read reader_gp */ if (!rcu_old_gp_ongoing(index->urcu_active_readers)) { /* Read reader_gp before write futex */ force_mb_single_thread(index); /* Callbacks are queued, don't wait. */ - atomic_set(&gp_futex, 0); + uatomic_set(&gp_futex, 0); } else { /* Read reader_gp before read futex */ force_mb_single_thread(index); - if (atomic_read(&gp_futex) == -1) + if (uatomic_read(&gp_futex) == -1) futex(&gp_futex, FUTEX_WAIT, -1, NULL, NULL, 0); } @@ -373,13 +373,13 @@ void *rcu_assign_pointer_sym(void **p, void *v) void *rcu_xchg_pointer_sym(void **p, void *v) { wmb(); - return xchg(p, v); + return uatomic_xchg(p, v); } void *rcu_cmpxchg_pointer_sym(void **p, void *old, void *_new) { wmb(); - return cmpxchg(p, old, _new); + return uatomic_cmpxchg(p, old, _new); } void *rcu_publish_content_sym(void **p, void *v)