diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2007-06-04 03:59:47 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2007-07-10 02:04:14 -0400 |
commit | d6b29d7cee064f28ca097e906de7453541351095 (patch) | |
tree | 16775787df194cb45b4ac712da1c240f48cae96e /include/linux/pipe_fs_i.h | |
parent | ebf9909343392c929d9943c04f421cd42e03b530 (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.h | 41 |
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 *); | |||
71 | int generic_pipe_buf_pin(struct pipe_inode_info *, struct pipe_buffer *); | 71 | int generic_pipe_buf_pin(struct pipe_inode_info *, struct pipe_buffer *); |
72 | int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *); | 72 | int 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 | */ | ||
88 | struct 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 | |||
102 | typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *, | ||
103 | struct splice_desc *); | ||
104 | typedef int (splice_direct_actor)(struct pipe_inode_info *, | ||
105 | struct splice_desc *); | ||
106 | |||
107 | extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *, | ||
108 | loff_t *, size_t, unsigned int, | ||
109 | splice_actor *); | ||
110 | extern ssize_t __splice_from_pipe(struct pipe_inode_info *, | ||
111 | struct splice_desc *, splice_actor *); | ||
112 | extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, | ||
113 | splice_direct_actor *); | ||
114 | |||
115 | #endif | 74 | #endif |