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>
