.\" Copyright (C) 2021 Stefan Roesch .\" .\" SPDX-License-Identifier: LGPL-2.0-or-later .\" .TH io_uring_submit_and_wait_timeout 3 "November 15, 2021" "liburing-2.1" "liburing Manual" .SH NAME io_uring_submit_and_wait_timeout \- submit requests to the submission queue and wait for the completion with timeout .SH SYNOPSIS .nf .B #include .PP .BI "int io_uring_submit_and_wait_timeout(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_submit_and_wait_timeout (3) function submits the next requests from the submission queue belonging to the .I ring and waits for .I wait_nr completion events, or until the timeout .I ts expires. The completion events are stored in the .I cqe_ptr array. .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_submit_and_wait_timeout(ring, cqe, wait_nr, ts, NULL); pthread_sigmask(SIG_SETMASK, &origmask, NULL); .EE .in .PP After the caller retrieves a submission queue entry (SQE) with .BR io_uring_get_sqe (3) and prepares the SQE, it can be submitted with .BR io_uring_submit_and_wait_timeout (3) . Ideally used with a ring setup with .BR IORING_SETUP_SINGLE_ISSUER | IORING_SETUP_DEFER_TASKRUN as that will greatly reduce the number of context switches that an application will see waiting on multiple requests. .SH RETURN VALUE On success .BR io_uring_submit_and_wait_timeout (3) returns the number of submitted submission queue entries. On failure it returns .BR -errno . Note that in earlier versions of the liburing library, the return value was 0 on success. The most common failure case is not receiving a completion within the specified timeout, .B -ETIME is returned in this case. .SH SEE ALSO .BR io_uring_queue_init_params (3), .BR io_uring_get_sqe (3), .BR io_uring_submit (3), .BR io_uring_submit_and_wait (3), .BR io_uring_wait_cqe (3)