diff options
| author | Alejandro Colomar <alx@kernel.org> | 2023-03-17 17:08:01 +0100 |
|---|---|---|
| committer | Alejandro Colomar <alx@kernel.org> | 2023-03-30 15:14:55 +0200 |
| commit | 4131356cdab8d37fc395ca5466a0401c8573380c (patch) | |
| tree | 8c4c6f1c3172358b735b481cbbfdd9cc04b00ed9 /man2/readv.2 | |
| parent | fd00f831b52d61a91d59cb3b46182869145d9700 (diff) | |
| download | man-pages-4131356cdab8.tar.gz | |
man*/, man-pages.7: VERSIONS, STANDARDS, HISTORY: Reorganize sections
- Add a new HISTORY section that covers the history of an API, both
regarding implementations and regarding old standards. This was
previously covered in VERSIONS, and in some cases in STANDARDS.
- Repurpose VERSIONS to cover differing implementations in _current_
systems.
- STANDARDS is reduced to only cover current versions of standards.
That basically means only C11 (C99 has been superseeded by C11; C17
is just a bugfix of C11, so not really a new version), and
POSIX.1-2008 (*-2001 was superseeded by *-2008; *-2017 was just a
bugfix for *-2008). The section also mentions for example 'Linux',
'GNU' or 'BSD' when a non-standard API is Linux- or GNU-only or if
it's (de-facto) standard in the BSDs.
- In some cases content that should go into one of these sections was
in NOTES. Move it from there to where it corresponds.
- In the SYNOPSIS, I added [[deprecated]] in some functions that I
found are deprecated by the relevant standards.
- A few other related changes...
Cc: Oskari Pirhonen <xxc3ncoredxx@gmail.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
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 () |
