=head1 NAME Linux::AIO - linux-specific aio implemented using clone =head1 SYNOPSIS use Linux::AIO; =head1 DESCRIPTION =over 4 =cut package Linux::AIO; use base 'Exporter'; BEGIN { $VERSION = 0.001; @EXPORT = qw(aio_read aio_write); @EXPORT_OK = qw(poll_fileno poll_cb min_parallel max_parallel nreqs); require XSLoader; XSLoader::load Linux::AIO, $VERSION; } =item Linux::AIO::min_parallel($nthreads) Set the minimum number of AIO threads to $nthreads. =cut =item aio_read($fh,$offset,$length, $data,$dataoffset,$callback) aio_write($fh,$offset,$length, $data,$dataoffset,$callback) Reads or writes C bytes from the specified C and C into the scalar given by C and offset C and calls the callback without the actual number of bytes read (or undef on error). =item $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 C. =item Linux::AIO::poll_cb Process all outstanding events on the result pipe. You have to call this regularly. Returns the number of events processed. =item Linux::AIO::nreqs Returns the number of requests currently outstanding. =cut END { max_parallel 0; } 1; =back =head1 BUGS This module has not yet been extensively tested. Watch out! This module does not use the aio_* posix functions because a) linux does not have aio, b) the existing aio_* functions use pthreads, which are too buggy for my usage. =head1 SEE ALSO L. =head1 AUTHOR Marc Lehmann http://www.goof.com/pcg/marc/ =cut