Date: Mon, 21 Apr 2008 12:01:29 -0700 From: "Murty, Ravi" <ravi.murty@intel.com> To: <freebsd-hackers@freebsd.org> Subject: Do you really "sleep" when blocked on a mutex? Message-ID: <AEBCFC23C0E40949B10BA2C224FC61B00704441C@orsmsx416.amr.corp.intel.com>
next in thread | raw e-mail | index | archive | help
Hello, When a thread cannot get a mutex (default mutex) and needs to be blocked, is it really put to sleep? From looking at the code it appears that it is inhibited (TD_SET_LOCK) but isn't really put to sleep. 1. Why isn't it put to sleep - why can't it be treated the same? 2. The eventual question I am trying to answer is the difference between setrunnable() and setrunqueue() - this one simply finds a slot in the ksegrp and a runq to add the KSE/td. But setrunnable() also checks to see if the process is in memory (PS_INMEM) before calling sched_wakeup which eventually calls setrunqueue()? Why doesn't setrunqueue have to worry about the possibility that the process may have been swapped out while it was waiting to become runnable? Thanks Ravi
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AEBCFC23C0E40949B10BA2C224FC61B00704441C>
