X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=urcu-pointer.c;h=180c83444f86a3749ce8a79bc5695fb5bede0973;hb=739877210827591639f5448815e5f9186f4b31d2;hp=1461c60f367b032276db9b301bf57e93488a063b;hpb=7e30abe3df0e83eeb741bfc18d07cb016af804a1;p=urcu.git diff --git a/urcu-pointer.c b/urcu-pointer.c index 1461c60..180c834 100644 --- a/urcu-pointer.c +++ b/urcu-pointer.c @@ -4,7 +4,7 @@ * * library wrappers to be used by non-LGPL compatible source code. * - * Copyright (c) 2009 Mathieu Desnoyers + * Copyright (c) 2009 Mathieu Desnoyers * Copyright (c) 2009 Paul E. McKenney, IBM Corporation. * * This library is free software; you can redistribute it and/or @@ -24,40 +24,33 @@ * 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" extern void synchronize_rcu(void); -void *rcu_dereference(void *p) +void *rcu_dereference_sym(void *p) { return _rcu_dereference(p); } void *rcu_set_pointer_sym(void **p, void *v) { - wmb(); - return STORE_SHARED(*p, v); + cmm_wmb(); + return uatomic_set(p, v); } void *rcu_xchg_pointer_sym(void **p, void *v) { - wmb(); + cmm_wmb(); return uatomic_xchg(p, v); } void *rcu_cmpxchg_pointer_sym(void **p, void *old, void *_new) { - wmb(); + cmm_wmb(); return uatomic_cmpxchg(p, old, _new); } - -void *rcu_publish_content_sym(void **p, void *v) -{ - void *oldptr; - - oldptr = _rcu_xchg_pointer(p, v); - synchronize_rcu(); - return oldptr; -}