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