X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-qsbr.c;h=f5103eeea78351b64cb64a4cf99b2faca835d771;hp=dac664935d7b898bd3dcce494845c7471c09749d;hb=ec4e58a3aba2084440012f8ccac3a31eb6101183;hpb=2f873279bc92fac32e6549d6eb72f3197c7048ac diff --git a/urcu-qsbr.c b/urcu-qsbr.c index dac6649..f5103ee 100644 --- a/urcu-qsbr.c +++ b/urcu-qsbr.c @@ -106,17 +106,17 @@ static void internal_urcu_unlock(void) */ static void wait_gp(struct reader_registry *index) { - atomic_dec(&gp_futex); + uatomic_dec(&gp_futex); smp_mb(); /* Write futex before read reader_gp */ if (!rcu_gp_ongoing(index->rcu_reader_qs_gp)) { /* Read reader_gp before write futex */ smp_mb(); /* Callbacks are queued, don't wait. */ - atomic_set(&gp_futex, 0); + uatomic_set(&gp_futex, 0); } else { /* Read reader_gp before read futex */ smp_rmb(); - if (atomic_read(&gp_futex) == -1) + if (uatomic_read(&gp_futex) == -1) futex(&gp_futex, FUTEX_WAIT, -1, NULL, NULL, 0); } @@ -287,13 +287,13 @@ void *rcu_assign_pointer_sym(void **p, void *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_xchg_pointer_sym(void **p, void *v) { wmb(); - return xchg(p, v); + return uatomic_xchg(p, v); } void *rcu_publish_content_sym(void **p, void *v)