Lines Matching refs:pipe
64 * "normal" pipe buffering is done. If the buffer is between PIPE_MINDIRECT
71 * is returned back to the user-mode side. In that case, the pipe code
86 * SMALL_PIPE_SIZE, rather than PIPE_SIZE. Big pipe creation will be limited
118 #include <sys/pipe.h>
203 * Default pipe buffer size(s), this can be kind-of large now because pipe
204 * space is pageable. The pipe code will try to maintain locality of
241 static void pipeclose(struct pipe *cpipe);
242 static void pipe_free_kmem(struct pipe *cpipe);
243 static int pipe_create(struct pipe **cpipep);
244 static void pipeselwakeup(struct pipe *cpipe, struct pipe *spipe);
245 static __inline int pipelock(struct pipe *cpipe, int catch);
246 static __inline void pipeunlock(struct pipe *cpipe);
249 static int pipe_build_write_buffer(struct pipe *wpipe, struct uio *uio);
250 static void pipe_destroy_write_buffer(struct pipe *wpipe);
251 static int pipe_direct_write(struct pipe *wpipe, struct uio *uio);
252 static void pipe_clone_write_buffer(struct pipe *wpipe);
255 extern int postpipeevent(struct pipe *, int);
256 extern void evpipefree(struct pipe *cpipe);
259 static int pipespace(struct pipe *cpipe, int size);
272 pipe_zone = (zone_t)zinit(sizeof(struct pipe), 8192 * sizeof(struct pipe), 4096, "pipe zone");
275 * allocate lock group attribute and group for pipe mutexes
278 pipe_mtx_grp = lck_grp_alloc_init("pipe", pipe_mtx_grp_attr);
281 * allocate the lock attribute for pipe mutexes
292 pipe_touch(struct pipe *tpipe, int touch)
317 * The pipe system call for the DTYPE_PIPE type of pipes
322 pipe(proc_t p, __unused struct pipe_args *uap, register_t *retval)
325 struct pipe *rpipe, *wpipe;
343 * Reduce to 1/4th pipe size if we're over our global max.
394 * struct pipe represents a pipe endpoint. The MAC label is shared
422 pipe_stat(struct pipe *cpipe, void *ub, int isstat64)
490 * address of this pipe's struct pipe. This number may be recycled
517 * address of this pipe's struct pipe. This number may be recycled
537 * Allocate kva for pipe circular buffer, the space is pageable
538 * This routine will 'realloc' the size of a pipe safely, if it fails
543 pipespace(struct pipe *cpipe, int size)
567 * initialize and allocate VM and memory for pipe
570 pipe_create(struct pipe **cpipep)
572 struct pipe *cpipe;
574 cpipe = (struct pipe *)zalloc(pipe_zone);
585 /* Initial times are all the time of creation of the pipe */
593 * lock a pipe for I/O, blocking other access
596 pipelock(struct pipe *cpipe, int catch)
614 * unlock a pipe I/O lock
617 pipeunlock(struct pipe *cpipe)
628 pipeselwakeup(struct pipe *cpipe, struct pipe *spipe)
652 struct pipe *rpipe = (struct pipe *)fp->f_data;
672 * normal pipe buffer receive
697 * If there is no more to read in the pipe, reset
755 * Unlock the pipe buffer for our remaining processing.
823 struct pipe *wpipe;
901 struct pipe *wpipe;
933 struct pipe *wpipe;
954 * This implements the pipe buffer write mechanism. Note that only
955 * a direct write OR a normal pipe write can be pending at any given time.
956 * If there are any characters in the pipe buffer, the direct write will
958 * the pipe buffer. Then the direct mapping write is set-up.
962 struct pipe *wpipe;
1065 struct pipe *wpipe, *rpipe;
1067 rpipe = (struct pipe *)fp->f_data;
1073 * detect loss of pipe read side, issue SIGPIPE if lost.
1094 * 'pipe ends'... most pipes are half-duplex with the writes targeting
1097 * Reduce to 1/4th pipe size if we're over our global max.
1106 * If it is advantageous to resize the pipe buffer, do
1123 * need to do initial allocation or resizing of pipe
1183 * pipe buffer. We break out if a signal occurs or the
1244 * and free space in pipe buffer.
1254 * pipe buffer. If first segment to transfer
1278 panic("Expected pipe buffer "
1370 /* Update modification, status change (# of bytes in pipe) times */
1386 struct pipe *mpipe = (struct pipe *)fp->f_data;
1448 struct pipe *rpipe = (struct pipe *)fp->f_data;
1449 struct pipe *wpipe;
1452 if (rpipe == NULL || rpipe == (struct pipe *)-1)
1510 struct pipe *cpipe;
1513 cpipe = (struct pipe *)fg->fg_data;
1524 pipe_free_kmem(struct pipe *cpipe)
1553 * shutdown the pipe
1556 pipeclose(struct pipe *cpipe)
1558 struct pipe *ppipe;
1584 * Free the shared pipe label only after the two ends are disconnected.
1636 struct pipe *cpipe;
1638 cpipe = (struct pipe *)kn->kn_fp->f_data;
1663 * other end of pipe has been closed
1686 struct pipe *cpipe = (struct pipe *)kn->kn_fp->f_data;
1708 struct pipe *rpipe = (struct pipe *)kn->kn_fp->f_data;
1709 struct pipe *wpipe;
1714 * world directly and do not currently hold the pipe mutex...
1747 struct pipe *rpipe = (struct pipe *)kn->kn_fp->f_data;
1748 struct pipe *wpipe;
1752 * world directly and do not currently hold the pipe mutex...
1771 kn->kn_data = 1; /* unwritten pipe is ready for write */
1785 fill_pipeinfo(struct pipe * cpipe, struct pipe_info * pinfo)