io\_uring\_submit\_and\_wait(3) liburing Manual io\_uring\_submit\_and\_wait(3)

# [NAME](#NAME)

io\_uring\_submit\_and\_wait - submit requests to the submission queue and wait for completion

# [SYNOPSIS](#SYNOPSIS)

```
#include <liburing.h>
```

```
int io_uring_submit_and_wait(struct io_uring *ring,
                             unsigned wait_nr);
```

# [DESCRIPTION](#DESCRIPTION)

The [**io\_uring\_submit\_and\_wait**(3)](/man/os/liburing/io_uring_submit_and_wait.3) function submits the next requests from the submission queue belonging to the *ring* and waits for *wait\_nr* completion events.

After the caller retrieves a submission queue entry (SQE) with [**io\_uring\_get\_sqe**(3)](/man/os/liburing/io_uring_get_sqe.3) and prepares the SQE, it can be submitted with [**io\_uring\_submit\_and\_wait**(3)](/man/os/liburing/io_uring_submit_and_wait.3)**.**

Ideally used with a ring setup with **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.

# [RETURN VALUE](#RETURN_VALUE)

On success [**io\_uring\_submit\_and\_wait**(3)](/man/os/liburing/io_uring_submit_and_wait.3) returns the number of submitted submission queue entries. On failure it returns **-errno**.

# [SEE ALSO](#SEE_ALSO)

[**io\_uring\_queue\_init\_params**(3)](/man/os/liburing/io_uring_queue_init_params.3), [**io\_uring\_get\_sqe**(3)](/man/os/liburing/io_uring_get_sqe.3), [**io\_uring\_submit**(3)](/man/os/liburing/io_uring_submit.3), [**io\_uring\_submit\_and\_wait\_timeout**(3)](/man/os/liburing/io_uring_submit_and_wait_timeout.3)

November 15, 2021 liburing-2.1

---

Document: io_uring_submit_and_wait(3) from liburing 2.15-r4 (Chainguard OS)
Source: https://github.com/axboe/liburing.git
