kq/kevent SoC

Samuel J. Greear sjg at evilcode.net
Mon Aug 8 03:03:34 PDT 2011


https://github.com/thesjg/DragonFlyBSD/commits/soc11_kev_refactor?author=thesjg

Here is a big chunk of my SoC patchset to-date, unfortunately a bit
behind schedule. The subsystem has been rewritten such that the
pivotal structure, struct knote has been split into two discrete
structures, struct kev_filter_entry and struct kev_filter_note. The
kev_filter_entry structure contains all the global bits (related to a
file descriptor) that were previously in knote, and kev_filter_note
contains all of the filter-specific bits. This is intended to allow
select, poll and epoll to do less work and run more efficiently.

Another reason for splitting struct knote is to simplify consumers.
Thus, the API that kernel subsystems use to implement filters and be
compatible with the kevent subsystem has also changed and been fairly
radically simplified, especially the API for any piece of code that
exports a device node. Enough subsystems and devices have been ported
to compile and boot a vkernel and the rewritten subsystem works well
enough that at least syslogd is able to register its filters via
select and be woken up by modifications to the log device.

I am heading out of town this week (returning Monday the 15'th or so
and limited internet access while gone), so if anyone felt inclined to
either review and provide feedback or pull the branch down and poke it
with an editor a bit I would certainly welcome that. (use
git://github.com/thesjg/DragonFlyBSD.git as remote)

A preliminary epoll implementation is written but I have not yet
pushed that branch.

Thanks,
Sam





More information about the Kernel mailing list