X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=urcu-pointer.c;h=79ee72a08e7110ba67a44b80f834096543eaa379;hb=c96a37267efd57cddf7a30f472f9e56f2ecddddc;hp=93d49875d6226fcaf18ec4aba147c28994ad6f0d;hpb=b1048d48b166d50e10d1eb3a1e512a7bffb2a265;p=urcu.git diff --git a/urcu-pointer.c b/urcu-pointer.c index 93d4987..79ee72a 100644 --- a/urcu-pointer.c +++ b/urcu-pointer.c @@ -30,7 +30,7 @@ extern void synchronize_rcu(void); -void *rcu_dereference(void *p) +void *rcu_dereference_sym(void *p) { return _rcu_dereference(p); } @@ -50,5 +50,9 @@ void *rcu_xchg_pointer_sym(void **p, void *v) void *rcu_cmpxchg_pointer_sym(void **p, void *old, void *_new) { wmb(); - return uatomic_cmpxchg(p, old, _new); + if (likely(URCU_CAS_AVAIL())) + return uatomic_cmpxchg(p, old, _new); + + /* Compatibility for i386. Old-timer. */ + return compat_uatomic_cmpxchg(p, old, _new); }