tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kasserting non-ownership of locks
I would often like to kassert that I do *not* hold a lock, e.g. to
check that a vop correctly dropped its locks before some other vop
begins and lockdebug-panics.
Currently KASSERT(!mutex_owned(lock)) is not kosher, presumably
because if lock is a spin lock it might do the wrong thing -- fail
because some other CPU owns the spin lock.
I don't see any reason why KASSERT(!rw_write_held(rwlock)) or
KASSERT(VOP_ISLOCKED(vp) != LK_EXCLUSIVE) would do the wrong thing at
the moment: these both trigger iff the lock is held by curlwp.
1. Any reason why KASSERT(!mutex_owned(lock)) for an adaptive lock, or
KASSERT(!rw_write_held(rwlock)), or KASSERT(VOP_ISLOCKED(vp) !=
LK_EXCLUSIVE), would do the wrong thing?
2. If not, any objection to adding the following and using it for
locks known to be adaptive?
bool
mutex_notowned(kmutex_t *lock)
{
KASSERT(MUTEX_ADAPTIVE_P(lock));
return !mutex_owned(lock);
}
Home |
Main Index |
Thread Index |
Old Index