svn commit: r333466 - in head: contrib/bmake sys/conf sys/kern sys/modules/epoch_test sys/sys sys/tests/epoch
Matthew Macy
mmacy at freebsd.org
Fri May 11 20:23:57 UTC 2018
It fixes something that is completely broken in bmake that everyone in
the know patches on their local systems. It was included by accident.
I immediately backed it out in the subsequent commit.
On Fri, May 11, 2018 at 1:13 PM, Bryan Drewery <bdrewery at freebsd.org> wrote:
> On 5/10/2018 10:55 AM, Matt Macy wrote:
>> Author: mmacy
>> Date: Thu May 10 17:55:24 2018
>> New Revision: 333466
>> URL: https://svnweb.freebsd.org/changeset/base/333466
>>
>> Log:
>> Add simple preempt safe epoch API
>>
>> Read locking is over used in the kernel to guarantee liveness. This API makes
>> it easy to provide livenes guarantees without atomics.
>>
>> Includes epoch_test kernel module to stress test the API.
>>
>> Documentation will follow initial use case.
>>
>> Test case and improvements to preemption handling in response to discussion
>> with mjg@
>>
>> Reviewed by: imp@, shurd@
>> Approved by: sbruno@
>>
>> Added:
>> head/sys/kern/subr_epoch.c (contents, props changed)
>> head/sys/modules/epoch_test/
>> head/sys/modules/epoch_test/Makefile (contents, props changed)
>> head/sys/sys/epoch.h (contents, props changed)
>> head/sys/tests/epoch/
>> head/sys/tests/epoch/epoch_test.c (contents, props changed)
>> Modified:
>> head/contrib/bmake/job.c
>> head/sys/conf/files
>> head/sys/conf/kern.pre.mk
>> head/sys/kern/kern_malloc.c
>> head/sys/kern/kern_synch.c
>> head/sys/kern/subr_trap.c
>> head/sys/kern/subr_turnstile.c
>> head/sys/sys/proc.h
>> head/sys/sys/turnstile.h
>>
>> Modified: head/contrib/bmake/job.c
>> ==============================================================================
>> --- head/contrib/bmake/job.c Thu May 10 17:22:04 2018 (r333465)
>> +++ head/contrib/bmake/job.c Thu May 10 17:55:24 2018 (r333466)
>> @@ -2121,13 +2121,15 @@ Job_CatchOutput(void)
>> {
>> int nready;
>> Job *job;
>> - int i;
>> + int i, pollToken;
>>
>> (void)fflush(stdout);
>>
>> + pollToken = 0;
>> +
>> /* The first fd in the list is the job token pipe */
>> do {
>> - nready = poll(fds + 1 - wantToken, nfds - 1 + wantToken, POLL_MSEC);
>> + nready = poll(fds + 1 - pollToken, nfds - 1 + pollToken, POLL_MSEC);
>> } while (nready < 0 && errno == EINTR);
>>
>> if (nready < 0)
>
> What's up with this?
>
> --
> Regards,
> Bryan Drewery
>
More information about the svn-src-head
mailing list