kqueue: Revise filterops interface
authorvisa <visa@openbsd.org>
Wed, 24 Feb 2021 14:59:52 +0000 (14:59 +0000)
committervisa <visa@openbsd.org>
Wed, 24 Feb 2021 14:59:52 +0000 (14:59 +0000)
commit6d57c564656ee8c1c46a869a92c0b1fe7532302b
tree1ae10c8f9bcbdf6d953bdf197aad8be7b21ea53c
parent3a7db4df800a3b73c194d34a17f9f56c753d16cd
kqueue: Revise filterops interface

Extend kqueue's filterops interface with new callbacks so that it
becomes easier to use with fine-grained locking. The new interface
delegates the serialization of kn_event access to event sources. Now
kqueue uses filterops callbacks to read or write kn_event. This hides
event sources' locking patterns from kqueue, and allows clean
implementation of atomic read-and-clear for EV_CLEAR, for instance.

There are so many existing filterops instances that converting all of
them in one go is tricky. This patch adds a wrapper mechanism that
kqueue uses when the new callbacks are missing.

The new filterops interface has been influenced by XNU's kqueue.

OK mpi@ semarie@
sys/kern/kern_event.c
sys/sys/event.h