• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/fs/

Lines Matching refs:pipe

2  *  linux/fs/pipe.c
39 /* Drop the inode semaphore and wait for a pipe event, atomically */
40 void pipe_wait(struct pipe_inode_info *pipe)
48 prepare_to_wait(&pipe->wait, &wait, TASK_INTERRUPTIBLE);
49 if (pipe->inode)
50 mutex_unlock(&pipe->inode->i_mutex);
52 finish_wait(&pipe->wait, &wait);
53 if (pipe->inode)
54 mutex_lock(&pipe->inode->i_mutex);
150 static void anon_pipe_buf_release(struct pipe_inode_info *pipe,
160 if (page_count(page) == 1 && !pipe->tmp_page)
161 pipe->tmp_page = page;
166 void *generic_pipe_buf_map(struct pipe_inode_info *pipe,
177 void generic_pipe_buf_unmap(struct pipe_inode_info *pipe,
187 int generic_pipe_buf_steal(struct pipe_inode_info *pipe,
226 struct pipe_inode_info *pipe;
240 pipe = inode->i_pipe;
242 int bufs = pipe->nrbufs;
244 int curbuf = pipe->curbuf;
245 struct pipe_buffer *buf = pipe->bufs + curbuf;
254 error = ops->pin(pipe, buf);
263 addr = ops->map(pipe, buf, atomic);
265 ops->unmap(pipe, buf, addr);
283 ops->release(pipe, buf);
285 pipe->curbuf = curbuf;
286 pipe->nrbufs = --bufs;
295 if (!pipe->writers)
297 if (!pipe->waiting_writers) {
316 wake_up_interruptible_sync(&pipe->wait);
317 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
319 pipe_wait(pipe);
325 wake_up_interruptible_sync(&pipe->wait);
326 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
339 struct pipe_inode_info *pipe;
354 pipe = inode->i_pipe;
356 if (!pipe->readers) {
364 if (pipe->nrbufs && chars != 0) {
365 int lastbuf = (pipe->curbuf + pipe->nrbufs - 1) &
367 struct pipe_buffer *buf = pipe->bufs + lastbuf;
375 error = ops->pin(pipe, buf);
381 addr = ops->map(pipe, buf, atomic);
384 ops->unmap(pipe, buf, addr);
405 if (!pipe->readers) {
411 bufs = pipe->nrbufs;
413 int newbuf = (pipe->curbuf + bufs) & (PIPE_BUFFERS-1);
414 struct pipe_buffer *buf = pipe->bufs + newbuf;
415 struct page *page = pipe->tmp_page;
425 pipe->tmp_page = page;
462 pipe->nrbufs = ++bufs;
463 pipe->tmp_page = NULL;
482 wake_up_interruptible_sync(&pipe->wait);
483 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
486 pipe->waiting_writers++;
487 pipe_wait(pipe);
488 pipe->waiting_writers--;
493 wake_up_interruptible_sync(&pipe->wait);
494 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
519 struct pipe_inode_info *pipe;
525 pipe = inode->i_pipe;
527 buf = pipe->curbuf;
528 nrbufs = pipe->nrbufs;
530 count += pipe->bufs[buf].len;
547 struct pipe_inode_info *pipe = inode->i_pipe;
550 poll_wait(filp, &pipe->wait, wait);
553 nrbufs = pipe->nrbufs;
557 if (!pipe->writers && filp->f_version != pipe->w_counter)
567 if (!pipe->readers)
577 struct pipe_inode_info *pipe;
580 pipe = inode->i_pipe;
581 pipe->readers -= decr;
582 pipe->writers -= decw;
584 if (!pipe->readers && !pipe->writers) {
587 wake_up_interruptible_sync(&pipe->wait);
588 kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
589 kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
634 struct pipe_inode_info *pipe = inode->i_pipe;
639 retval = fasync_helper(fd, filp, on, &pipe->fasync_readers);
642 retval = fasync_helper(fd, filp, on, &pipe->fasync_writers);
793 struct pipe_inode_info *pipe;
795 pipe = kzalloc(sizeof(struct pipe_inode_info), GFP_KERNEL);
796 if (pipe) {
797 init_waitqueue_head(&pipe->wait);
798 pipe->r_counter = pipe->w_counter = 1;
799 pipe->inode = inode;
802 return pipe;
805 void __free_pipe_info(struct pipe_inode_info *pipe)
810 struct pipe_buffer *buf = pipe->bufs + i;
812 buf->ops->release(pipe, buf);
814 if (pipe->tmp_page)
815 __free_page(pipe->tmp_page);
816 kfree(pipe);
843 return dynamic_dname(dentry, buffer, buflen, "pipe:[%lu]",
855 struct pipe_inode_info *pipe;
860 pipe = alloc_pipe_info(inode);
861 if (!pipe)
863 inode->i_pipe = pipe;
865 pipe->readers = pipe->writers = 1;
946 /* Grab pipe from the writer */
1012 * d_name - pipe: will go nicely and kill the special-casing in procfs.
1018 return get_sb_pseudo(fs_type, "pipe:", NULL, PIPEFS_MAGIC, mnt);