cvs commit: src/sys/kern subr_sleepqueue.c

Jeff Roberson jroberson at chesapeake.net
Thu Mar 20 01:53:12 PDT 2008


On Tue, 18 Mar 2008, Jeff Roberson wrote:

> On Wed, 19 Mar 2008, David Xu wrote:
>
>> Jeff Roberson wrote:
>>> jeff        2008-03-19 07:35:14 UTC
>>>
>>>   FreeBSD src repository
>>>
>>>   Modified files:
>>>     sys/kern             subr_sleepqueue.c   Log:
>>>    - At the top of sleepq_catch_signals() lock the thread and check 
>>> TDF_NEEDSIGCHK
>>>      before doing the very expensive cursig() and related locking. 
>>> NEEDSIGCHK
>>>      is updated whenever our signal mask change or when a signal is 
>>> delivered and
>>>      should be sufficient to avoid the more expensive tests.  This 
>>> eliminates
>>>      another source of PROC_LOCK contention in multithreaded programs.
>>>     Revision  Changes    Path
>>>   1.50      +12 -4     src/sys/kern/subr_sleepqueue.c
>>> 
>> 
>> This may break process suspension, a more completed patch is here: (though 
>> it is outdated):
>> 
>> http://people.freebsd.org/~davidxu/patch/PCATCH_optimize.patch
>> 
>> In one word, process suspending may be in progress, and the thread
>> should check it.
>
> Thanks Xu.  I will add your NEEDSUSPCHECK flag and check that as well.

http://people.freebsd.org/~jeff/suspchk.diff

Can you review this diff?  I rely on ast() to check and clear the flag as 
we do with NEEDSIGCHK.  I removed the check from userret() as we don't 
need to do it every time now.

Thanks,
Jeff

>
>> 
>> Regards,
>> David Xu
>> 
>> 
>


More information about the cvs-src mailing list