PERFORCE change 103633 for review
Robert Watson
rwatson at FreeBSD.org
Fri Aug 11 11:42:54 UTC 2006
On Fri, 11 Aug 2006, Roman Divacky wrote:
> http://perforce.freebsd.org/chv.cgi?CH=103633
>
> Change 103633 by rdivacky at rdivacky_witten on 2006/08/11 11:10:09
>
> Giantify futex code - this is necessary because the futex code is expected to be atomic.
> I need to assure the atomicity. I am using Giant because its sleepable mutex. I hope
> someone will point me to some other better solution.
Giant is not "sleepable" in the same sense that sx locks, lockmgr locks, etc,
are. Normally "sleepable" means that the lock can be held across a sleep of
potentially unbounded length, such as msleep(), tsleep(), cv_wait(), etc.
Giant is automatically dropped by the kernel on sleep, and re-acquired one
wakeup. This means that Giant does not provide mutual exclusion across a
sleep -- if this is a property you are relying on, then Giant is not what you
want. If you most sleep while holding a lock, I would recommend an sx lock.
However, a preferred solution is not to sleep holding a lock.
Robert N M Watson
Computer Laboratory
University of Cambridge
More information about the p4-projects
mailing list