io_uring_enter.2: clarify min_complete

min_complete means slightly different things depending on how the ring
was setup.

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Jeff Moyer
2019-02-14 18:20:33 -05:00
committed by Jens Axboe
parent 1a3020e7b4
commit 10a57a0823

View File

@@ -37,21 +37,28 @@ the
bit is set in bit is set in
.I flags, .I flags,
then the system call will attempt to wait for then the system call will attempt to wait for
.I min_events
I/O completions. Note that it is valid to specify
.B IORING_ENTER_GETEVENTS
in
.I flags
and pass in
.I min_complete .I min_complete
as 0 at the same time. This allows the kernel to return already event completions before returning. If the io_uring instance was
completed events without waiting. This is useful only when the configured for polling, by specifying
io_uring instance was configured for polling (by specifying the
.B IORING_SETUP_IOPOLL .B IORING_SETUP_IOPOLL
flag in in the call to
.BR io_uring_setup (2),
then min_complete has a slightly different meaning. Passing a value
of 0 instructs the kernel to return any events which are already complete,
without blocking. If
.I min_complete
is a non-zero value, the kernel will still return immediately if any
completion events are available. If no event completions are
available, then the call will poll either until one or more
completions become available, or until the process has exceeded its
scheduler time slice.
Note that, for interrupt driven I/O (where
.B IORING_SETUP_IOPOLL
was not specified in the call to
.BR io_uring_setup (2)), .BR io_uring_setup (2)),
as for IRQ driven I/O, the application can just check the completion an application may check the completion queue for event completions
queue without entering the kernel. without entering the kernel at all.
.PP .PP
When the system call returns that a certain amount of SQEs have been When the system call returns that a certain amount of SQEs have been
consumed and submitted, it's safe to reuse SQE entries in the ring. This is consumed and submitted, it's safe to reuse SQE entries in the ring. This is