aboutsummaryrefslogtreecommitdiffstats
path: root/man2/readv.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/readv.2')
-rw-r--r--man2/readv.290
1 files changed, 50 insertions, 40 deletions
diff --git a/man2/readv.2 b/man2/readv.2
index 76a94edd5c..b80d7ff028 100644
--- a/man2/readv.2
+++ b/man2/readv.2
@@ -287,21 +287,44 @@ is less than zero or greater than the permitted maximum.
.B EOPNOTSUPP
An unknown flag is specified in \fIflags\fP.
.SH VERSIONS
+.SS C library/kernel differences
+The raw
.BR preadv ()
and
.BR pwritev ()
-first appeared in Linux 2.6.30; library support was added in glibc 2.10.
+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,
+.IR offset ,
+is unpacked by the wrapper functions into two arguments in the system calls:
+.PP
+.BI " unsigned long " pos_l ", unsigned long " pos
.PP
+These arguments contain, respectively, the low order and high order 32 bits of
+.IR offset .
+.SH STANDARDS
+.TP
+.BR readv ()
+.TQ
+.BR writev ()
+POSIX.1-2008.
+.TP
+.BR preadv ()
+.TQ
+.BR pwritev ()
+BSD.
+.TP
.BR preadv2 ()
-and
+.TQ
.BR pwritev2 ()
-first appeared in Linux 4.6.
-Library support was added in glibc 2.26.
-.SH STANDARDS
-.BR readv (),
-.BR writev ():
-POSIX.1-2001, POSIX.1-2008,
-4.4BSD (these system calls first appeared in 4.2BSD).
+Linux.
+.SH HISTORY
+.TP
+.BR readv ()
+.TQ
+.BR writev ()
+POSIX.1-2001,
+4.4BSD (first appeared in 4.2BSD).
.\" 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.
@@ -309,40 +332,13 @@ POSIX.1-2001, POSIX.1-2008,
.PP
.BR preadv (),
.BR pwritev ():
-nonstandard, but present also on the modern BSDs.
+Linux 2.6.30,
+glibc 2.10.
.PP
.BR preadv2 (),
.BR pwritev2 ():
-nonstandard Linux extension.
-.SH NOTES
-POSIX.1 allows an implementation to place a limit on
-the number of items that can be passed in
-.IR iov .
-An implementation can advertise its limit by defining
-.B IOV_MAX
-in
-.I <limits.h>
-or at run time via the return value from
-.IR sysconf(_SC_IOV_MAX) .
-On modern Linux systems, the limit is 1024.
-Back in Linux 2.0 days, this limit was 16.
-.\"
-.\"
-.SS C library/kernel differences
-The raw
-.BR preadv ()
-and
-.BR pwritev ()
-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,
-.IR offset ,
-is unpacked by the wrapper functions into two arguments in the system calls:
-.PP
-.BI " unsigned long " pos_l ", unsigned long " pos
-.PP
-These arguments contain, respectively, the low order and high order 32 bits of
-.IR offset .
+Linux 4.6,
+glibc 2.26.
.SS Historical C library/kernel differences
To deal with the fact that
.B IOV_MAX
@@ -380,6 +376,20 @@ that the system is running a Linux kernel older than Linux 2.6.18
And since glibc 2.20
(which requires a minimum of Linux 2.6.32),
the glibc wrapper functions always just directly invoke the system calls.
+.SH NOTES
+POSIX.1 allows an implementation to place a limit on
+the number of items that can be passed in
+.IR iov .
+An implementation can advertise its limit by defining
+.B IOV_MAX
+in
+.I <limits.h>
+or at run time via the return value from
+.IR sysconf(_SC_IOV_MAX) .
+On modern Linux systems, the limit is 1024.
+Back in Linux 2.0 days, this limit was 16.
+.\"
+.\"
.SH BUGS
Linux 5.9 and Linux 5.10 have a bug where
.BR preadv2 ()