Files
vlibc/src/uio/writev.c
T

22 lines
700 B
C

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <sys/uio.h>
#include "../internal/syscall.h"
/*
* writev: gather write — the kernel writes the iovcnt buffers of iov in
* order and returns the total byte count. The iovec array is passed straight
* to SYS_writev: no argument validation here, the kernel applies its own
* rules (iovcnt 0..IOV_MAX, iov NULL with iovcnt > 0 faults as EFAULT). The
* raw result goes through syscall_ret(), which returns the count on success
* and -1 with errno set on error; errno is untouched on success.
*/
ssize_t
writev(int fd, const struct iovec *iov, int iovcnt)
{
return syscall_ret(__syscall3(SYS_writev, fd, (long)iov, (long)iovcnt));
}