vmsplice
splice user pages into a pipe
- Provided by: manpages-dev (Version: 4.15-1)
- Source: manpages
- Report a bug
splice user pages into a pipe
#define _GNU_SOURCE /* See feature_test_macros(7) */ #include <fcntl.h> #include <sys/uio.h>
ssize_t vmsplice(int fd, const struct iovec *iov,
unsigned long nr_segs, unsigned int flags);
The vmsplice() system call maps nr_segs ranges of user memory described by iov into a pipe. The file descriptor fd must refer to a pipe.
The pointer iov points to an array of iovec structures as defined in <sys/uio.h>:
struct iovec {
void *iov_base; /* Starting address */
size_t iov_len; /* Number of bytes */
};
The flags argument is a bit mask that is composed by ORing together zero or more of the following values:
Upon successful completion, vmsplice() returns the number of bytes transferred to the pipe. On error, vmsplice() returns -1 and errno is set to indicate the error.
The vmsplice() system call first appeared in Linux 2.6.17; library support was added to glibc in version 2.5.
This system call is Linux-specific.
vmsplice() follows the other vectorized read/write type functions when it comes to limitations on the number of segments being passed in. This limit is IOV_MAX as defined in <limits.h>. Currently, this limit is 1024.
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.