Linux uses aio_context_t for these syscalls, and it's the type provided by <linux/aio_abi.h>. Use it in the SYNOPSIS. libaio uses 'io_context_t', but that difference is already noted in NOTES. Signed-off-by: Alejandro Colomar <colomar.6.4.3@xxxxxxxxx> --- On 2020-11-01 19:02, Michael Kerrisk (man-pages) wrote: > On 11/1/20 2:55 PM, Alejandro Colomar wrote: >> Linux uses aio_context_t for these syscalls, >> and it's the type provided by <linux/aio_abi.h>. >> Use it in the SYNOPSIS. >> >> libaio uses 'io_context_t', but that difference is already noted in NOTES. > > Hey Alex, > > I think your patch is correct. But I see that I changed these prototypes > a few years back after reports from Jeff Moyer and Andi Kleen. The > situation is confusing. > > Could I ask you to rewrite this patch to add the following > immediately after the DESCRIPTION heading in each page: > > [[ > Note: this page describes the raw Linux system call interface. > the wrapper functions provided by _libaio_ use a differnt type for > the _ctx_id_ argument. See NOTES. > ]] > > This will save me or someone else in the future perhaps > reverting your fix! > > Thanks, > > Michael Sure :) Cheers, Alex man2/io_cancel.2 | 11 ++++++++++- man2/io_destroy.2 | 11 ++++++++++- man2/io_getevents.2 | 11 ++++++++++- man2/io_setup.2 | 11 ++++++++++- man2/io_submit.2 | 11 ++++++++++- 5 files changed, 50 insertions(+), 5 deletions(-) diff --git a/man2/io_cancel.2 b/man2/io_cancel.2 index 68129896e..6ce41bf7a 100644 --- a/man2/io_cancel.2 +++ b/man2/io_cancel.2 @@ -11,13 +11,22 @@ io_cancel \- cancel an outstanding asynchronous I/O operation .nf .BR "#include <linux/aio_abi.h>" " /* Defines needed types */" .PP -.BI "int io_cancel(io_context_t " ctx_id ", struct iocb *" iocb , +.BI "int io_cancel(aio_context_t " ctx_id ", struct iocb *" iocb , .BI " struct io_event *" result ); .fi .PP .IR Note : There is no glibc wrapper for this system call; see NOTES. .SH DESCRIPTION +.IR Note : +this page describes the raw Linux system call interface. +The wrapper functions provided by +.I libaio +use a different type for the +.I ctx_id +argument. +See NOTES. +.PP The .BR io_cancel () system call diff --git a/man2/io_destroy.2 b/man2/io_destroy.2 index e7cdf0203..fed749c49 100644 --- a/man2/io_destroy.2 +++ b/man2/io_destroy.2 @@ -11,12 +11,21 @@ io_destroy \- destroy an asynchronous I/O context .nf .BR "#include <linux/aio_abi.h>" " /* Defines needed types */" .PP -.BI "int io_destroy(io_context_t " ctx_id ); +.BI "int io_destroy(aio_context_t " ctx_id ); .fi .PP .IR Note : There is no glibc wrapper for this system call; see NOTES. .SH DESCRIPTION +.IR Note : +this page describes the raw Linux system call interface. +The wrapper functions provided by +.I libaio +use a different type for the +.I ctx_id +argument. +See NOTES. +.PP The .BR io_destroy () system call diff --git a/man2/io_getevents.2 b/man2/io_getevents.2 index cf616593b..2b13234c1 100644 --- a/man2/io_getevents.2 +++ b/man2/io_getevents.2 @@ -12,7 +12,7 @@ io_getevents \- read asynchronous I/O events from the completion queue .BR "#include <linux/aio_abi.h>" " /* Defines needed types */" .BR "#include <linux/time.h>" " /* Defines 'struct timespec' */" .PP -.BI "int io_getevents(io_context_t " ctx_id ", long " min_nr ", long " nr , +.BI "int io_getevents(aio_context_t " ctx_id ", long " min_nr ", long " nr , .BI " struct io_event *" events \ ", struct timespec *" timeout ); .fi @@ -20,6 +20,15 @@ io_getevents \- read asynchronous I/O events from the completion queue .IR Note : There is no glibc wrapper for this system call; see NOTES. .SH DESCRIPTION +.IR Note : +this page describes the raw Linux system call interface. +The wrapper functions provided by +.I libaio +use a different type for the +.I ctx_id +argument. +See NOTES. +.PP The .BR io_getevents () system call diff --git a/man2/io_setup.2 b/man2/io_setup.2 index 7b07b51c1..25ff61c65 100644 --- a/man2/io_setup.2 +++ b/man2/io_setup.2 @@ -11,12 +11,21 @@ io_setup \- create an asynchronous I/O context .nf .BR "#include <linux/aio_abi.h>" " /* Defines needed types */" .PP -.BI "int io_setup(unsigned " nr_events ", io_context_t *" ctx_idp ); +.BI "int io_setup(unsigned " nr_events ", aio_context_t *" ctx_idp ); .fi .PP .IR Note : There is no glibc wrapper for this system call; see NOTES. .SH DESCRIPTION +.IR Note : +this page describes the raw Linux system call interface. +The wrapper functions provided by +.I libaio +use a different type for the +.I ctx_idp +argument. +See NOTES. +.PP The .BR io_setup () system call diff --git a/man2/io_submit.2 b/man2/io_submit.2 index 7fbc9d7ae..36dc483e8 100644 --- a/man2/io_submit.2 +++ b/man2/io_submit.2 @@ -12,13 +12,22 @@ io_submit \- submit asynchronous I/O blocks for processing .nf .BR "#include <linux/aio_abi.h>" " /* Defines needed types */" .PP -.BI "int io_submit(io_context_t " ctx_id ", long " nr \ +.BI "int io_submit(aio_context_t " ctx_id ", long " nr \ ", struct iocb **" iocbpp ); .fi .PP .IR Note : There is no glibc wrapper for this system call; see NOTES. .SH DESCRIPTION +.IR Note : +this page describes the raw Linux system call interface. +The wrapper functions provided by +.I libaio +use a different type for the +.I ctx_id +argument. +See NOTES. +.PP The .BR io_submit () system call -- 2.28.0