---
name: "aio_suspend"
section: "2"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/aio_suspend"
---

# aio\_suspend(2)

suspend until asynchronous I/O operations or timeout complete (REALTIME)

## NAME

**aio\_suspend** – suspend until asynchronous I/O operations or timeout complete (REALTIME)

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<aio.h\>**

*int*\

**aio\_suspend**(*const struct aiocb \*const iocbs\[\]*, *int niocb*, *const struct timespec \*timeout*);

## DESCRIPTION

The **aio\_suspend**() system call suspends the calling process until at least one of the specified asynchronous I/O requests have completed, a signal is delivered, or the *timeout* has passed.

The *iocbs* argument is an array of *niocb* pointers to asynchronous I/O requests. Array members containing null pointers will be silently ignored.

If *timeout* is not a null pointer, it specifies a maximum interval to suspend. If *timeout* is a null pointer, the suspend blocks indefinitely. To effect a poll, the *timeout* should point to a zero-value timespec structure.

## RETURN VALUES

If one or more of the specified asynchronous I/O requests have completed, **aio\_suspend**() returns 0. Otherwise it returns -1 and sets *errno* to indicate the error, as enumerated below.

## ERRORS

The **aio\_suspend**() system call will fail if:

- \[EAGAIN\]

  the *timeout* expired before any I/O requests completed.

- \[EINVAL\]

  The *iocbs* argument contains more asynchronous I/O requests than the *vfs.aio.max\_aio\_queue\_per\_proc* [sysctl(8)](/sysctl/8.md) variable, or at least one of the requests is not valid.

- \[EINTR\]

  the suspend was interrupted by a signal.

## SEE ALSO

[aio\_cancel(2)](/aio_cancel/2.md), [aio\_error(2)](/aio_error/2.md), [aio\_return(2)](/aio_return/2.md), [aio\_waitcomplete(2)](/aio_waitcomplete/2.md), [aio\_write(2)](/aio_write/2.md), [aio(4)](/aio/4.md)

## STANDARDS

The **aio\_suspend**() system call is expected to conform to the IEEE Std 1003.1 (“POSIX.1”) standard.

## HISTORY

The **aio\_suspend**() system call first appeared in FreeBSD 3.0.

## AUTHORS

This manual page was written by Wes Peters ⟨*wes@softweyr.com*⟩.
