From 73b40546d59c6bebd782aeaa15a6bdc8109485bd Mon Sep 17 00:00:00 2001 From: ptrcnull Date: Wed, 13 Jul 2022 04:58:08 +0200 Subject: uio: add pwritev64v2 and preadv64v2 --- Makefile | 1 + libgcompat/uio.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 libgcompat/uio.c diff --git a/Makefile b/Makefile index 426513f..641249b 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,7 @@ LIBGCOMPAT_SRC = \ libgcompat/syslog.c \ libgcompat/time.c \ libgcompat/ucontext.c \ + libgcompat/uio.c \ libgcompat/unistd.c \ libgcompat/utmp.c \ libgcompat/version.c \ diff --git a/libgcompat/uio.c b/libgcompat/uio.c new file mode 100644 index 0000000..797cb3a --- /dev/null +++ b/libgcompat/uio.c @@ -0,0 +1,32 @@ +#include +#include /* iovec, pwritev, preadv */ +#include /* errno */ +#include /* 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); +} -- cgit v1.2.3-70-g09d2