Add f_modify and f_process callbacks to socket filterops.
authorvisa <visa@openbsd.org>
Fri, 28 May 2021 16:24:53 +0000 (16:24 +0000)
committervisa <visa@openbsd.org>
Fri, 28 May 2021 16:24:53 +0000 (16:24 +0000)
commite905407d906dc115a8fdbe37c027f67c0954cc6b
treeda5301de8b33ed932ba2262fb361dcf2309f5139
parentcdbda811b773725acb2e3745ecf6ea9edab32692
Add f_modify and f_process callbacks to socket filterops.

This makes kqueue use the extended callback interface with socket event
filters. Now one level of nested kernel locking is avoided, and the
callbacks run without splhigh().

The filterops no longer check NOTE_SUBMIT, and use a fixed locking
pattern instead. The f_event routines are always called with solock(),
whereas f_modify and f_process are always called without the lock.

OK mpi@
sys/kern/uipc_socket.c
sys/kern/uipc_syscalls.c