Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (2) — Plan9 4th Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

intro(2)

read(2)

READV(2)

NAME

readv, writev, preadv, pwritev − scatter/gather read and write

SYNOPSIS

­#include <u.h>
­#include <libc.h>

typedef
struct IOchunk
{
void∗addr;
ulonglen;
} IOchunk;

long readv(int fd, IOchunk ∗io, int nio)

long preadv(int fd, IOchunk ∗io, int nio, vlong off)

long writev(int fd, IOchunk ∗io, int nio)

long pwritev(int fd, IOchunk ∗io, int nio, vlong off)

DESCRIPTION

These functions supplement the standard read and write operations of read(2) with facilities for scatter/gather I/O. The set of I/O buffers is collected into an array of ­IOchunk structures passed as an argument. 

­Readv reads data from ­fd and returns the total number of bytes received.  The received data is stored in the successive ­nio elements of the ­IOchunk array, storing io[0].len bytes at io[0].addr, the next io[1].len at io[1].addr, and so on.  ­Preadv does the same, but implicitly seeks to I/O offset ­off by analogy with readv.

­Writev and ­pwritev are the analogous write routines. 

SOURCE

­/sys/src/libc/9sys/readv.c
­/sys/src/libc/9sys/writev.c

SEE ALSO

intro(2), read(2)

DIAGNOSTICS

These functions set errstr.

BUGS

The implementations use malloc(2) to build a single buffer for a standard call to ­read or write.  They are placeholders for possible future system calls. 

Plan 9  —  March 29, 2002

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026