---
name: "io_queue_init"
section: "2"
platform: "linux"
package: "libaio-dev"
version: "0.3.110-3"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/io_queue_init"
---

# io\_queue\_init(2)

Initialize asynchronous io state machine

## NAME

io\_queue\_init - Initialize asynchronous io state machine

## SYNOPSIS

```
#include <errno.h>

#include <libaio.h>

int io_queue_init(int maxevents, io_context_t *ctx);

```

## DESCRIPTION

**io\_queue\_init** Attempts to create an aio context capable of receiving at least  *maxevents* events.  *ctx* must point to an aio context that already exists and must be initialized to  *0* before the call. If the operation is successful, \*cxtp is filled with the resulting handle.

## RETURN VALUES

On success, **io\_queue\_init** 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**

  *maxevents* is \<= *0* or *ctx* is an invalid memory location.

- **ENOSYS**

  Not implemented.

- **EAGAIN**

  *maxevents \> max\_aio\_reqs* where max\_aio\_reqs is a tunable value.

## 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\_release**(3)](/io_queue_release/3.md), [**io\_queue\_run**(3)](/io_queue_run/3.md), [**io\_queue\_wait**(3)](/io_queue_wait/3.md), [**io\_set\_callback**(3)](/io_set_callback/3.md), [**io\_submit**(3)](/io_submit/3.md), [**errno**(3)](/errno/3.md).
