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.224 by root, Sat Apr 7 00:50:33 2012 UTC vs.
Revision 1.230 by root, Fri Jul 27 17:24:06 2012 UTC

168use common::sense; 168use common::sense;
169 169
170use base 'Exporter'; 170use base 'Exporter';
171 171
172BEGIN { 172BEGIN {
173 our $VERSION = '4.14'; 173 our $VERSION = '4.15';
174 174
175 our @AIO_REQ = qw(aio_sendfile aio_seek aio_read aio_write aio_open aio_close 175 our @AIO_REQ = qw(aio_sendfile aio_seek aio_read aio_write aio_open aio_close
176 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx 176 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx
177 aio_scandir aio_symlink aio_readlink aio_realpath aio_sync 177 aio_scandir aio_symlink aio_readlink aio_realpath aio_sync
178 aio_fsync aio_syncfs aio_fdatasync aio_sync_file_range aio_fallocate 178 aio_fsync aio_syncfs aio_fdatasync aio_sync_file_range aio_fallocate
202 202
203=head1 FUNCTIONS 203=head1 FUNCTIONS
204 204
205=head2 QUICK OVERVIEW 205=head2 QUICK OVERVIEW
206 206
207This section simply lists the prototypes of the most important functions 207This section simply lists the prototypes most of the functions for
208for quick reference. See the following sections for function-by-function 208quick reference. See the following sections for function-by-function
209documentation. 209documentation.
210 210
211 aio_wd $pathname, $callback->($wd) 211 aio_wd $pathname, $callback->($wd)
212 aio_open $pathname, $flags, $mode, $callback->($fh) 212 aio_open $pathname, $flags, $mode, $callback->($fh)
213 aio_close $fh, $callback->($status) 213 aio_close $fh, $callback->($status)
221 aio_statvfs $fh_or_path, $callback->($statvfs) 221 aio_statvfs $fh_or_path, $callback->($statvfs)
222 aio_utime $fh_or_path, $atime, $mtime, $callback->($status) 222 aio_utime $fh_or_path, $atime, $mtime, $callback->($status)
223 aio_chown $fh_or_path, $uid, $gid, $callback->($status) 223 aio_chown $fh_or_path, $uid, $gid, $callback->($status)
224 aio_chmod $fh_or_path, $mode, $callback->($status) 224 aio_chmod $fh_or_path, $mode, $callback->($status)
225 aio_truncate $fh_or_path, $offset, $callback->($status) 225 aio_truncate $fh_or_path, $offset, $callback->($status)
226 aio_allocate $fh, $mode, $offset, $len, $callback->($status)
227 aio_fiemap $fh, $start, $length, $flags, $count, $cb->(\@extents)
226 aio_unlink $pathname, $callback->($status) 228 aio_unlink $pathname, $callback->($status)
227 aio_mknod $pathname, $mode, $dev, $callback->($status) 229 aio_mknod $pathname, $mode, $dev, $callback->($status)
228 aio_link $srcpath, $dstpath, $callback->($status) 230 aio_link $srcpath, $dstpath, $callback->($status)
229 aio_symlink $srcpath, $dstpath, $callback->($status) 231 aio_symlink $srcpath, $dstpath, $callback->($status)
230 aio_readlink $pathname, $callback->($link) 232 aio_readlink $pathname, $callback->($link)
272 IO::AIO::nready 274 IO::AIO::nready
273 IO::AIO::npending 275 IO::AIO::npending
274 276
275 IO::AIO::sendfile $ofh, $ifh, $offset, $count 277 IO::AIO::sendfile $ofh, $ifh, $offset, $count
276 IO::AIO::fadvise $fh, $offset, $len, $advice 278 IO::AIO::fadvise $fh, $offset, $len, $advice
279 IO::AIO::mmap $scalar, $length, $prot, $flags[, $fh[, $offset]]
280 IO::AIO::munmap $scalar
277 IO::AIO::madvise $scalar, $offset, $length, $advice 281 IO::AIO::madvise $scalar, $offset, $length, $advice
278 IO::AIO::mprotect $scalar, $offset, $length, $protect 282 IO::AIO::mprotect $scalar, $offset, $length, $protect
279 IO::AIO::munlock $scalar, $offset = 0, $length = undef 283 IO::AIO::munlock $scalar, $offset = 0, $length = undef
280 IO::AIO::munlockall 284 IO::AIO::munlockall
281 285
424case of an error. 428case of an error.
425 429
426In theory, the C<$whence> constants could be different than the 430In theory, the C<$whence> constants could be different than the
427corresponding values from L<Fcntl>, but perl guarantees they are the same, 431corresponding values from L<Fcntl>, but perl guarantees they are the same,
428so don't panic. 432so don't panic.
433
434As a GNU/Linux (and maybe Solaris) extension, also the constants
435C<IO::AIO::SEEK_DATA> and C<IO::AIO::SEEK_HOLE> are available, if they
436could be found. No guarantees about suitability for use in C<aio_seek> or
437Perl's C<sysseek> can be made though, although I would naively assume they
438"just work".
429 439
430=item aio_read $fh,$offset,$length, $data,$dataoffset, $callback->($retval) 440=item aio_read $fh,$offset,$length, $data,$dataoffset, $callback->($retval)
431 441
432=item aio_write $fh,$offset,$length, $data,$dataoffset, $callback->($retval) 442=item aio_write $fh,$offset,$length, $data,$dataoffset, $callback->($retval)
433 443
628 638
629 639
630=item aio_truncate $fh_or_path, $offset, $callback->($status) 640=item aio_truncate $fh_or_path, $offset, $callback->($status)
631 641
632Works like truncate(2) or ftruncate(2). 642Works like truncate(2) or ftruncate(2).
643
644
645=item aio_allocate $fh, $mode, $offset, $len, $callback->($status)
646
647Allocates or freed disk space according to the C<$mode> argument. See the
648linux C<fallocate> docuemntation for details.
649
650C<$mode> can currently be C<0> or C<IO::AIO::FALLOC_FL_KEEP_SIZE>
651to allocate space, or C<IO::AIO::FALLOC_FL_PUNCH_HOLE |
652IO::AIO::FALLOC_FL_KEEP_SIZE>, to deallocate a file range.
653
654The file system block size used by C<fallocate> is presumably the
655C<f_bsize> returned by C<statvfs>.
656
657If C<fallocate> isn't available or cannot be emulated (currently no
658emulation will be attempted), passes C<-1> and sets C<$!> to C<ENOSYS>.
633 659
634 660
635=item aio_chmod $fh_or_path, $mode, $callback->($status) 661=item aio_chmod $fh_or_path, $mode, $callback->($status)
636 662
637Works like perl's C<chmod> function. 663Works like perl's C<chmod> function.
1253 1279
1254=item aio_fiemap $fh, $start, $length, $flags, $count, $cb->(\@extents) 1280=item aio_fiemap $fh, $start, $length, $flags, $count, $cb->(\@extents)
1255 1281
1256Queries the extents of the given file (by calling the Linux FIEMAP ioctl, 1282Queries the extents of the given file (by calling the Linux FIEMAP ioctl,
1257see L<http://cvs.schmorp.de/IO-AIO/doc/fiemap.txt> for details). If the 1283see L<http://cvs.schmorp.de/IO-AIO/doc/fiemap.txt> for details). If the
1258C<ioctl> is not available on your OS, then this rquiest will fail with 1284C<ioctl> is not available on your OS, then this request will fail with
1259C<ENOSYS>. 1285C<ENOSYS>.
1260 1286
1261C<$start> is the starting offset to query extents for, C<$length> is the 1287C<$start> is the starting offset to query extents for, C<$length> is the
1262size of the range to query - if it is C<undef>, then the whole file will 1288size of the range to query - if it is C<undef>, then the whole file will
1263be queried. 1289be queried.
1900ENOSYS, otherwise the return value of C<mprotect>. 1926ENOSYS, otherwise the return value of C<mprotect>.
1901 1927
1902=item IO::AIO::mmap $scalar, $length, $prot, $flags, $fh[, $offset] 1928=item IO::AIO::mmap $scalar, $length, $prot, $flags, $fh[, $offset]
1903 1929
1904Memory-maps a file (or anonymous memory range) and attaches it to the 1930Memory-maps a file (or anonymous memory range) and attaches it to the
1905given C<$scalar>, which will act like a string scalar. 1931given C<$scalar>, which will act like a string scalar. Returns true on
1932success, and false otherwise.
1906 1933
1907The only operations allowed on the scalar are C<substr>/C<vec> that don't 1934The only operations allowed on the scalar are C<substr>/C<vec> that don't
1908change the string length, and most read-only operations such as copying it 1935change the string length, and most read-only operations such as copying it
1909or searching it with regexes and so on. 1936or searching it with regexes and so on.
1910 1937
1963Calls the C<munlockall> function. 1990Calls the C<munlockall> function.
1964 1991
1965On systems that do not implement C<munlockall>, this function returns 1992On systems that do not implement C<munlockall>, this function returns
1966ENOSYS, otherwise the return value of C<munlockall>. 1993ENOSYS, otherwise the return value of C<munlockall>.
1967 1994
1995=item IO::AIO::splice $r_fh, $r_off, $w_fh, $w_off, $length, $flags
1996
1997Calls the GNU/Linux C<splice(2)> syscall, if available. If C<$r_off> or
1998C<$w_off> are C<undef>, then C<NULL> is passed for these, otherwise they
1999should be the file offset.
2000
2001C<$r_fh> and C<$w_fh> should not refer to the same file, as splice might
2002silently corrupt the data in this case.
2003
2004The following symbol flag values are available: C<IO::AIO::SPLICE_F_MOVE>,
2005C<IO::AIO::SPLICE_F_NONBLOCK>, C<IO::AIO::SPLICE_F_MORE> and
2006C<IO::AIO::SPLICE_F_GIFT>.
2007
2008See the C<splice(2)> manpage for details.
2009
2010=item IO::AIO::tee $r_fh, $w_fh, $length, $flags
2011
2012Calls the GNU/Linux C<tee(2)> syscall, see it's manpage and the
2013description for C<IO::AIO::splice> above for details.
2014
1968=back 2015=back
1969 2016
1970=cut 2017=cut
1971 2018
1972min_parallel 8; 2019min_parallel 8;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines