NAME
    Linux::AIO - linux-specific aio implemented using clone

SYNOPSIS
     use Linux::AIO;

DESCRIPTION
    This module implements asynchroneous i/o using the means available to
    linux - clone. It does not hook into the POSIX aio_* functions because
    linux does not yet support these in the kernel. Instead, a number of
    threads are started that execute your read/writes and signal their
    completion.

    Linux::AIO::min_parallel($nthreads)
        Set the minimum number of AIO threads to $nthreads. You *have* to
        call this function with a positive number at leats once, otherwise
        no threads will be started and you aio-operations will seem to hang.

    aio_read($fh,$offset,$length, $data,$dataoffset,$callback)
    aio_write($fh,$offset,$length, $data,$dataoffset,$callback)
        Reads or writes "length" bytes from the specified "fh" and "offset"
        into the scalar given by "data" and offset "dataoffset" and calls
        the callback without the actual number of bytes read (or undef on
        error).

    $fileno = Linux::AIO::poll_fileno
        Return the request result pipe filehandle. This filehandle must be
        polled for reading. If the pipe becomes readable you have to call
        "poll_cb".

    Linux::AIO::poll_cb
        Process all outstanding events on the result pipe. You have to call
        this regularly. Returns the number of events processed.

        You can use Event to multiplex, e.g.:

           Event->io(fd => Linux::AIO::poll_fileno,
                     poll => 'r', async => 1,
                     cb => \&Linux::AIO::poll_cb );

    Linux::AIO::nreqs
        Returns the number of requests currently outstanding.

BUGS
    This module has not yet been extensively tested. Watch out!

SEE ALSO
    the Coro manpage.

AUTHOR
     Marc Lehmann <pcg@goof.com>
     http://www.goof.com/pcg/marc/

