[PATCHv5] atomic: add *_dec_not_zero
From: David Laight <hidden>
Date: 2011-12-05 11:44:10
Also in:
batman, linux-alpha, linux-arch, linux-mips, linux-um, linuxppc-dev
From: David Laight <hidden>
Date: 2011-12-05 11:44:10
Also in:
batman, linux-alpha, linux-arch, linux-mips, linux-um, linuxppc-dev
Looking at this:
#ifndef atomic_inc_unless_negative
static inline int atomic_inc_unless_negative(atomic_t *p)
{
int v, v1;
for (v = 0; v >= 0; v = v1) {
v1 = atomic_cmpxchg(p, v, v + 1);
if (likely(v1 == v))
return 1;
}
return 0;
}
#endifwhy is it optimised for '*p' being zero?? I'd have though the initial assignment to 'v' should be made by reading '*p' without any memory barriers (etc). David