.\" Updated 2012-05-08, Akihiro MOTOKI <amotoki@gmail.com>
.\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
.\"
-.TH READV 2 2010\-11\-17 Linux "Linux Programmer's Manual"
+.TH READV 2 2014\-10\-15 Linux "Linux Programmer's Manual"
.SH 名前
readv, writev, preadv, pwritev \- 複数のバッファへの読み書きを行なう
.SH 書式
\fBpreadv\fP() と \fBpwritev\fP() は Linux 2.6.30 で初めて登場した。
ライブラリによるサポートは glibc 2.10 で追加された。
.SH 準拠
+.\" Linux libc5 used \fIsize_t\fP as the type of the \fIiovcnt\fP argument,
+.\" and \fIint\fP as the return type.
.\" The readv/writev system calls were buggy before Linux 1.3.40.
.\" (Says release.libc.)
-\fBreadv\fP(), \fBwritev\fP():
-4.4BSD (これらのシステムコールは 4.2BSD で最初に現われた)、POSIX.1\-2001。
-Linux libc5 では、 \fIiovcnt\fP 引き数の型として \fIsize_t\fP を、
-返り値の型として \fIint\fP を使用していた。
+\fBreadv\fP(), \fBwritev\fP(): 4.4BSD (これらのシステムコールは 4.2BSD で初めて登場した),
+POSIX.1\-2001.
\fBpreadv\fP(), \fBpwritev\fP(): 非標準だが、最近の BSD にも存在する。
.SH 注意
-.SS "Linux での注意"
+.SS "C ライブラリとカーネル ABI の違い"
POSIX.1\-2001 では、 \fIiov\fP で渡すことができる要素数に上限を設ける実装が認められている。 実装は、
\fI<limits.h>\fP の \fBIOV_MAX\fP を定義することや、実行時に \fIsysconf(_SC_IOV_MAX)\fP
の返り値経由で、この上限を広告することができる。 Linux では、この仕組みにより広告される上限は 1024 であり、
で指定された全ての要素を格納できる大きさの一時バッファを割り当て、 \fBread\fP(2) を呼び出す際にそのバッファを渡し、 そのバッファのデータを
\fIiov\fP の各要素の \fIiov_base\fP フィールドが指定する場所にコピーしてから、 そのバッファを解放する。 \fBwritev\fP()
のラッパー関数も、同じように一時バッファを使って \fBwrite\fP(2) を呼び出す。
+
+The raw \fBpreadv\fP() and \fBpwritev\fP() system calls have call signatures
+that differ slightly from that of the corresponding GNU C library wrapper
+functions shown in the SYNOPSIS. The final argument, \fIoffset\fP, is unpacked
+by the wrapper functions into two arguments in the system calls:
+
+\fB unsigned long \fP\fIpos_l\fP\fB, unsigned long \fP\fIpos\fP
+
+These arguments contain, respectively, the low order and high order 32 bits
+of \fIoffset\fP.
.SH バグ
ファイルディスクリプタに対する操作を行う \fBreadv\fP() や \fBwritev\fP() と、
標準入出力ライブラリの関数をごちゃまぜにして呼ぶのはお薦めしない。
.SH 関連項目
\fBpread\fP(2), \fBread\fP(2), \fBwrite\fP(2)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.68 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.76 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。