Messages in this thread | | | Date | Mon, 2 May 2016 10:59:50 -0700 | From | Christoph Hellwig <> | Subject | Re: [PATCH 2/2] target: use RCU_INIT_POINTER() when NULLing. |
| |
On Mon, May 02, 2016 at 10:57:38AM -0700, Paul E. McKenney wrote: > -#define rcu_assign_pointer(p, v) smp_store_release(&p, RCU_INITIALIZER(v)) > +#define rcu_assign_pointer(p, v) \ > +({ \ > + uintptr_t _r_a_p__v = (uintptr_t)(v); \ > + \ > + if (__builtin_constant_p(v) && (_r_a_p__v) == (uintptr_t)NULL) \ > + WRITE_ONCE((p), (typeof(p))(_r_a_p__v)); \ > + else \ > + smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \ > + _r_a_p__v; \ > +})
Can't we turn it into an inline (would need different calling conventions for p, though).
| |