---
name: "io_uring_wait_cqe_timeout"
section: "3"
platform: "linux"
package: "liburing"
version: "2.15-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/io_uring_wait_cqe_timeout"
---

# io\_uring\_wait\_cqe\_timeout(3)

wait for one io\_uring completion event with timeout

## NAME

io\_uring\_wait\_cqe\_timeout - wait for one io\_uring completion event with timeout

## SYNOPSIS

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

**int io\_uring\_wait\_cqe\_timeout(struct io\_uring \****ring***,**                               **struct io\_uring\_cqe \*\****cqe\_ptr***,**                               **struct \_\_kernel\_timespec \****ts***);**

## DESCRIPTION

The [**io\_uring\_wait\_cqe\_timeout**(3)](/io_uring_wait_cqe_timeout/3.md) function waits for one IO completion to be available from the queue belonging to the *ring* param, waiting for it if necessary or until the timeout *ts* expires. If an event is already available in the ring when invoked, no waiting will occur.

The *cqe\_ptr* param is filled in on success.

If *ts* is specified and an older kernel without **IORING\_FEAT\_EXT\_ARG** is used, the application does not need to call [**io\_uring\_submit**(3)](/io_uring_submit/3.md) before calling [**io\_uring\_wait\_cqes**(3)](/io_uring_wait_cqes/3.md). For newer kernels with that feature flag set, there is no implied submit when waiting for a request.

If *ts* is **NULL ,** then this behaves like [**io\_uring\_wait\_cqe**(3)](/io_uring_wait_cqe/3.md) in that it will wait forever for an event.

## RETURN VALUE

On success [**io\_uring\_wait\_cqe\_timeout**(3)](/io_uring_wait_cqe_timeout/3.md) returns 0 and the cqe\_ptr param is filled in. On failure it returns **-errno**. The return value indicates the result of waiting for a CQE, and it has no relation to the CQE result itself. If a timeout occurs, it will return **-ETIME**.

## SEE ALSO

[**io\_uring\_submit**(3)](/io_uring_submit/3.md), [**io\_uring\_wait\_cqes**(3)](/io_uring_wait_cqes/3.md), [**io\_uring\_wait\_cqe**(3)](/io_uring_wait_cqe/3.md)
