Messages in this thread | | | Date | Mon, 24 Apr 2017 12:45:39 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH] x86/refcount: Implement fast refcount_t handling |
| |
On Fri, Apr 21, 2017 at 03:09:39PM -0700, Kees Cook wrote: > +static __always_inline __must_check bool refcount_inc_not_zero(refcount_t *r) > +{ > + const int a = 1; > + const int u = 0; > + int c, old; > + > + c = atomic_read(&(r->refs)); > + for (;;) { > + if (unlikely(c == (u))) > + break; > + old = atomic_cmpxchg(&(r->refs), c, c + (a));
Please use atomic_try_cmpxchg(), that generates saner code.
> + if (likely(old == c)) > + break; > + c = old; > + } > + return c != u; > +}
| |