X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Furcu-pointer.c;h=d0854ac8fb3ac1051b573b7afad890cf6f04cc2d;hb=HEAD;hp=bc78c10bd255b12780eb36844c7e6383ef01ed51;hpb=acdb82a20ba20467b89c67aa44ca03da610513a9;p=userspace-rcu.git diff --git a/src/urcu-pointer.c b/src/urcu-pointer.c index bc78c10..a42fe87 100644 --- a/src/urcu-pointer.c +++ b/src/urcu-pointer.c @@ -24,19 +24,16 @@ void *rcu_dereference_sym(void *p) void *rcu_set_pointer_sym(void **p, void *v) { - cmm_wmb(); - uatomic_set(p, v); + uatomic_store(p, v, CMM_RELEASE); return v; } void *rcu_xchg_pointer_sym(void **p, void *v) { - cmm_wmb(); - return uatomic_xchg(p, v); + return uatomic_xchg_mo(p, v, CMM_SEQ_CST); } void *rcu_cmpxchg_pointer_sym(void **p, void *old, void *_new) { - cmm_wmb(); - return uatomic_cmpxchg(p, old, _new); + return uatomic_cmpxchg_mo(p, old, _new, CMM_SEQ_CST, CMM_RELAXED); }