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

Comparing Linux-AIO/AIO.pm (file contents):
Revision 1.31 by root, Sun Jul 10 01:03:06 2005 UTC vs.
Revision 1.35 by root, Tue Jul 12 10:51:09 2005 UTC

36usually delivers "false") as it's sole argument when the given syscall has 36usually delivers "false") as it's sole argument when the given syscall has
37been executed asynchronously. 37been executed asynchronously.
38 38
39All functions that expect a filehandle will also accept a file descriptor. 39All functions that expect a filehandle will also accept a file descriptor.
40 40
41The filenames you pass to these routines I<must> be absolute. The reason
42is that at the time the request is being executed, the current working
43directory could have changed. Alternatively, you can make sure that you
44never change the current working directory.
45
41=over 4 46=over 4
42 47
43=cut 48=cut
44 49
45package Linux::AIO; 50package Linux::AIO;
46 51
47use base 'Exporter'; 52use base 'Exporter';
48 53
49BEGIN { 54BEGIN {
50 $VERSION = 1.71; 55 $VERSION = 1.72;
51 56
52 @EXPORT = qw(aio_read aio_write aio_open aio_close aio_stat aio_lstat aio_unlink 57 @EXPORT = qw(aio_read aio_write aio_open aio_close aio_stat aio_lstat aio_unlink
53 aio_fsync aio_fdatasync aio_readahead); 58 aio_fsync aio_fdatasync aio_readahead);
54 @EXPORT_OK = qw(poll_fileno poll_cb min_parallel max_parallel nreqs); 59 @EXPORT_OK = qw(poll_fileno poll_cb min_parallel max_parallel nreqs);
55 60
114 119
115Returns the number of requests currently outstanding. 120Returns the number of requests currently outstanding.
116 121
117Example: wait till there are no outstanding requests anymore: 122Example: wait till there are no outstanding requests anymore:
118 123
119 Linux::AIO::poll_wait while Linux::AIO::nreqs; 124 Linux::AIO::poll_wait, Linux::AIO::poll_cb
125 while Linux::AIO::nreqs;
120 126
121=item aio_open $pathname, $flags, $mode, $callback 127=item aio_open $pathname, $flags, $mode, $callback
122 128
123Asynchronously open or create a file and call the callback with the 129Asynchronously open or create a file and call the callback with the
124filedescriptor (NOT a perl filehandle, sorry for that, but watch out, this 130filedescriptor (NOT a perl filehandle, sorry for that, but watch out, this
125might change in the future). 131might change in the future).
126 132
133The pathname passed to C<aio_open> must be absolute. See API NOTES, above,
134for an explanation.
135
127The C<$mode> argument is a bitmask. See the C<Fcntl> module for a 136The C<$mode> argument is a bitmask. See the C<Fcntl> module for a
128list. They are the same as used in C<sysopen>. 137list. They are the same as used in C<sysopen>.
129 138
130Example: 139Example:
131 140
132 aio_open "/etc/passwd", O_RDONLY, 0, sub { 141 aio_open "/etc/passwd", O_RDONLY, 0, sub {
133 if ($_[0] >= 0) { 142 if ($_[0] >= 0) {
134 open my $fh, "<&$_[0]"; # create a copy for perl 143 open my $fh, "<&=$_[0]";
135 aio_close $_[0], sub { }; # close the aio handle
136 print "open successful, fh is $fh\n"; 144 print "open successful, fh is $fh\n";
137 ... 145 ...
138 } else { 146 } else {
139 die "open failed: $!\n"; 147 die "open failed: $!\n";
140 } 148 }
181 189
182Works like perl's C<stat> or C<lstat> in void context. The callback will 190Works like perl's C<stat> or C<lstat> in void context. The callback will
183be called after the stat and the results will be available using C<stat _> 191be called after the stat and the results will be available using C<stat _>
184or C<-s _> etc... 192or C<-s _> etc...
185 193
194The pathname passed to C<aio_stat> must be absolute. See API NOTES, above,
195for an explanation.
196
186Currently, the stats are always 64-bit-stats, i.e. instead of returning an 197Currently, the stats are always 64-bit-stats, i.e. instead of returning an
187error when stat'ing a large file, the results will be silently truncated 198error when stat'ing a large file, the results will be silently truncated
188unless perl itself is compiled with large file support. 199unless perl itself is compiled with large file support.
189 200
190Example: Print the length of F</etc/passwd>: 201Example: Print the length of F</etc/passwd>:
228 239
229 - aio_open gives a fd, but all other functions expect a perl filehandle. 240 - aio_open gives a fd, but all other functions expect a perl filehandle.
230 241
231=head1 SEE ALSO 242=head1 SEE ALSO
232 243
233L<Coro>. 244L<Coro>, L<IO::AIO>.
234 245
235=head1 AUTHOR 246=head1 AUTHOR
236 247
237 Marc Lehmann <schmorp@schmorp.de> 248 Marc Lehmann <schmorp@schmorp.de>
238 http://home.schmorp.de/ 249 http://home.schmorp.de/

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines