FreeBSD spinlock - compatibility layer
Orit Moskovich
oritm at mellanox.com
Tue May 14 11:02:02 UTC 2013
Hi,
I read about the FreeBSD mutex implementation for spinlock in the compatibility layer.
I might be wrong, but I noticed a code section that might be problematic:
Taken from http://svn.freebsd.org/base/release/9.1.0/sys/ofed/include/linux/spinlock.h:
static inline void
spin_lock_init(spinlock_t *lock)
{
memset(&lock->m, 0, sizeof(lock->m));
mtx_init(&lock->m, "lnxspin", NULL, MTX_DEF | MTX_NOWITNESS);
}
But MTX_DEF initializes mutex as a sleep mutex:
By default, MTX_DEF mutexes will context switch when they are already
held.
There is a flag MTX_SPIN Which I think is the right one in this case .
I'd appreciate your take on this issue.
Thanks,
Orit Moskovich
More information about the freebsd-arch
mailing list