[PATCH] splice-in: accept block device as input
[splice.git] / vmsplice.2
CommitLineData
f758e908
JA
1.TH vmsplice 2 2006-04-28 "Linux 2.6.17" "Linux Programmer's Manual"
2.SH NAME
3vmsplice \- splice user pages into a pipe
4.SH SYNOPSIS
5.B #include <sys/uio.h>
6
7.B long vmsplice(int fd, const struct iovec *iov, unsigned long nr_segs, unsigned ing flags);
8
9.SH DESCRIPTION
8d2541ed
JA
10The
11.BR vmsplice ()
12function maps
13.I nr_segs
14range(s) of
15.I iov
16described user memory into a pipe. The
17.I fd must refer to a pipe.
f758e908 18
8d2541ed
JA
19The pointer
20.I iov
21points to an array of
22.I struct iovec
23entries as defined in
24.IR <sys/uio.h> :
f758e908
JA
25
26.nf
27 struct iovec {
28 void *iov_base; /* Starting address */
29 size_t iov_len; /* Number of bytes */
30 };
31.fi
32
8d2541ed
JA
33The
34.I flags
35argument is a series of modifier flags. Only
f758e908
JA
36.B SPLICE_F_NONBLOCK
37and
38.B SPLICE_F_GIFT
8d2541ed
JA
39really apply to
40.BR vmsplice ()
41, the but the scope is shared with
db093e53 42.BR splice (2).
f758e908
JA
43
44.TP 1.9i
45.B SPLICE_F_MOVE
db093e53
JA
46See
47.BR splice (2).
f758e908
JA
48.TP
49.B SPLICE_F_NONBLOCK
50Do not block on io.
51.TP
52.B SPLICE_F_MORE
53More data will be coming in a subsequent splice.
54.TP
55.B SPLICE_F_GIFT
56The user pages are a gift to the kernel. The application may not reuse this
57memory ever, or page cache and on disk data may differ. Data must also be
8d2541ed 58properly page aligned, both in memory and length.
f758e908
JA
59
60.SH RETURN VALUE
8d2541ed
JA
61Upon successful completion,
62.BR vmsplice ()
63shall return the number of bytes spliced to the pipe. Otherwise, it shall
64return a value of -1 and
65.I errno
f758e908
JA
66shall be set to indicate an error.
67
68.SH ERRORS
8d2541ed
JA
69.TP 1.1i
70.B EBADF
71.I fd
72either not valid, or doesn't refer to a pipe.
73.TP
74.B EINVAL
75.I nr_segs
76not valid, memory not aligned if
77.I SPLICE_F_GIFT
f758e908
JA
78set.
79
80.SH NOTES
8d2541ed
JA
81.BR vmsplice ()
82follows the other vectorized read/write type functions when it comes to
83limitations on number of segments being passed in. This limit is
84.B IOV_MAX
85as defined in
86.IR <limits.h> .
87At the time of this writing, that limit is 1024.
88
5d79a465
JA
89.SH HISTORY
90The
91.BR vmsplice (2)
92system call first appeared in Linux-2.6.17.
93
8d2541ed
JA
94.SH SEE ALSO
95.BR splice (2),
96.BR tee (2)
f758e908
JA
97
98.SH AUTHORS
99Jens Axboe <axboe@suse.de>