12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- .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.
|