> According to the mutex(9) man page:
> 
>      mutex_owned(mtx)
> 
>         For adaptive mutexes, return non-zero if the current LWP holds
>         the mutex. ...

this is an incomplete reading of the manual page, and you can not
use mutex_owned() the way you are trying to (regardless of what
pooka posted.) you can't even using it in various forms of assertions
safely.  from the man page:

        It should not be used to make locking decisions at run time, or to
        verify that a lock is not held.

ie, you can not even KASSERT(!mutex_owned()).

the documentation matches my experience with using mutex(9) and
KASSERT().

but i'm still not sure why we're going to such lengths to hold a
lock across such a heavy weight operation like loading a module.
that may involve disk speeds, and so you're looking at waiting
millions of cycles for the lock.  aka, what eeh posted.


.mrg

Reply via email to