X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-pointer.c;h=1c5f6bdaa1aa1d17fdee34eac7bf6a98c0a82a36;hp=79ee72a08e7110ba67a44b80f834096543eaa379;hb=1ed9b67726a52a0f4189cc1b58ca0141f7b1614f;hpb=7d413817f09b2d17b1a79ea012590609ffab5eb6;ds=sidebyside diff --git a/urcu-pointer.c b/urcu-pointer.c index 79ee72a..1c5f6bd 100644 --- a/urcu-pointer.c +++ b/urcu-pointer.c @@ -24,6 +24,8 @@ * IBM's contributions to this file may be relicensed under LGPLv2 or later. */ +#include + #include "urcu-pointer-static.h" /* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */ #include "urcu-pointer.h" @@ -38,7 +40,7 @@ void *rcu_dereference_sym(void *p) void *rcu_set_pointer_sym(void **p, void *v) { wmb(); - return STORE_SHARED(*p, v); + return uatomic_set(p, v); } void *rcu_xchg_pointer_sym(void **p, void *v) @@ -50,9 +52,5 @@ void *rcu_xchg_pointer_sym(void **p, void *v) void *rcu_cmpxchg_pointer_sym(void **p, void *old, void *_new) { wmb(); - if (likely(URCU_CAS_AVAIL())) - return uatomic_cmpxchg(p, old, _new); - - /* Compatibility for i386. Old-timer. */ - return compat_uatomic_cmpxchg(p, old, _new); + return uatomic_cmpxchg(p, old, _new); }