1 .TH vmsplice 2 2006-04-28 "Linux 2.6.17" "Linux Programmer's Manual"
3 vmsplice \- splice user pages into a pipe
5 .B #include <sys/uio.h>
7 .B long vmsplice(int fd, const struct iovec *iov, unsigned long nr_segs, unsigned ing flags);
16 described user memory into a pipe. The
17 .I fd must refer to a pipe.
28 void *iov_base; /* Starting address */
29 size_t iov_len; /* Number of bytes */
35 argument is a series of modifier flags. Only
41 , the but the scope is shared with
46 Attempt to move pages instead of copying.
52 More data will be coming in a subsequent splice.
55 The user pages are a gift to the kernel. The application may not reuse this
56 memory ever, or page cache and on disk data may differ. Data must also be
57 properly page aligned, both in memory and length.
60 Upon successful completion,
62 shall return the number of bytes spliced to the pipe. Otherwise, it shall
63 return a value of -1 and
65 shall be set to indicate an error.
71 either not valid, or doesn't refer to a pipe.
75 not valid, memory not aligned if
81 follows the other vectorized read/write type functions when it comes to
82 limitations on number of segments being passed in. This limit is
86 At the time of this writing, that limit is 1024.
91 system call first appeared in Linux-2.6.17.
98 Jens Axboe <axboe@suse.de>