MTX Lock implementation question

From: Barney Cordoba <barney_cordoba_at_yahoo.com>
Date: Wed, 4 Mar 2009 04:54:32 -0800 (PST)
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);
}


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.

Thanks,

Barney


      
Received on Wed Mar 04 2009 - 11:54:33 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:43 UTC