Rewrite code using atomic_fcmpset_int() in the LinuxKPI.
Suggested by: mjg@ MFC after: 1 week Sponsored by: Mellanox Technologies Sponsored by: Limelight Networks
This commit is contained in:
parent
e6e028d01f
commit
17e2a84e9a
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=334718
@ -239,15 +239,16 @@ static inline int
|
||||
atomic_dec_if_positive(atomic_t *v)
|
||||
{
|
||||
int retval;
|
||||
int curr;
|
||||
int old;
|
||||
|
||||
do {
|
||||
curr = atomic_read(v);
|
||||
retval = curr - 1;
|
||||
old = atomic_read(v);
|
||||
for (;;) {
|
||||
retval = old - 1;
|
||||
if (unlikely(retval < 0))
|
||||
break;
|
||||
} while (!likely(atomic_cmpset_int(&v->counter, curr, retval)));
|
||||
|
||||
if (likely(atomic_fcmpset_int(&v->counter, &old, retval)))
|
||||
break;
|
||||
}
|
||||
return (retval);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user