X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=urcu.c;h=32f74880492ce40527c8b5b40560249eac485b90;hb=6ee91d83a7a5b33160158f57f94dd75e6d0a67ed;hp=d474fc8a3e8311c036f151698afdeaab7bde192a;hpb=81d1f1f5a2d41dfd76defc700cdf68660d12f323;p=urcu.git diff --git a/urcu.c b/urcu.c index d474fc8..32f7488 100644 --- a/urcu.c +++ b/urcu.c @@ -37,6 +37,8 @@ #include "urcu.h" #ifndef URCU_MB +static int init_done; + void __attribute__((constructor)) urcu_init(void); void __attribute__((destructor)) urcu_exit(void); #else @@ -45,8 +47,6 @@ void urcu_init(void) } #endif -static int init_done; - static pthread_mutex_t urcu_mutex = PTHREAD_MUTEX_INITIALIZER; /* @@ -347,6 +347,12 @@ void *rcu_xchg_pointer_sym(void **p, void *v) return xchg(p, v); } +void *rcu_cmpxchg_pointer_sym(void **p, void *old, void *_new) +{ + wmb(); + return cmpxchg(p, old, _new); +} + void *rcu_publish_content_sym(void **p, void *v) { void *oldptr;