| .\" Copyright (C) 2021 Stefan Roesch <shr@fb.com> |
| .\" |
| .\" SPDX-License-Identifier: LGPL-2.0-or-later |
| .\" |
| .TH io_uring_wait_cqes 3 "November 15, 2021" "liburing-2.1" "liburing Manual" |
| .SH NAME |
| io_uring_wait_cqes \- wait for one or more io_uring completion events |
| .SH SYNOPSIS |
| .nf |
| .B #include <liburing.h> |
| .PP |
| .BI "int io_uring_wait_cqes(struct io_uring *" ring "," |
| .BI " struct io_uring_cqe **" cqe_ptr "," |
| .BI " unsigned " wait_nr "," |
| .BI " struct __kernel_timespec *" ts "," |
| .BI " sigset_t *" sigmask "); |
| .fi |
| .SH DESCRIPTION |
| .PP |
| The |
| .BR io_uring_wait_cqes (3) |
| function returns |
| .I wait_nr |
| IO completions from the queue belonging to the |
| .I ring |
| param, waiting for them if necessary or until the timeout |
| .I ts |
| expires. |
| .PP |
| The |
| .I sigmask |
| specifies the set of signals to block. If set, it is equivalent to atomically |
| executing the following calls: |
| .PP |
| .in +4n |
| .EX |
| sigset_t origmask; |
| |
| pthread_sigmask(SIG_SETMASK, &sigmask, &origmask); |
| ret = io_uring_wait_cqes(ring, cqe, wait_nr, ts, NULL); |
| pthread_sigmask(SIG_SETMASK, &origmask, NULL); |
| .EE |
| .in |
| .PP |
| The |
| .I cqe_ptr |
| param is filled in on success with the first CQE. Callers of this function |
| should use |
| .BR io_uring_for_each_cqe (3) |
| to iterate all available CQEs. |
| |
| If |
| .I ts |
| is specified and an older kernel without |
| .B IORING_FEAT_EXT_ARG |
| is used, the application does not need to call |
| .BR io_uring_submit (3) |
| before calling |
| .BR io_uring_wait_cqes (3). |
| For newer kernels with that feature flag set, there is no implied submit |
| when waiting for a request. |
| |
| If |
| .I ts |
| is |
| .B NULL , |
| then this behaves like |
| .BR io_uring_wait_cqe (3) |
| in that it will wait forever for an event. |
| |
| .SH RETURN VALUE |
| On success |
| .BR io_uring_wait_cqes (3) |
| returns 0 and the cqe_ptr param is filled in. On failure it returns |
| .BR -errno . |
| .SH SEE ALSO |
| .BR io_uring_submit (3), |
| .BR io_uring_for_each_cqe (3), |
| .BR io_uring_wait_cqe_timeout (3), |
| .BR io_uring_wait_cqe (3) |