--- Linux-AIO/AIO.pm 2001/08/14 18:06:37 1.2 +++ Linux-AIO/AIO.pm 2001/08/30 03:12:54 1.6 @@ -8,6 +8,12 @@ =head1 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. + =over 4 =cut @@ -17,9 +23,9 @@ use base 'Exporter'; BEGIN { - $VERSION = 0.001; + $VERSION = 0.002; - @EXPORT = qw(aio_read aio_write); + @EXPORT = qw(aio_read aio_write aio_open aio_close); @EXPORT_OK = qw(poll_fileno poll_cb min_parallel max_parallel nreqs); require XSLoader; @@ -28,16 +34,9 @@ =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). +Set the minimum number of AIO threads to $nthreads. You I 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. =item $fileno = Linux::AIO::poll_fileno @@ -49,10 +48,33 @@ 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 ); + + =item Linux::AIO::nreqs Returns the number of requests currently outstanding. +=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 aio_open($pathname, $flags, $mode, $callback) + +Asynchronously open or create a file and call the callback with the +filedescriptor. + +=item aio_close($fh, $callback) + +Asynchronously close a file and call the callback with the result code. + =cut END { @@ -67,9 +89,7 @@ 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. + - aio_stat/lstat are seriously missing here. =head1 SEE ALSO