Lines Matching refs:wpipe

260 static int pipepair_alloc(struct pipe **rpipe, struct pipe **wpipe);
395 struct pipe *rpipe, *wpipe; in pipe() local
398 error = pipepair_alloc(&rpipe, &wpipe); in pipe()
423 fp_set_data(wf, wpipe); in pipe()
425 rpipe->pipe_peer = wpipe; in pipe()
426 wpipe->pipe_peer = rpipe; in pipe()
439 mac_pipe_set_label(wpipe, mac_pipe_label(rpipe)); in pipe()
451 pipeclose(wpipe); in pipe()
615 struct pipe *wpipe = &pp->pp_wpipe; in pipepair_alloc() local
625 wpipe->pipe_mtxp = &pp->pp_mtx; in pipepair_alloc()
630 pipe_touch(wpipe, PIPE_ATIME | PIPE_MTIME | PIPE_CTIME); in pipepair_alloc()
646 *wp_out = wpipe; in pipepair_alloc()
917 struct pipe *wpipe, *rpipe; in pipe_write() local
928 wpipe = rpipe->pipe_peer; in pipe_write()
933 if (wpipe == NULL || (wpipe->pipe_state & (PIPE_DRAIN | PIPE_EOF)) || in pipe_write()
939 error = mac_pipe_check_write(kauth_cred_get(), wpipe); in pipe_write()
945 ++wpipe->pipe_busy; in pipe_write()
956 if (wpipe->pipe_buffer.buffer == 0 || ( in pipe_write()
957 (unsigned)orig_resid > wpipe->pipe_buffer.size - wpipe->pipe_buffer.cnt && in pipe_write()
959 pipe_size = choose_pipespace(wpipe->pipe_buffer.size, wpipe->pipe_buffer.cnt + orig_resid); in pipe_write()
966 if ((error = pipeio_lock(wpipe, 1)) == 0) { in pipe_write()
967 if (wpipe->pipe_buffer.cnt == 0) { in pipe_write()
968 error = pipespace(wpipe, pipe_size); in pipe_write()
970 error = expand_pipespace(wpipe, pipe_size); in pipe_write()
973 pipeio_unlock(wpipe); in pipe_write()
976 if (wpipe->pipe_buffer.buffer == 0) { in pipe_write()
985 --wpipe->pipe_busy; in pipe_write()
986 if ((wpipe->pipe_busy == 0) && in pipe_write()
987 (wpipe->pipe_state & PIPE_WANT)) { in pipe_write()
988 wpipe->pipe_state &= ~(PIPE_WANT | PIPE_WANTR); in pipe_write()
989 wakeup(wpipe); in pipe_write()
998 space = wpipe->pipe_buffer.size - wpipe->pipe_buffer.cnt; in pipe_write()
1006 if ((error = pipeio_lock(wpipe, 1)) == 0) { in pipe_write()
1010 if ((wpipe->pipe_state & (PIPE_DRAIN | PIPE_EOF)) || in pipe_write()
1012 pipeio_unlock(wpipe); in pipe_write()
1021 if (space > (int)(wpipe->pipe_buffer.size - in pipe_write()
1022 wpipe->pipe_buffer.cnt)) { in pipe_write()
1023 pipeio_unlock(wpipe); in pipe_write()
1047 segsize = wpipe->pipe_buffer.size - in pipe_write()
1048 wpipe->pipe_buffer.in; in pipe_write()
1056 pipe_check_bounds_panic(wpipe); in pipe_write()
1057 error = uiomove(&wpipe->pipe_buffer.buffer[wpipe->pipe_buffer.in], in pipe_write()
1067 if (wpipe->pipe_buffer.in + segsize != in pipe_write()
1068 wpipe->pipe_buffer.size) { in pipe_write()
1074 pipe_check_bounds_panic(wpipe); in pipe_write()
1076 &wpipe->pipe_buffer.buffer[0], in pipe_write()
1084 wpipe->pipe_buffer.in += size; in pipe_write()
1085 if (wpipe->pipe_buffer.in > in pipe_write()
1086 wpipe->pipe_buffer.size) { in pipe_write()
1087 if (wpipe->pipe_buffer.in != in pipe_write()
1089 wpipe->pipe_buffer.size) { in pipe_write()
1093 wpipe->pipe_buffer.in = (unsigned int)(size - in pipe_write()
1097 wpipe->pipe_buffer.cnt += size; in pipe_write()
1098 if (wpipe->pipe_buffer.cnt > in pipe_write()
1099 wpipe->pipe_buffer.size) { in pipe_write()
1103 pipeio_unlock(wpipe); in pipe_write()
1112 if (wpipe->pipe_state & PIPE_WANTR) { in pipe_write()
1113 wpipe->pipe_state &= ~PIPE_WANTR; in pipe_write()
1114 wakeup(wpipe); in pipe_write()
1121 if ((wpipe->pipe_state & (PIPE_DRAIN | PIPE_EOF)) || in pipe_write()
1140 pipeselwakeup(wpipe, wpipe); in pipe_write()
1142 wpipe->pipe_state |= PIPE_WANTW; in pipe_write()
1144 error = msleep(wpipe, PIPE_MTX(wpipe), PRIBIO | PCATCH, "pipewr", 0); in pipe_write()
1151 --wpipe->pipe_busy; in pipe_write()
1153 if ((wpipe->pipe_busy == 0) && (wpipe->pipe_state & PIPE_WANT)) { in pipe_write()
1154 wpipe->pipe_state &= ~(PIPE_WANT | PIPE_WANTR); in pipe_write()
1155 wakeup(wpipe); in pipe_write()
1157 if (wpipe->pipe_buffer.cnt > 0) { in pipe_write()
1162 if (wpipe->pipe_state & PIPE_WANTR) { in pipe_write()
1163 wpipe->pipe_state &= ~PIPE_WANTR; in pipe_write()
1164 wakeup(wpipe); in pipe_write()
1169 pipeselwakeup(wpipe, wpipe); in pipe_write()
1175 pipe_touch(wpipe, PIPE_MTIME | PIPE_CTIME); in pipe_write()
1246 struct pipe *wpipe; in pipe_select() local
1255 wpipe = rpipe->pipe_peer; in pipe_select()
1282 if (wpipe) { in pipe_select()
1283 wpipe->pipe_state |= PIPE_WSELECT; in pipe_select()
1285 if (wpipe == NULL || (wpipe->pipe_state & (PIPE_DRAIN | PIPE_EOF)) || in pipe_select()
1287 (((wpipe->pipe_state & PIPE_DIRECTW) == 0) && in pipe_select()
1288 (MAX_PIPESIZE(wpipe) - wpipe->pipe_buffer.cnt) >= PIPE_BUF)) { in pipe_select()
1291 selrecord(vfs_context_proc(ctx), &wpipe->pipe_sel, wql); in pipe_select()
1406 struct pipe *wpipe = rpipe->pipe_peer; in filt_pipe_draincommon() local
1409 (wpipe == NULL) || (wpipe->pipe_state & (PIPE_DRAIN | PIPE_EOF))) { in filt_pipe_draincommon()