Lines Matching refs:rpipe
296 struct pipe *rpipe, *wpipe; in pipe_zone_ctor() local
307 rpipe = &pp->pp_rpipe; in pipe_zone_ctor()
308 bzero(rpipe, sizeof(*rpipe)); in pipe_zone_ctor()
309 pipe_timestamp(&rpipe->pipe_ctime); in pipe_zone_ctor()
310 rpipe->pipe_atime = rpipe->pipe_mtime = rpipe->pipe_ctime; in pipe_zone_ctor()
314 wpipe->pipe_ctime = rpipe->pipe_ctime; in pipe_zone_ctor()
315 wpipe->pipe_atime = wpipe->pipe_mtime = rpipe->pipe_ctime; in pipe_zone_ctor()
317 rpipe->pipe_peer = wpipe; in pipe_zone_ctor()
318 rpipe->pipe_pair = pp; in pipe_zone_ctor()
319 wpipe->pipe_peer = rpipe; in pipe_zone_ctor()
327 rpipe->pipe_present = PIPE_ACTIVE; in pipe_zone_ctor()
369 struct pipe *rpipe, *wpipe; in pipe_paircreate() local
382 rpipe = &pp->pp_rpipe; in pipe_paircreate()
386 knlist_init_mtx(&rpipe->pipe_sel.si_note, PIPE_MTX(rpipe)); in pipe_paircreate()
393 error = pipe_create(rpipe, true); in pipe_paircreate()
407 pipe_free_kmem(rpipe); in pipe_paircreate()
411 rpipe->pipe_state |= PIPE_DIRECTOK; in pipe_paircreate()
416 knlist_destroy(&rpipe->pipe_sel.si_note); in pipe_paircreate()
477 struct pipe *rpipe, *wpipe; in kern_pipe() local
484 rpipe = &pp->pp_rpipe; in kern_pipe()
488 pipeclose(rpipe); in kern_pipe()
505 finit(rf, fflags, DTYPE_PIPE, rpipe, &pipeops); in kern_pipe()
747 struct pipe *rpipe; in pipe_read() local
752 rpipe = fp->f_data; in pipe_read()
766 if ((atomic_load_short(&rpipe->pipe_state) & PIPE_EOF) == 0 && in pipe_read()
767 atomic_load_int(&rpipe->pipe_buffer.cnt) == 0 && in pipe_read()
768 atomic_load_int(&rpipe->pipe_pages.cnt) == 0) in pipe_read()
772 PIPE_LOCK(rpipe); in pipe_read()
773 ++rpipe->pipe_busy; in pipe_read()
774 error = pipelock(rpipe, 1); in pipe_read()
779 error = mac_pipe_check_read(active_cred, rpipe->pipe_pair); in pipe_read()
784 if ((rpipe->pipe_state & PIPE_DIRECTW) == 0 && in pipe_read()
785 rpipe->pipe_buffer.size > SMALL_PIPE_SIZE && in pipe_read()
786 rpipe->pipe_buffer.cnt <= SMALL_PIPE_SIZE && in pipe_read()
788 PIPE_UNLOCK(rpipe); in pipe_read()
789 pipespace(rpipe, SMALL_PIPE_SIZE); in pipe_read()
790 PIPE_LOCK(rpipe); in pipe_read()
798 if (rpipe->pipe_buffer.cnt > 0) { in pipe_read()
799 size = rpipe->pipe_buffer.size - rpipe->pipe_buffer.out; in pipe_read()
800 if (size > rpipe->pipe_buffer.cnt) in pipe_read()
801 size = rpipe->pipe_buffer.cnt; in pipe_read()
805 PIPE_UNLOCK(rpipe); in pipe_read()
807 &rpipe->pipe_buffer.buffer[rpipe->pipe_buffer.out], in pipe_read()
809 PIPE_LOCK(rpipe); in pipe_read()
813 rpipe->pipe_buffer.out += size; in pipe_read()
814 if (rpipe->pipe_buffer.out >= rpipe->pipe_buffer.size) in pipe_read()
815 rpipe->pipe_buffer.out = 0; in pipe_read()
817 rpipe->pipe_buffer.cnt -= size; in pipe_read()
824 if (rpipe->pipe_buffer.cnt == 0) { in pipe_read()
825 rpipe->pipe_buffer.in = 0; in pipe_read()
826 rpipe->pipe_buffer.out = 0; in pipe_read()
833 } else if ((size = rpipe->pipe_pages.cnt) != 0) { in pipe_read()
836 PIPE_UNLOCK(rpipe); in pipe_read()
837 error = uiomove_fromphys(rpipe->pipe_pages.ms, in pipe_read()
838 rpipe->pipe_pages.pos, size, uio); in pipe_read()
839 PIPE_LOCK(rpipe); in pipe_read()
843 rpipe->pipe_pages.pos += size; in pipe_read()
844 rpipe->pipe_pages.cnt -= size; in pipe_read()
845 if (rpipe->pipe_pages.cnt == 0) { in pipe_read()
846 rpipe->pipe_state &= ~PIPE_WANTW; in pipe_read()
847 wakeup(rpipe); in pipe_read()
855 if (rpipe->pipe_state & PIPE_EOF) in pipe_read()
861 if (rpipe->pipe_state & PIPE_WANTW) { in pipe_read()
862 rpipe->pipe_state &= ~PIPE_WANTW; in pipe_read()
863 wakeup(rpipe); in pipe_read()
877 pipeunlock(rpipe); in pipe_read()
886 rpipe->pipe_state |= PIPE_WANTR; in pipe_read()
887 if ((error = msleep(rpipe, PIPE_MTX(rpipe), in pipe_read()
890 error = pipelock(rpipe, 1); in pipe_read()
899 pipeunlock(rpipe); in pipe_read()
903 pipe_timestamp(&rpipe->pipe_atime); in pipe_read()
905 --rpipe->pipe_busy; in pipe_read()
910 if ((rpipe->pipe_busy == 0) && (rpipe->pipe_state & PIPE_WANT)) { in pipe_read()
911 rpipe->pipe_state &= ~(PIPE_WANT|PIPE_WANTW); in pipe_read()
912 wakeup(rpipe); in pipe_read()
913 } else if (rpipe->pipe_buffer.cnt < MINPIPESIZE) { in pipe_read()
917 if (rpipe->pipe_state & PIPE_WANTW) { in pipe_read()
918 rpipe->pipe_state &= ~PIPE_WANTW; in pipe_read()
919 wakeup(rpipe); in pipe_read()
928 rpipe->pipe_buffer.size - rpipe->pipe_buffer.cnt >= PIPE_BUF) in pipe_read()
929 pipeselwakeup(rpipe); in pipe_read()
931 PIPE_UNLOCK(rpipe); in pipe_read()
1138 struct pipe *wpipe, *rpipe; in pipe_write() local
1142 rpipe = fp->f_data; in pipe_write()
1143 wpipe = PIPE_PEER(rpipe); in pipe_write()
1144 PIPE_LOCK(rpipe); in pipe_write()
1147 PIPE_UNLOCK(rpipe); in pipe_write()
1156 PIPE_UNLOCK(rpipe); in pipe_write()
1163 PIPE_UNLOCK(rpipe); in pipe_write()
1242 error = msleep(wpipe, PIPE_MTX(rpipe), PRIBIO | PCATCH, in pipe_write()
1282 PIPE_UNLOCK(rpipe); in pipe_write()
1285 PIPE_LOCK(rpipe); in pipe_write()
1297 PIPE_UNLOCK(rpipe); in pipe_write()
1301 PIPE_LOCK(rpipe); in pipe_write()
1347 error = msleep(wpipe, PIPE_MTX(rpipe), in pipe_write()
1392 PIPE_UNLOCK(rpipe); in pipe_write()
1492 struct pipe *rpipe; in pipe_poll() local
1500 rpipe = fp->f_data; in pipe_poll()
1501 wpipe = PIPE_PEER(rpipe); in pipe_poll()
1502 PIPE_LOCK(rpipe); in pipe_poll()
1504 error = mac_pipe_check_poll(active_cred, rpipe->pipe_pair); in pipe_poll()
1509 if (rpipe->pipe_pages.cnt > 0 || rpipe->pipe_buffer.cnt > 0) in pipe_poll()
1522 if (rpipe->pipe_type & PIPE_TYPE_NAMED && fp->f_flag & FREAD && levents && in pipe_poll()
1523 fp->f_pipegen == rpipe->pipe_wgen) in pipe_poll()
1527 if (rpipe->pipe_state & PIPE_EOF) { in pipe_poll()
1542 selrecord(td, &rpipe->pipe_sel); in pipe_poll()
1543 if (SEL_WAITING(&rpipe->pipe_sel)) in pipe_poll()
1544 rpipe->pipe_state |= PIPE_SEL; in pipe_poll()
1557 PIPE_UNLOCK(rpipe); in pipe_poll()
1842 struct pipe *rpipe = kn->kn_hook; in filt_piperead() local
1844 PIPE_LOCK_ASSERT(rpipe, MA_OWNED); in filt_piperead()
1845 kn->kn_data = rpipe->pipe_buffer.cnt; in filt_piperead()
1847 kn->kn_data = rpipe->pipe_pages.cnt; in filt_piperead()
1849 if ((rpipe->pipe_state & PIPE_EOF) != 0 && in filt_piperead()
1850 ((rpipe->pipe_type & PIPE_TYPE_NAMED) == 0 || in filt_piperead()
1851 fp->f_pipegen != rpipe->pipe_wgen)) { in filt_piperead()