Skip to content
Snippets Groups Projects
Commit deb97159 authored by Christoph Hellwig's avatar Christoph Hellwig
Browse files

implement vectored I/O (readv/writev)

parent 5e90d3ab
No related branches found
No related tags found
No related merge requests found
...@@ -223,6 +223,47 @@ out_errno: ...@@ -223,6 +223,47 @@ out_errno:
return -1; return -1;
} }
ssize_t readv(int fd, const struct iovec *iov, int iovcnt)
{
struct task *t = main_task;
file_t fp;
size_t bytes;
int error;
error = EBADF;
if ((fp = task_getfp(t, fd)) == NULL)
goto out_errno;
error = sys_read(fp, (struct iovec *)iov, iovcnt, &bytes);
if (error)
goto out_errno;
return bytes;
out_errno:
errno = error;
return -1;
}
ssize_t writev(int fd, const struct iovec *iov, int iovcnt)
{
struct task *t = main_task;
file_t fp;
size_t bytes;
int error;
error = EBADF;
if ((fp = task_getfp(t, fd)) == NULL)
goto out_errno;
error = sys_write(fp, (struct iovec *)iov, iovcnt, &bytes);
if (error)
goto out_errno;
return bytes;
out_errno:
errno = error;
return -1;
}
#if 0 #if 0
static int static int
fs_ioctl(struct task *t, struct ioctl_msg *msg) fs_ioctl(struct task *t, struct ioctl_msg *msg)
......
...@@ -207,16 +207,6 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout) ...@@ -207,16 +207,6 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
UNIMPLEMENTED("poll"); UNIMPLEMENTED("poll");
} }
ssize_t readv(int fd, const struct iovec *iov, int iovcnt)
{
UNIMPLEMENTED("readv");
}
ssize_t writev(int fd, const struct iovec *iov, int iovcnt)
{
UNIMPLEMENTED("writev");
}
ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset) ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset)
{ {
UNIMPLEMENTED("preadv"); UNIMPLEMENTED("preadv");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment