On Mon, Aug 11, 2003 at 03:50:26PM -0700, Ted Unangst wrote: >On Mon, 11 Aug 2003, John Baldwin wrote: >> Also, SK_LOCK != SK_IF_LOCK, or is that a typo? If it is a typo, >> then the lock order should still be fixed in some fashion. > >They are the same. SK_IF_LOCK is called on the sk_if_softc, but just >locks the shared sk_softc mutex. Does that make sense? > >#define SK_LOCK(_sc) mtx_lock(&(_sc)->sk_mtx) >#define SK_IF_LOCK(_sc) mtx_lock(&(_sc)->sk_softc->sk_mtx)
This strikes me as a particularly poor selection of macros. They look like they are different locks and I'm sure John won't be the only person who gets caught believing they really are different. Getting locking right is difficult enough without having the same lock called different things in different places. This is an area where C++ would be cleaner - you have two (inline) functions with the same name and the compiler picks the appropriate one based on the argument type. Failing that, I think the code would be cleaner without the macros or with SK_IF_LOCK() references replaced by SK_LOCK(). Peter _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"

