summaryrefslogblamecommitdiff
path: root/libgcompat/uio.c
blob: 797cb3aae7b44deaf6de38b748783275ebe12d60 (plain) (tree)































                                                                                     
#include <sys/syscall.h>
#include <sys/uio.h>		/* iovec, pwritev, preadv */
#include <errno.h>		/* errno */
#include <unistd.h>		/* syscall */

ssize_t pwritev64v2(int fd, const struct iovec *iov, int count, off_t ofs, int flags)
{
	if (flags != 0) {
		errno = ENOTSUP;
		return -1;
	}

	if (ofs == -1) {
		return writev(fd, iov, count);
	}

	return syscall(__NR_pwritev2, fd, iov, count, ofs);
}

ssize_t preadv64v2(int fd, const struct iovec *iov, int count, off_t ofs, int flags)
{
	if (flags != 0) {
		errno = ENOTSUP;
		return -1;
	}

	if (ofs == -1) {
		return readv(fd, iov, count);
	}

	return syscall(__NR_preadv2, fd, iov, count, ofs);
}