diff options
Diffstat (limited to 'man2/readv.2')
| -rw-r--r-- | man2/readv.2 | 90 |
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 () |
