io_setup(2) System Calls Manual io_setup(2) NAME io_setup - create an asynchronous I/O context LIBRARY Standard C library (libc, -lc) SYNOPSIS #include #include /* Definition of SYS_* constants */ #include long syscall(SYS_io_setup, unsigned int n, aio_context_t *ctx_idp); DESCRIPTION Note: you probably want to use the io_setup(3) wrapper function provided by libaio; see VERSIONS. The io_setup() system call creates an asynchronous I/O context suitable for concurrently processing n operations. The ctx_idp argument must not point to an AIO context that already exists, and must be initialized to 0 prior to the call. On successful creation of the AIO context, *ctx_idp is filled in with the resulting handle. RETURN VALUE On success, io_setup() returns 0. On error, -1 is returned, and errno is set to indicate the error. ERRORS EAGAIN The specified n exceeds the limit of available events, as defined in /proc/sys/fs/aio-max-nr (see proc_sys_fs(5)). EFAULT An invalid pointer is passed for ctx_idp. EINVAL *ctx_idp is not initialized to 0. EINVAL The specified n exceeds internal limits. n should be greater than 0. ENOMEM Insufficient kernel resources are available. ENOSYS io_setup() is not implemented on this architecture. VERSIONS libaio provides a wrapper function with the same name, but different prototype and return value. You probably want to use that wrapper. STANDARDS Linux. HISTORY Linux 2.5. SEE ALSO io_cancel(2), io_destroy(2), io_getevents(2), io_submit(2), io_setup(3), aio(7) Linux man-pages 6.19 2026-04-11 io_setup(2)