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

Comparing IO-AIO/README (file contents):
Revision 1.61 by root, Sun Aug 12 06:07:06 2018 UTC vs.
Revision 1.62 by root, Sat Aug 25 19:59:18 2018 UTC

469 will be emulated by simply reading the data, which would have a 469 will be emulated by simply reading the data, which would have a
470 similar effect. 470 similar effect.
471 471
472 aio_stat $fh_or_path, $callback->($status) 472 aio_stat $fh_or_path, $callback->($status)
473 aio_lstat $fh, $callback->($status) 473 aio_lstat $fh, $callback->($status)
474 Works like perl's "stat" or "lstat" in void context. The callback 474 Works almost exactly like perl's "stat" or "lstat" in void context.
475 will be called after the stat and the results will be available 475 The callback will be called after the stat and the results will be
476 using "stat _" or "-s _" etc... 476 available using "stat _" or "-s _" and other tests (with the
477 exception of "-B" and "-T").
477 478
478 The pathname passed to "aio_stat" must be absolute. See API NOTES, 479 The pathname passed to "aio_stat" must be absolute. See API NOTES,
479 above, for an explanation. 480 above, for an explanation.
480 481
481 Currently, the stats are always 64-bit-stats, i.e. instead of 482 Currently, the stats are always 64-bit-stats, i.e. instead of
548 aio_utime $fh_or_path, $atime, $mtime, $callback->($status) 549 aio_utime $fh_or_path, $atime, $mtime, $callback->($status)
549 Works like perl's "utime" function (including the special case of 550 Works like perl's "utime" function (including the special case of
550 $atime and $mtime being undef). Fractional times are supported if 551 $atime and $mtime being undef). Fractional times are supported if
551 the underlying syscalls support them. 552 the underlying syscalls support them.
552 553
553 When called with a pathname, uses utimes(2) if available, otherwise 554 When called with a pathname, uses utimensat(2) or utimes(2) if
554 utime(2). If called on a file descriptor, uses futimes(2) if 555 available, otherwise utime(2). If called on a file descriptor, uses
555 available, otherwise returns ENOSYS, so this is not portable. 556 futimens(2) or futimes(2) if available, otherwise returns ENOSYS, so
557 this is not portable.
556 558
557 Examples: 559 Examples:
558 560
559 # set atime and mtime to current time (basically touch(1)): 561 # set atime and mtime to current time (basically touch(1)):
560 aio_utime "path", undef, undef; 562 aio_utime "path", undef, undef;
1451 Strictly equivalent to: 1453 Strictly equivalent to:
1452 1454
1453 IO::AIO::poll_wait, IO::AIO::poll_cb 1455 IO::AIO::poll_wait, IO::AIO::poll_cb
1454 while IO::AIO::nreqs; 1456 while IO::AIO::nreqs;
1455 1457
1458 This function can be useful at program aborts, to make sure
1459 outstanding I/O has been done ("IO::AIO" uses an "END" block which
1460 already calls this function on normal exits), or when you are merely
1461 using "IO::AIO" for its more advanced functions, rather than for
1462 async I/O, e.g.:
1463
1464 my ($dirs, $nondirs);
1465 IO::AIO::aio_scandir "/tmp", 0, sub { ($dirs, $nondirs) = @_ };
1466 IO::AIO::flush;
1467 # $dirs, $nondirs are now set
1468
1456 IO::AIO::max_poll_reqs $nreqs 1469 IO::AIO::max_poll_reqs $nreqs
1457 IO::AIO::max_poll_time $seconds 1470 IO::AIO::max_poll_time $seconds
1458 These set the maximum number of requests (default 0, meaning 1471 These set the maximum number of requests (default 0, meaning
1459 infinity) that are being processed by "IO::AIO::poll_cb" in one 1472 infinity) that are being processed by "IO::AIO::poll_cb" in one
1460 call, respectively the maximum amount of time (default 0, meaning 1473 call, respectively the maximum amount of time (default 0, meaning
1614 1627
1615 On operating systems or file systems where subsecond time resolution is 1628 On operating systems or file systems where subsecond time resolution is
1616 not supported or could not be detected, a fractional part of 0 is 1629 not supported or could not be detected, a fractional part of 0 is
1617 returned, so it is always safe to call these functions. 1630 returned, so it is always safe to call these functions.
1618 1631
1619 $seconds = IO::AIO::st_atime, IO::AIO::st_mtime, IO::AIO::st_ctime 1632 $seconds = IO::AIO::st_atime, IO::AIO::st_mtime, IO::AIO::st_ctime,
1633 IO::AIO::st_btime
1620 Return the access, modication or change time, respectively, 1634 Return the access, modication, change or birth time, respectively,
1621 including fractional part. Due to the limited precision of floating 1635 including fractional part. Due to the limited precision of floating
1622 point, the accuracy on most platforms is only a bit better than 1636 point, the accuracy on most platforms is only a bit better than
1623 milliseconds for times around now - see the *nsec* function family, 1637 milliseconds for times around now - see the *nsec* function family,
1624 below, for full accuracy. 1638 below, for full accuracy.
1625 1639
1640 File birth time is only available when the OS and perl support it
1641 (on FreeBSD and NetBSD at the time of this writing, although support
1642 is adaptive, so if your OS/perl gains support, IO::AIO can take
1643 avdantage of it). On systems where it isn't available, 0 is
1644 currently returned, but this might change to "undef" in a future
1645 version.
1646
1626 ($atime, $mtime, $ctime, ...) = IO::AIO::st_xtime 1647 ($atime, $mtime, $ctime, $btime, ...) = IO::AIO::st_xtime
1627 Returns access, modification and change time all in one go, and 1648 Returns access, modification, change and birth time all in one go,
1628 maybe more times in the future version. 1649 and maybe more times in the future version.
1629 1650
1630 $nanoseconds = IO::AIO::st_atimensec, IO::AIO::st_mtimensec, 1651 $nanoseconds = IO::AIO::st_atimensec, IO::AIO::st_mtimensec,
1631 IO::AIO::st_ctimensec 1652 IO::AIO::st_ctimensec, IO::AIO::st_btimensec
1632 Return the fractional access, modifcation or change time, in 1653 Return the fractional access, modifcation, change or birth time, in
1633 nanoseconds, as an integer in the range 0 to 999999999. 1654 nanoseconds, as an integer in the range 0 to 999999999.
1634 1655
1656 Note that no accessors are provided for access, modification and
1657 change times - you need to get those from "stat _" if required ("int
1658 IO::AIO::st_atime" and so on will *not* generally give you the
1659 correct value).
1660
1661 $seconds = IO::AIO::st_btimesec
1662 The (integral) seconds part of the file birth time, if available.
1663
1635 ($atime, $mtime, $ctime, ...) = IO::AIO::st_xtimensec 1664 ($atime, $mtime, $ctime, $btime, ...) = IO::AIO::st_xtimensec
1636 Like the functions above, but returns all three times in one go (and 1665 Like the functions above, but returns all four times in one go (and
1637 maybe more in future versions). 1666 maybe more in future versions).
1667
1668 $counter = IO::AIO::st_gen
1669 Returns the generation counter of the file. This is only available
1670 on platforms which have this member in their "struct stat" (most
1671 BSDs at the time of this writing) and generally only to the root
1672 usert. If unsupported, 0 is returned, but this might change to
1673 "undef" in a future version.
1638 1674
1639 Example: print the high resolution modification time of /etc, using 1675 Example: print the high resolution modification time of /etc, using
1640 "stat", and "IO::AIO::aio_stat". 1676 "stat", and "IO::AIO::aio_stat".
1641 1677
1642 if (stat "/etc") { 1678 if (stat "/etc") {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines