Lines Matching refs:kn
171 static void filt_pipedetach(struct knote *kn);
172 static void filt_pipedetach_notsup(struct knote *kn);
173 static int filt_pipenotsup(struct knote *kn, long hint);
174 static int filt_piperead(struct knote *kn, long hint);
175 static int filt_pipewrite(struct knote *kn, long hint);
1713 pipe_kqfilter(struct file *fp, struct knote *kn)
1722 if ((kn->kn_filter == EVFILT_READ) && !(fp->f_flag & FREAD)) {
1723 kn->kn_fop = &pipe_nfiltops;
1726 if ((kn->kn_filter == EVFILT_WRITE) && !(fp->f_flag & FWRITE)) {
1727 kn->kn_fop = &pipe_nfiltops;
1732 switch (kn->kn_filter) {
1734 kn->kn_fop = &pipe_rfiltops;
1737 kn->kn_fop = &pipe_wfiltops;
1750 kn->kn_hook = cpipe;
1751 knlist_add(&cpipe->pipe_sel.si_note, kn, 1);
1757 filt_pipedetach(struct knote *kn)
1759 struct pipe *cpipe = kn->kn_hook;
1762 knlist_remove(&cpipe->pipe_sel.si_note, kn, 1);
1768 filt_piperead(struct knote *kn, long hint)
1770 struct pipe *rpipe = kn->kn_hook;
1775 kn->kn_data = rpipe->pipe_buffer.cnt;
1776 if ((kn->kn_data == 0) && (rpipe->pipe_state & PIPE_DIRECTW))
1777 kn->kn_data = rpipe->pipe_map.cnt;
1782 kn->kn_flags |= EV_EOF;
1785 ret = kn->kn_data > 0;
1791 filt_pipewrite(struct knote *kn, long hint)
1795 wpipe = kn->kn_hook;
1799 kn->kn_data = 0;
1800 kn->kn_flags |= EV_EOF;
1803 kn->kn_data = (wpipe->pipe_buffer.size > 0) ?
1806 kn->kn_data = 0;
1808 return (kn->kn_data >= PIPE_BUF);
1812 filt_pipedetach_notsup(struct knote *kn)
1818 filt_pipenotsup(struct knote *kn, long hint)