[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Examples of kfilter_register(9)?
On Monday 31 August 2009, Hubert Feyrer wrote:
> Unless I'm totally off-track here, there is a userland interface: The
> code below watches a given directory, and if any file is written or
> linked to it runs a given command. Maybe that helps... based on code
> by someone elase (I forgot who... sorry! :).
> - Hubert
> qd = kqueue();
> EV_SET( &filter, fd, EVFILT_VNODE, EV_ADD,
> NOTE_WRITE|NOTE_EXTEND|NOTE_LINK, 0, NULL);
The kevent/kqueue stuff provides a very neat little
inotify-like-but-more-unified interface to kernel events from userland;
however, the kfilter_register(9) interface is apparently there to
create new filters beyond the EVFILT_VNODE/friends system-supplied
ones. They are given an actual string-ified name and you have to
provide little functions to the struct you pass it that run when a
However, knote(9) only describes the interface for kernel systems to
deliver notes, not what notes are available to a kfilter_* custom
filter, and not details of what the impacts are on the system. It looks
like you can subscribe to specific notes, and in the kernel I see notes
like NOTE_WRITE and NOTE_RENAME and so forth in sys/sys/event.h.
In the knote(9) manpage, "(which is
passed to the appropriate filter routine)" suggests that it does
only run specific kfilters, and then in kfilter_register, the struct
filterops seems to have a place to hook your filter into specific
hints, and that appears to be an OR'd list of NOTE_*.
But, my issue is that there doesn't seem to be any code--anywhere--that
actually makes use of kfilter_register() and so I became curious. :-)
Anyway, I did find sys/sys/event.h which lists a pile of NOTE_*, but..
I always liked the additional comments in the manpages to guide me is
all. Sometimes it seems like there are assumptions about.. say.. CPU
scheduling.. that just plain elude me.
Main Index |
Thread Index |