kfilter
struct kfilter *kfilter;
kfilter = kfilter_byfilter(kev->filter);
if (kfilter == NULL || kfilter->filtops == NULL) {
if (kfilter->filtops->f_flags & FILTEROP_ISFD) {
kn->kn_fop = kfilter->filtops;
kn->kn_kfilter = kfilter;
atomic_inc_uint(&kfilter->refcnt);
const struct kfilter *kfilter;
kfilter = kfilter_byfilter(km->filter);
if (kfilter != NULL) {
strlcpy(name, kfilter->name, KFILTER_MAXNAME);
kfilter = kfilter_byname(name);
if (kfilter != NULL)
km->filter = kfilter->filter;
static struct kfilter sys_kfilters[] = {
static struct kfilter *user_kfilters; /* array */
static struct kfilter *
static struct kfilter *
static struct kfilter *
struct kfilter *kfilter;
if ((kfilter = kfilter_byname_sys(name)) != NULL)
return kfilter;
static struct kfilter *
struct kfilter *kfilter;
kfilter = &sys_kfilters[filter];
kfilter = &user_kfilters[filter - EVFILT_SYSCOUNT];
KASSERT(kfilter->filter == filter); /* sanity check! */
return (kfilter);
struct kfilter *kfilter;
kfilter = &user_kfilters[i];
if (kfilter->name == NULL) {
len = user_kfiltermaxc * sizeof(*kfilter);
kfilter = kmem_alloc(len, KM_SLEEP);
memset((char *)kfilter + user_kfiltersz, 0, len - user_kfiltersz);
memcpy(kfilter, user_kfilters, user_kfiltersz);
user_kfilters = kfilter;
kfilter = &user_kfilters[user_kfilterc++];
kfilter->name = kmem_strdupsize(name, &kfilter->namelen, KM_SLEEP);
kfilter->filter = (kfilter - user_kfilters) + EVFILT_SYSCOUNT;
kfilter->filtops = kmem_alloc(sizeof(*filtops), KM_SLEEP);
memcpy(__UNCONST(kfilter->filtops), filtops, sizeof(*filtops));
*retfilter = kfilter->filter;
struct kfilter *kfilter;
kfilter = kfilter_byname_user(name);
if (kfilter == NULL) {
if (kfilter->refcnt != 0) {
kmem_free(__UNCONST(kfilter->name), kfilter->namelen);
kfilter->name = NULL; /* mark as `not implemented' */
if (kfilter->filtops != NULL) {
kmem_free(__UNCONST(kfilter->filtops),
sizeof(*kfilter->filtops));
kfilter->filtops = NULL; /* mark as `not implemented' */
struct kfilter;
struct kfilter *kn_kfilter;