--- IO-AIO/AIO.pm 2016/05/01 17:19:39 1.260 +++ IO-AIO/AIO.pm 2016/08/09 11:39:17 1.267 @@ -1,6 +1,6 @@ =head1 NAME -IO::AIO - Asynchronous Input/Output +IO::AIO - Asynchronous/Advanced Input/Output =head1 SYNOPSIS @@ -60,6 +60,10 @@ aio_write, so the remaining functionality would have to be implemented using threads anyway. +In addition to asynchronous I/O, this module also exports some rather +arcane interfaces, such as C or linux's C system call, +which is why the C in C can also mean I. + Although the module will work in the presence of other (Perl-) threads, it is currently not reentrant in any way, so use appropriate locking yourself, always call C from within the same thread, or never @@ -443,8 +447,8 @@ =item aio_write $fh,$offset,$length, $data,$dataoffset, $callback->($retval) Reads or writes C<$length> bytes from or to the specified C<$fh> and -C<$offset> into the scalar given by C<$data> and offset C<$dataoffset> -and calls the callback without the actual number of bytes read (or -1 on +C<$offset> into the scalar given by C<$data> and offset C<$dataoffset> and +calls the callback with the actual number of bytes transferred (or -1 on error, just like the syscall). C will, like C, shrink or grow the C<$data> scalar to @@ -512,7 +516,7 @@ on many systems, this implementation tries to work around some known bugs in Linux and FreeBSD kernels (probably others, too), but that might fail, so you really really should check the return value of C - -fewre bytes than expected might have been transferred. +fewer bytes than expected might have been transferred. =item aio_readahead $fh,$offset,$length, $callback->($retval) @@ -526,8 +530,8 @@ (off-set+length). C does not read beyond the end of the file. The current file offset of the file is left unchanged. -If that syscall doesn't exist (likely if your OS isn't Linux) it will be -emulated by simply reading the data, which would have a similar effect. +If that syscall doesn't exist (likely if your kernel isn't Linux) it will +be emulated by simply reading the data, which would have a similar effect. =item aio_stat $fh_or_path, $callback->($status) @@ -1250,6 +1254,27 @@ other processes), although if you are careful and know what you are doing, you still can. +The following constants are available (missing ones are, as usual C<0>): + +C, C, C, C, C, C. + +C, C, C, C, +C. + +C, C, C, +C, C, C. + +C, C, C, C, C, +C, C, C, C, +C, C, C, C, +C, C, C, C, C, +C. + +C, C, C, C, +C, C, C, C, +C, C, C, C, +C, C, C, C, + =item aio_sync $callback->($status) Asynchronously call sync and call the callback when finished. @@ -2043,7 +2068,8 @@ Simply calls the C function (see its manpage for details). The following advice constants are available: C, C, -C, C, C. +C, C, C, +C. On systems that do not implement C, this function returns ENOSYS, otherwise the return value of C.