Date: Wed, 4 Mar 2009 10:13:22 -0500 From: John Baldwin <jhb@freebsd.org> To: freebsd-current@freebsd.org, barney_cordoba@yahoo.com Cc: current@freebsd.org Subject: Re: MTX Lock implementation question Message-ID: <200903041013.22496.jhb@freebsd.org> In-Reply-To: <142283.66010.qm@web63903.mail.re1.yahoo.com> References: <142283.66010.qm@web63903.mail.re1.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 04 March 2009 7:54:32 am Barney Cordoba wrote: > > Suppose the following: > > Module foo.c > > foo_getlock(sc) > { > FOO_LOCK(sc); > } > foo_unlock(sc) > { > FOO_UNLOCK(sc); > } > foo_dosomething(sc) > { > MTX_LOCK_ASSERT(sc); > foo_dooit(); > } > > Module bar.c > > bar_dofoo() > { > foo_getlock(sc); > foo_dosomething(sc); > foo_unlock(sc); > } This works fine. > Is this something that shouldn't work? I need to access functions > that require locks in a different module, but this code barfs on > ASSERT with witness enabled. Is this a deflugalty in WITNESS, or do > I need to create functions within foo that do the locking? Its been > working ok for awhile (its not a high volume function) but when I > fired up witness to debug something else I encountered witness panics. You probably have a real bug that WITNESS is warning about however. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903041013.22496.jhb>