diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2007-06-12 15:17:17 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2007-07-10 02:04:12 -0400 |
commit | c66ab6fa705e1b2887a6d9246b798bdc526839e2 (patch) | |
tree | 764ece0ee44f937012dfaa1657709da548ed5b16 /include/linux | |
parent | 71780f59e127bb281a9302d430495ca9586c14e7 (diff) |
splice: abstract out actor data
For direct splicing (or private splicing), the output may not be a file.
So abstract out the handling into a specified actor function and put
the data in the splice_desc structure earlier, so we can build on top
of that.
This is the first step in better splice handling for drivers, and also
for implementing vmsplice _to_ user memory.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/pipe_fs_i.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h index c8884f971228..883ba9b78d3f 100644 --- a/include/linux/pipe_fs_i.h +++ b/include/linux/pipe_fs_i.h | |||
@@ -94,13 +94,15 @@ struct splice_desc { | |||
94 | 94 | ||
95 | typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *, | 95 | typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *, |
96 | struct splice_desc *); | 96 | struct splice_desc *); |
97 | typedef int (splice_direct_actor)(struct pipe_inode_info *, | ||
98 | struct splice_desc *); | ||
97 | 99 | ||
98 | extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *, | 100 | extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *, |
99 | loff_t *, size_t, unsigned int, | 101 | loff_t *, size_t, unsigned int, |
100 | splice_actor *); | 102 | splice_actor *); |
101 | 103 | extern ssize_t __splice_from_pipe(struct pipe_inode_info *, | |
102 | extern ssize_t __splice_from_pipe(struct pipe_inode_info *, struct file *, | 104 | struct splice_desc *, splice_actor *); |
103 | loff_t *, size_t, unsigned int, | 105 | extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, |
104 | splice_actor *); | 106 | splice_direct_actor *); |
105 | 107 | ||
106 | #endif | 108 | #endif |