lockmgr_sleep() (was Re: ssleep() (was Re: mention msleep() in porting_drivers.txt))

Aggelos Economopoulos aoiko at cc.ece.ntua.gr
Sat Jan 26 06:51:56 PST 2008


On Wednesday 16 January 2008, Aggelos Economopoulos wrote:
> On Wednesday 16 January 2008, Matthew Dillon wrote:
> >     lockmgr_sleep(ident, lock, slpflags, wmesg, timeo)
> > 
> >     lockmgr_sleep can also figure out what kind of lock is held internally
> >     and deal with it, or it can just assume an exclusive lock.  Either way
> >     lkflags do not have to be passed to it.
> 
> Assuming an exclusive lock is not intuitive IMO and differs from the FreeBSD
> semantics (even though it matches our msleep()/spin_sleep()). What do you
> think of the lockmgr change suggested in another mail in this thread?
> 
> > 
> > :If we're going to rename msleep() to spin_sleep() anyway, I suggest changing
> > :the prototype to
> > :
> > :spin_sleep(void *ident, int flags, const char *wmesg, int timo,
> > :	struct spinlock *spin)
> > 
> >     We want all the *sleep() procedures to use a similar prototype,
> >     and in this case being compatible with our own history as well
> >     as FreeBSD's will reduce confusion to a minimum.  That means putting
> >     the lock as the second argument.
> > 
> >     spin_sleep(ident, spin, slpflags, wmesg, timeo)
> 
> Nobody can disagree with the "compatible" part, but for a whatever_sleep()
> that does a "drop, tsleep() and reacquire whatever lock" it seems more
> natural to require the tsleep() args followed by the whatever args. It may
> be unlikely, but imagine having to add another flag. Would you put it after
> "spin" seperating the tsleep() args further?
> 
> Also, I don't think FreeBSD compatibility is an issue, unless the two choices
> are otherwise on par.

So what's the verdict? Veto still on? Need to know in order to submit a patch :)

Aggelos





More information about the Submit mailing list