mpslsi0 : Trying sleep, but thread marked as sleeping prohibited

Chuck Swiger cswiger at mac.com
Thu Feb 23 00:51:02 UTC 2012


On Feb 22, 2012, at 4:22 PM, Desai, Kashyap wrote:
> Just curious to know, What is a reason that thread can do blocking sleep but can't do unbounded sleep ?

When you block, the scheduler can run other threads and only needs to wake up and run your thread after the blocking condition is completed.

However, you don't want to busy-wait in a spin lock/mutex for any lengthy period of time.  If your thread was allowed to do an unbounded sleep, especially in a fast interrupt handler context, what's going to wake it up?  An NMI like the reset button [1]?  :-)

Regards,
-- 
-Chuck

[1]: Well, you could also call STI to permit clock interrupts or something else to fire an interrupt, but then your interrupt handler needs to be re-entrant.  (And watch out for multiple nested interrupts blowing out the available stack space....)



More information about the freebsd-stable mailing list