aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pipe_fs_i.h
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2007-06-04 03:59:47 -0400
committerJens Axboe <jens.axboe@oracle.com>2007-07-10 02:04:14 -0400
commitd6b29d7cee064f28ca097e906de7453541351095 (patch)
tree16775787df194cb45b4ac712da1c240f48cae96e /include/linux/pipe_fs_i.h
parentebf9909343392c929d9943c04f421cd42e03b530 (diff)
splice: divorce the splice structure/function definitions from the pipe header
We need to move even more stuff into the header so that folks can use the splice_to_pipe() implementation instead of open-coding a lot of pipe knowledge (see relay implementation), so move to our own header file finally. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include/linux/pipe_fs_i.h')
-rw-r--r--include/linux/pipe_fs_i.h41
1 files changed, 0 insertions, 41 deletions
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h
index f277a9cdb50d..7ba228d52f58 100644
--- a/include/linux/pipe_fs_i.h
+++ b/include/linux/pipe_fs_i.h
@@ -71,45 +71,4 @@ void generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
71int generic_pipe_buf_pin(struct pipe_inode_info *, struct pipe_buffer *); 71int generic_pipe_buf_pin(struct pipe_inode_info *, struct pipe_buffer *);
72int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *); 72int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *);
73 73
74/*
75 * splice is tied to pipes as a transport (at least for now), so we'll just
76 * add the splice flags here.
77 */
78#define SPLICE_F_MOVE (0x01) /* move pages instead of copying */
79#define SPLICE_F_NONBLOCK (0x02) /* don't block on the pipe splicing (but */
80 /* we may still block on the fd we splice */
81 /* from/to, of course */
82#define SPLICE_F_MORE (0x04) /* expect more data */
83#define SPLICE_F_GIFT (0x08) /* pages passed in are a gift */
84
85/*
86 * Passed to the actors
87 */
88struct splice_desc {
89 unsigned int len, total_len; /* current and remaining length */
90 unsigned int flags; /* splice flags */
91 /*
92 * actor() private data
93 */
94 union {
95 void __user *userptr; /* memory to write to */
96 struct file *file; /* file to read/write */
97 void *data; /* cookie */
98 } u;
99 loff_t pos; /* file position */
100};
101
102typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *,
103 struct splice_desc *);
104typedef int (splice_direct_actor)(struct pipe_inode_info *,
105 struct splice_desc *);
106
107extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *,
108 loff_t *, size_t, unsigned int,
109 splice_actor *);
110extern ssize_t __splice_from_pipe(struct pipe_inode_info *,
111 struct splice_desc *, splice_actor *);
112extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *,
113 splice_direct_actor *);
114
115#endif 74#endif