git: 9front

ref: d60372d82b088b20e2fb086acb08b35c4b764fac
dir: /sys/man/2/readv/

View raw version
.TH READV 2
.SH NAME
readv, writev, preadv, pwritev \- scatter/gather read and write
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.nf
.ft L
typedef
struct IOchunk
{
	void		*addr;
	ulong	len;
} IOchunk;
.fi
.PP
.B
long readv(int fd, IOchunk *io, int nio)
.PP
.B
long preadv(int fd, IOchunk *io, int nio, vlong off)
.PP
.B
long writev(int fd, IOchunk *io, int nio)
.PP
.B
long pwritev(int fd, IOchunk *io, int nio, vlong off)
.SH DESCRIPTION
These functions supplement the standard read and write operations of
.IR read (2)
with facilities for scatter/gather I/O.
The set of I/O buffers is collected into an array of
.B IOchunk
structures passed as an argument.
.PP
.I Readv
reads data from
.I fd
and returns the total number of bytes received.
The received data is stored in the successive
.I nio
elements of the
.B IOchunk
array, storing
.IB io [0].len
bytes at
.IB io [0].addr\f1,
the next
.IB io [1].len
at
.IB io [1].addr\f1,
and so on.
.I Preadv
does the same, but implicitly seeks to I/O offset
.I off
by analogy with
.IR readv .
.PP
.I Writev
and
.I pwritev
are the analogous write routines.
.SH SOURCE
.B /sys/src/libc/9sys/readv.c
.br
.B /sys/src/libc/9sys/writev.c
.SH SEE ALSO
.IR intro (2),
.IR read (2)
.SH DIAGNOSTICS
These functions set
.IR errstr .
.SH BUGS
The implementations use
.IR malloc (2)
to build a single buffer for a standard call to
.B read
or
.BR write .
They are placeholders for possible future system calls.