Lines Matching defs:kn
426 struct knote *kn, *tmpkn;
582 SLIST_FOREACH_SAFE(kn, &wp->f_vnode->v_klist->vk_klist,
584 if (kn->kn_fop == &inotify_filtops
585 && ifd == kn->kn_kevent.udata) {
586 mutex_enter(&kn->kn_kq->kq_lock);
588 kn->kn_sfflags |= kev.fflags;
590 kn->kn_sfflags = kev.fflags;
592 kn->kn_sfflags;
593 mutex_exit(&kn->kn_kq->kq_lock);
699 inotify_filt_attach(struct knote *kn)
701 file_t *fp = kn->kn_obj;
715 kn->kn_filter = EVFILT_VNODE;
717 kn->kn_fop = &inotify_filtops;
718 kn->kn_hook = vp;
719 vn_knote_attach(vp, kn);
728 inotify_filt_detach(struct knote *kn)
730 struct vnode *vp = (struct vnode *)kn->kn_hook;
732 vn_knote_detach(vp, kn);
1046 inotify_filt_event(struct knote *kn, long hint)
1048 struct vnode *vp = (struct vnode *)kn->kn_hook;
1057 * 1. kn->kn_kevent.udata has already been trashed with a
1063 * lock as kn->kn_status.)
1065 mutex_enter(&kn->kn_kq->kq_lock);
1066 status = kn->kn_status;
1067 ifd = kn->kn_kevent.udata;
1068 mutex_exit(&kn->kn_kq->kq_lock);
1076 hint &= kn->kn_sfflags;
1094 (void)kevent_to_inotify(ifd, kn->kn_id, vp->v_type, kn->kn_flags,
1271 inotify_kqfilter(file_t *fp, struct knote *kn)
1275 KASSERT(fp == kn->kn_obj);
1277 if (kn->kn_filter != EVFILT_READ)
1280 kn->kn_fop = &inotify_read_filtops;
1282 selrecord_knote(&ifd->ifd_sel, kn);
1292 inotify_read_filt_detach(struct knote *kn)
1294 struct inotifyfd *ifd = ((file_t *)kn->kn_obj)->f_data;
1297 selremove_knote(&ifd->ifd_sel, kn);
1305 inotify_read_filt_event(struct knote *kn, long hint)
1307 struct inotifyfd *ifd = ((file_t *)kn->kn_obj)->f_data;
1314 kn->kn_data = ifd->ifd_qcount;
1317 return kn->kn_data > 0;