cvs commit: src/sys/kern kern_event.c kern_thread.c
sys_generic.c
sys_pipe.c uipc_sockbuf.c src/sys/netncp ncp_rq.c ncp_sock.c
ncp_sock.h src/sys/netsmb smb_trantcp.c src/sys/sys proc.h selinfo.h
socketvar.h systm.h
Jeff Roberson
jroberson at chesapeake.net
Sat Dec 15 22:26:20 PST 2007
This has been hanging around for at least 6 months with various people
using it.
I should've mentioned also that I had to change a number of places that
try to optimize away selwakeup/selrecord calls using a flag that requires
whether there is a waiter or not. We used to only support one waiter, but
now you must use SEL_WAITING to determine if this is the case. Hopefully
I found all of these places.
Thanks,
Jeff
On Sun, 16 Dec 2007, Jeff Roberson wrote:
> jeff 2007-12-16 06:21:20 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/kern kern_event.c kern_thread.c sys_generic.c
> sys_pipe.c uipc_sockbuf.c
> sys/netncp ncp_rq.c ncp_sock.c ncp_sock.h
> sys/netsmb smb_trantcp.c
> sys/sys proc.h selinfo.h socketvar.h systm.h
> Log:
> Refactor select to reduce contention and hide internal implementation
> details from consumers.
>
> - Track individual selecters on a per-descriptor basis such that there
> are no longer collisions and after sleeping for events only those
> descriptors which triggered events must be rescaned.
> - Protect the selinfo (per descriptor) structure with a mtx pool mutex.
> mtx pool mutexes were chosen to preserve api compatibility with
> existing code which does nothing but bzero() to setup selinfo
> structures.
> - Use a per-thread wait channel rather than a global wait channel.
> - Hide select implementation details in a seltd structure which is
> opaque to the rest of the kernel.
> - Provide a 'selsocket' interface for those kernel consumers who wish to
> select on a socket when they have no fd so they no longer have to
> be aware of select implementation details.
>
> Tested by: kris
> Reviewed on: arch
>
> Revision Changes Path
> 1.114 +6 -3 src/sys/kern/kern_event.c
> 1.264 +2 -0 src/sys/kern/kern_thread.c
> 1.160 +414 -168 src/sys/kern/sys_generic.c
> 1.194 +6 -3 src/sys/kern/sys_pipe.c
> 1.173 +2 -1 src/sys/kern/uipc_sockbuf.c
> 1.16 +9 -3 src/sys/netncp/ncp_rq.c
> 1.20 +0 -105 src/sys/netncp/ncp_sock.c
> 1.7 +0 -3 src/sys/netncp/ncp_sock.h
> 1.27 +1 -79 src/sys/netsmb/smb_trantcp.c
> 1.498 +2 -3 src/sys/sys/proc.h
> 1.19 +8 -8 src/sys/sys/selinfo.h
> 1.159 +2 -0 src/sys/sys/socketvar.h
> 1.263 +0 -4 src/sys/sys/systm.h
>
More information about the cvs-src
mailing list