On Sun, Aug 01, 2010 at 06:05:20PM -0700, Paul Goyette wrote: > On Mon, 2 Aug 2010, Quentin Garnier wrote: > > >>+int > >>+rmutex_tryenter(rmutex_t *rmtx) > >>+{ > >>+ int rv = 1; > >>+ > >>+ if (mutex_owned(&rmtx->rmtx_mtx)) { > >>+ rmtx->rmtx_recurse++; > >>+ KASSERT(rmtx->rmtx_recurse != 0); > >>+ } else if ((rv = mutex_tryenter(&rmtx->rmtx_mtx)) != 0) { > >>+ rmtx->rmtx_recurse++; > >>+ KASSERT(rmtx->rmtx_recurse != 0); > >>+ } > >>+ return rv; > >>+} > > > >I am probably not getting the idea, but I fail to see how this qualifies > >as a mutex. My reading of this piece of code is that rmutex_enter() is > >always going to succeed immediately. > > According to the mutex(9) man page: > > mutex_owned(mtx) > > For adaptive mutexes, return non-zero if the current LWP holds > the mutex. ... Ah, that was what I was missing. Thanks. -- Quentin Garnier - cube%cubidou.net@localhost - cube%NetBSD.org@localhost "See the look on my face from staying too long in one place [...] every time the morning breaks I know I'm closer to falling" KT Tunstall, Saving My Face, Drastic Fantastic, 2007.
Attachment:
pgp8vcZHZwxs1.pgp
Description: PGP signature