UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += rmdir-1
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += rename-2
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fsync-1
-UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fdatasync-1
\ No newline at end of file
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fdatasync-1
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += preadv-4
\ No newline at end of file
return pwrite(fd, buf, count, -1);
}
-ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset)
+UK_SYSCALL_R_DEFINE(ssize_t, preadv, int, fd, const struct iovec*, iov,
+ int, iovcnt, off_t, offset)
{
struct vfscore_file *fp;
size_t bytes;
error = fget(fd, &fp);
if (error)
- goto out_errno;
+ goto out_error;
error = sys_read(fp, iov, iovcnt, offset, &bytes);
fdrop(fp);
if (has_error(error, bytes))
- goto out_errno;
+ goto out_error;
return bytes;
- out_errno:
- errno = error;
- return -1;
+ out_error:
+ return -error;
}
LFS64(preadv);