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