ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/AIO.pm
(Generate patch)

Comparing IO-AIO/AIO.pm (file contents):
Revision 1.245 by root, Sat Jan 25 00:15:52 2014 UTC vs.
Revision 1.249 by root, Wed Jul 30 22:00:04 2014 UTC

167use common::sense; 167use common::sense;
168 168
169use base 'Exporter'; 169use base 'Exporter';
170 170
171BEGIN { 171BEGIN {
172 our $VERSION = 4.2; 172 our $VERSION = 4.31;
173 173
174 our @AIO_REQ = qw(aio_sendfile aio_seek aio_read aio_write aio_open aio_close 174 our @AIO_REQ = qw(aio_sendfile aio_seek aio_read aio_write aio_open aio_close
175 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx 175 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx
176 aio_scandir aio_symlink aio_readlink aio_realpath aio_sync 176 aio_scandir aio_symlink aio_readlink aio_realpath aio_sync
177 aio_fsync aio_syncfs aio_fdatasync aio_sync_file_range aio_allocate 177 aio_fsync aio_syncfs aio_fdatasync aio_sync_file_range aio_allocate
227 aio_unlink $pathname, $callback->($status) 227 aio_unlink $pathname, $callback->($status)
228 aio_mknod $pathname, $mode, $dev, $callback->($status) 228 aio_mknod $pathname, $mode, $dev, $callback->($status)
229 aio_link $srcpath, $dstpath, $callback->($status) 229 aio_link $srcpath, $dstpath, $callback->($status)
230 aio_symlink $srcpath, $dstpath, $callback->($status) 230 aio_symlink $srcpath, $dstpath, $callback->($status)
231 aio_readlink $pathname, $callback->($link) 231 aio_readlink $pathname, $callback->($link)
232 aio_realpath $pathname, $callback->($link) 232 aio_realpath $pathname, $callback->($path)
233 aio_rename $srcpath, $dstpath, $callback->($status) 233 aio_rename $srcpath, $dstpath, $callback->($status)
234 aio_mkdir $pathname, $mode, $callback->($status) 234 aio_mkdir $pathname, $mode, $callback->($status)
235 aio_rmdir $pathname, $callback->($status) 235 aio_rmdir $pathname, $callback->($status)
236 aio_readdir $pathname, $callback->($entries) 236 aio_readdir $pathname, $callback->($entries)
237 aio_readdirx $pathname, $flags, $callback->($entries, $flags) 237 aio_readdirx $pathname, $flags, $callback->($entries, $flags)
722Works like truncate(2) or ftruncate(2). 722Works like truncate(2) or ftruncate(2).
723 723
724 724
725=item aio_allocate $fh, $mode, $offset, $len, $callback->($status) 725=item aio_allocate $fh, $mode, $offset, $len, $callback->($status)
726 726
727Allocates or freed disk space according to the C<$mode> argument. See the 727Allocates or frees disk space according to the C<$mode> argument. See the
728linux C<fallocate> docuemntation for details. 728linux C<fallocate> documentation for details.
729 729
730C<$mode> can currently be C<0> or C<IO::AIO::FALLOC_FL_KEEP_SIZE> 730C<$mode> can currently be C<0> or C<IO::AIO::FALLOC_FL_KEEP_SIZE>
731to allocate space, or C<IO::AIO::FALLOC_FL_PUNCH_HOLE | 731to allocate space, or C<IO::AIO::FALLOC_FL_PUNCH_HOLE |
732IO::AIO::FALLOC_FL_KEEP_SIZE>, to deallocate a file range. 732IO::AIO::FALLOC_FL_KEEP_SIZE>, to deallocate a file range.
733 733
1931 1931
1932This is a very bad function to use in interactive programs because it 1932This is a very bad function to use in interactive programs because it
1933blocks, and a bad way to reduce concurrency because it is inexact: Better 1933blocks, and a bad way to reduce concurrency because it is inexact: Better
1934use an C<aio_group> together with a feed callback. 1934use an C<aio_group> together with a feed callback.
1935 1935
1936It's main use is in scripts without an event loop - when you want to stat 1936Its main use is in scripts without an event loop - when you want to stat
1937a lot of files, you can write somehting like this: 1937a lot of files, you can write somehting like this:
1938 1938
1939 IO::AIO::max_outstanding 32; 1939 IO::AIO::max_outstanding 32;
1940 1940
1941 for my $path (...) { 1941 for my $path (...) {
1981 1981
1982=back 1982=back
1983 1983
1984=head3 MISCELLANEOUS FUNCTIONS 1984=head3 MISCELLANEOUS FUNCTIONS
1985 1985
1986IO::AIO implements some functions that might be useful, but are not 1986IO::AIO implements some functions that are useful when you want to use
1987asynchronous. 1987some "Advanced I/O" function not available to in Perl, without going the
1988"Asynchronous I/O" route. Many of these have an asynchronous C<aio_*>
1989counterpart.
1988 1990
1989=over 4 1991=over 4
1990 1992
1991=item IO::AIO::sendfile $ofh, $ifh, $offset, $count 1993=item IO::AIO::sendfile $ofh, $ifh, $offset, $count
1992 1994
2110 2112
2111See the C<splice(2)> manpage for details. 2113See the C<splice(2)> manpage for details.
2112 2114
2113=item IO::AIO::tee $r_fh, $w_fh, $length, $flags 2115=item IO::AIO::tee $r_fh, $w_fh, $length, $flags
2114 2116
2115Calls the GNU/Linux C<tee(2)> syscall, see it's manpage and the 2117Calls the GNU/Linux C<tee(2)> syscall, see its manpage and the
2116description for C<IO::AIO::splice> above for details. 2118description for C<IO::AIO::splice> above for details.
2117 2119
2118=item $actual_size = IO::AIO::pipesize $r_fh[, $new_size] 2120=item $actual_size = IO::AIO::pipesize $r_fh[, $new_size]
2119 2121
2120Attempts to query or change the pipe buffer size. Obviously works only 2122Attempts to query or change the pipe buffer size. Obviously works only

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines