--- IO-AIO/AIO.pm 2012/04/06 22:51:02 1.223 +++ IO-AIO/AIO.pm 2012/07/27 17:24:06 1.230 @@ -170,7 +170,7 @@ use base 'Exporter'; BEGIN { - our $VERSION = '4.13'; + our $VERSION = '4.15'; our @AIO_REQ = qw(aio_sendfile aio_seek aio_read aio_write aio_open aio_close aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx @@ -204,8 +204,8 @@ =head2 QUICK OVERVIEW -This section simply lists the prototypes of the most important functions -for quick reference. See the following sections for function-by-function +This section simply lists the prototypes most of the functions for +quick reference. See the following sections for function-by-function documentation. aio_wd $pathname, $callback->($wd) @@ -223,6 +223,8 @@ aio_chown $fh_or_path, $uid, $gid, $callback->($status) aio_chmod $fh_or_path, $mode, $callback->($status) aio_truncate $fh_or_path, $offset, $callback->($status) + aio_allocate $fh, $mode, $offset, $len, $callback->($status) + aio_fiemap $fh, $start, $length, $flags, $count, $cb->(\@extents) aio_unlink $pathname, $callback->($status) aio_mknod $pathname, $mode, $dev, $callback->($status) aio_link $srcpath, $dstpath, $callback->($status) @@ -274,6 +276,8 @@ IO::AIO::sendfile $ofh, $ifh, $offset, $count IO::AIO::fadvise $fh, $offset, $len, $advice + IO::AIO::mmap $scalar, $length, $prot, $flags[, $fh[, $offset]] + IO::AIO::munmap $scalar IO::AIO::madvise $scalar, $offset, $length, $advice IO::AIO::mprotect $scalar, $offset, $length, $protect IO::AIO::munlock $scalar, $offset = 0, $length = undef @@ -427,6 +431,12 @@ corresponding values from L, but perl guarantees they are the same, so don't panic. +As a GNU/Linux (and maybe Solaris) extension, also the constants +C and C are available, if they +could be found. No guarantees about suitability for use in C or +Perl's C can be made though, although I would naively assume they +"just work". + =item aio_read $fh,$offset,$length, $data,$dataoffset, $callback->($retval) =item aio_write $fh,$offset,$length, $data,$dataoffset, $callback->($retval) @@ -632,6 +642,22 @@ Works like truncate(2) or ftruncate(2). +=item aio_allocate $fh, $mode, $offset, $len, $callback->($status) + +Allocates or freed disk space according to the C<$mode> argument. See the +linux C docuemntation for details. + +C<$mode> can currently be C<0> or C +to allocate space, or C, to deallocate a file range. + +The file system block size used by C is presumably the +C returned by C. + +If C isn't available or cannot be emulated (currently no +emulation will be attempted), passes C<-1> and sets C<$!> to C. + + =item aio_chmod $fh_or_path, $mode, $callback->($status) Works like perl's C function. @@ -1255,7 +1281,7 @@ Queries the extents of the given file (by calling the Linux FIEMAP ioctl, see L for details). If the -C is not available on your OS, then this rquiest will fail with +C is not available on your OS, then this request will fail with C. C<$start> is the starting offset to query extents for, C<$length> is the @@ -1902,7 +1928,8 @@ =item IO::AIO::mmap $scalar, $length, $prot, $flags, $fh[, $offset] Memory-maps a file (or anonymous memory range) and attaches it to the -given C<$scalar>, which will act like a string scalar. +given C<$scalar>, which will act like a string scalar. Returns true on +success, and false otherwise. The only operations allowed on the scalar are C/C that don't change the string length, and most read-only operations such as copying it @@ -1965,6 +1992,26 @@ On systems that do not implement C, this function returns ENOSYS, otherwise the return value of C. +=item IO::AIO::splice $r_fh, $r_off, $w_fh, $w_off, $length, $flags + +Calls the GNU/Linux C syscall, if available. If C<$r_off> or +C<$w_off> are C, then C is passed for these, otherwise they +should be the file offset. + +C<$r_fh> and C<$w_fh> should not refer to the same file, as splice might +silently corrupt the data in this case. + +The following symbol flag values are available: C, +C, C and +C. + +See the C manpage for details. + +=item IO::AIO::tee $r_fh, $w_fh, $length, $flags + +Calls the GNU/Linux C syscall, see it's manpage and the +description for C above for details. + =back =cut