svn commit: r334718 - head/sys/compat/linuxkpi/common/include/asm
Hans Petter Selasky
hselasky at FreeBSD.org
Wed Jun 6 15:31:48 UTC 2018
Author: hselasky
Date: Wed Jun 6 15:31:47 2018
New Revision: 334718
URL: https://svnweb.freebsd.org/changeset/base/334718
Log:
Rewrite code using atomic_fcmpset_int() in the LinuxKPI.
Suggested by: mjg@
MFC after: 1 week
Sponsored by: Mellanox Technologies
Sponsored by: Limelight Networks
Modified:
head/sys/compat/linuxkpi/common/include/asm/atomic.h
Modified: head/sys/compat/linuxkpi/common/include/asm/atomic.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/asm/atomic.h Wed Jun 6 15:19:30 2018 (r334717)
+++ head/sys/compat/linuxkpi/common/include/asm/atomic.h Wed Jun 6 15:31:47 2018 (r334718)
@@ -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);
}
More information about the svn-src-all
mailing list