---
name: "io_queue_wait"
section: "3"
platform: "linux"
package: "libaio"
version: "0.3.113-5"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/io_queue_wait/3"
---

# io\_queue\_wait(3)

Wait for io requests to complete

## NAME

io\_queue\_wait - Wait for io requests to complete

## SYNOPSIS

```
#include <errno.h>

#include <libaio.h>

int io_queue_wait(io_context_t ctx, const struct timespec *timeout);
```

## DESCRIPTION

**io\_queue\_wait**() attempts to read an event from the completion queue for the aio\_context specified by *ctx*.

## RETURN VALUES

May return **0** if no events are available and the timeout specified by when has elapsed, where when == NULL specifies an infinite *timeout*.  Note that the *timeout* pointed to by when is relative and will be updated if not NULL and the operation blocks.  Will fail with -**ENOSYS** if not implemented.

## RETURN VALUES

On success, **io\_queue\_wait**() returns **0**. Otherwise, -error is return, where error is one of the Exxx values defined in the Errors section.

## ERRORS

- **EFAULT**

  *iocbs* referenced data outside of the program's accessible address space.

- **EINVAL**

  *ctx* refers to an uninitialized aio context, the *iocb* pointed to by *iocbs* contains an improperly initialized iocb.

- **ENOSYS**

  Not implemented.

## SEE ALSO

[**io**(3)](/io/3.md), [**io\_cancel**(3)](/io_cancel/3.md), [**io\_fsync**(3)](/io_fsync/3.md), [**io\_getevents**(3)](/io_getevents/3.md), [**io\_prep\_fsync**(3)](/io_prep_fsync/3.md), [**io\_prep\_pread**(3)](/io_prep_pread/3.md), [**io\_prep\_pwrite**(3)](/io_prep_pwrite/3.md), [**io\_queue\_init**(3)](/io_queue_init/3.md), [**io\_queue\_release**(3)](/io_queue_release/3.md), [**io\_queue\_run**(3)](/io_queue_run/3.md), [**io\_set\_callback**(3)](/io_set_callback/3.md), [**io\_submit**(3)](/io_submit/3.md), [**errno**(3)](/errno/3.md).
