cvs commit: src/sys/kern subr_sleepqueue.c
David Xu
davidxu at FreeBSD.org
Thu Mar 20 02:32:51 PDT 2008
Jeff Roberson wrote:
>
> 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
>
It looks okay to me, the code looks more clean than KSE time.
Regards,
David Xu
More information about the cvs-src
mailing list