Why need not to PROC_UNLOCK() in kthread_suspend()/kproc_suspend()?

Konstantin Belousov kostikbel at gmail.com
Mon Dec 26 11:04:07 UTC 2016

On Mon, Dec 26, 2016 at 06:26:48PM +0800, jinjun gao wrote:
> Hi Guys,
> In file sys/kern/kern_kthread.c (
> https://github.com/freebsd/freebsd/blob/master/sys/kern/kern_kthread.c),
> the PROC_LOCK() and PROC_UNLOCK() are used in pairs in one function except
> function kthread_suspend()/kproc_suspend() (
> https://github.com/freebsd/freebsd/blob/master/sys/kern/kern_kthread.c#L177).
> In these two functions, there is only PROC_LOCK(). I checked may related
> function(such as kproc_resume()) and can not find PROC_UNLOCK() to pair the
> one resided in kproc_suspend().  Why need not PROC_UNLOCK() to pair
> PROC_LOCK() in kproc_suspend()/kthread_suspend()? Thanks!
Because later msleep(9) is called with the process lock and PDROP flag.

More information about the freebsd-threads mailing list