The current Linux POSIX AIO implementation is provided in user
space by glibc. This has a number of limitations, most notably
that maintaining multiple threads to perform I/O operations is
expensive and scales poorly. Work has been in progress for some
time on a kernel state-machine-based implementation of
asynchronous I/O (see io_submit(2), io_setup(2), io_cancel(2),
io_destroy(2), io_getevents(2)), but this implementation hasn't
yet matured to the point where the POSIX AIO implementation can
be completely reimplemented using the kernel system calls.