---
name: "aio_suspend"
section: "2"
platform: "macos"
package: "xnu"
version: "12377.121.6"
release: "macOS 26.5"
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 list\[\]*, *int nent*, *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 *list* argument is an array of *nent* pointers to asynchronous I/O requests.  Array members containing NULL will be silently ignored.

If *timeout* is a non-nil pointer, it specifies a maximum interval to suspend. If *timeout* is a nil 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 of the listed I/O requests completed.

- \[EINTR\]

  The suspend was interrupted by a signal.

- \[EINVAL\]

  The *list* argument contains more than AIO\_LISTIO\_MAX asynchronous I/O requests, or at least one of the requests is not valid.

## SEE ALSO

[aio\_cancel(2)](/aio_cancel/2.md), [aio\_error(2)](/aio_error/2.md), [aio\_return(2)](/aio_return/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⟩.
