Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


KFILTER_REGISTER(9)        Kernel Developer's Manual       KFILTER_REGISTER(9)

NAME
     kfilter_register, kfilter_unregister - add or remove kernel event filters

SYNOPSIS
     #include <sys/event.h>

     int
     kfilter_register(const char *name, struct filterops *filtops,
         int *retfilter);

     int
     kfilter_unregister(const char *name);

DESCRIPTION
     The kfilter_register() function adds a new kernel event filter (kfilter)
     to the system, for use by callers of kqueue(2) and kevent(2).  name is
     the name of the new filter (which must not already exist), and filtops is
     a pointer to a filterops structure which describes the filter operations.
     Both name and filtops will be copied to an internal data structure, and a
     new filter number will be allocated.  If retfilter is not NULL, then the
     new filter number will be returned in the address pointed at by
     retfilter.

     The kfilter_unregister() function removes a kfilter named name that was
     previously registered with kfilter_register().  If a filter with the same
     name is later reregistered with kfilter_register(), it will get a
     different filter number (i.e., filter numbers are not recycled).  It is
     not possible to unregister the system filters (i.e., those that start
     with "EVFILT_" and are documented in kqueue(2)).

     The filterops structure is defined as follows:

           struct filterops {
                   int     f_isfd;         /* true if ident == filedescriptor */
                   int     (*f_attach)(struct knote *kn);
                                           /* called when knote is ADDed */
                   void    (*f_detach)(struct knote *kn);
                                           /* called when knote is DELETEd */
                   int     (*f_event)(struct knote *kn, long hint);
                                           /* called when event is triggered */
                   void    (*f_touch)(struct knote *kn, struct kevent *kev, long hint);
                                           /* called during registration and event
                                            * processing to provide custom handling
                                            * of event fflags and data
                                            */
           };

     If the filter operation is for a file descriptor, f_isfd should be non-
     zero, otherwise it should be zero.  This controls where the kqueue(2)
     system stores the knotes for an object.

RETURN VALUES
     kfilter_register() returns 0 on success, EINVAL if there's an invalid
     argument, or EEXIST if the filter already exists,

     kfilter_unregister() returns 0 on success, EINVAL if there's an invalid
     argument, or ENOENT if the filter doesn't exist.

SEE ALSO
     kqueue(2), free(9), knote(9), malloc(9)

HISTORY
     The kfilter_register() and kfilter_unregister() functions first appeared
     in NetBSD 2.0.

AUTHORS
     The kfilter_register() and kfilter_unregister() functions were
     implemented by Luke Mewburn <lukem@NetBSD.org>.

NetBSD 10.99                   October 31, 2020                   NetBSD 10.99