Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Jan 2009 15:49:49 -0800
From:      Julian Elischer <julian@elischer.org>
To:        arch@freebsd.org
Subject:   need for another mutex type/flag?
Message-ID:  <497BA91D.805@elischer.org>

next in thread | raw e-mail | index | archive | help
Currently we have:
spin locks..
you really don't want to hold these for
any time at all, and this is enforced to some extent in the waiter.

regular mutexes..
You can hold these for as long as you want but teh shorter
the better and you can't sleep when holding them. The
"shortness" of the time of holding the mutex is not enforced.

"Sleeps" (including sx-locks and friends)
   You may hold these or be descheduled for really long periods of time.


Now it occurs to me that there is a subclass of regular mutexes,
usage, which is where you want to use a mutex to guard some small
but critical structure, and that you know that access to that 
structure will be quick, and that you can guarantee that you will
not acquire any other locks (which could introduce unknown delay)
while hoding the lock.

One way of thinking about this is that this lock would always be
a leaf node on the tree of lock orders.
I would like to be able to add a flag to a mutex
that tags it as a 'leaf' mutex. As a result it would be illegal
to take any other mutex while holding a leaf mutex. Somewhat
similar to the way that it is illegal to take aregular
mutex while holding a spin mutex..


In netgraph I have a stipulation that is hard to specify which
is that  you MAY take a mutex in a netgraph node if you can guarantee
that the mutex WILL be satisfied very quickly, but it'd
be nice to be able to specify "you may only take 'leaf' mutexes within 
an netgraph node".


thoughts? (especially from jhb and other locking types).





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?497BA91D.805>