Skip site navigation (1)Skip section navigation (2)
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,

=20

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.

=20

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?

=20

Thanks

Ravi

=20




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