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.314 by root, Sat Apr 9 19:34:05 2022 UTC vs.
Revision 1.315 by root, Mon Sep 5 00:03:32 2022 UTC

171use common::sense; 171use common::sense;
172 172
173use base 'Exporter'; 173use base 'Exporter';
174 174
175BEGIN { 175BEGIN {
176 our $VERSION = 4.76; 176 our $VERSION = 4.77;
177 177
178 our @AIO_REQ = qw(aio_sendfile aio_seek aio_read aio_write aio_open aio_close 178 our @AIO_REQ = qw(aio_sendfile aio_seek aio_read aio_write aio_open aio_close
179 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx 179 aio_stat aio_lstat aio_unlink aio_rmdir aio_readdir aio_readdirx
180 aio_scandir aio_symlink aio_readlink aio_realpath aio_fcntl aio_ioctl 180 aio_scandir aio_symlink aio_readlink aio_realpath aio_fcntl aio_ioctl
181 aio_sync aio_fsync aio_syncfs aio_fdatasync aio_sync_file_range 181 aio_sync aio_fsync aio_syncfs aio_fdatasync aio_sync_file_range
192 our @EXPORT_OK = qw(poll_fileno poll_cb poll_wait flush 192 our @EXPORT_OK = qw(poll_fileno poll_cb poll_wait flush
193 min_parallel max_parallel max_idle idle_timeout 193 min_parallel max_parallel max_idle idle_timeout
194 nreqs nready npending nthreads 194 nreqs nready npending nthreads
195 max_poll_time max_poll_reqs 195 max_poll_time max_poll_reqs
196 sendfile fadvise madvise 196 sendfile fadvise madvise
197 mmap munmap mremap munlock munlockall); 197 mmap munmap mremap munlock munlockall
198
199 accept4 tee splice pipe2 pipesize
200 fexecve memfd_create eventfd
201 timerfd_create timerfd_settime timerfd_gettime
202 pidfd_open pidfd_send_signal pidfd_getfd);
198 203
199 push @AIO_REQ, qw(aio_busy); # not exported 204 push @AIO_REQ, qw(aio_busy); # not exported
200 205
201 @IO::AIO::GRP::ISA = 'IO::AIO::REQ'; 206 @IO::AIO::GRP::ISA = 'IO::AIO::REQ';
202 207
285 $nfd = IO::AIO::get_fdlimit 290 $nfd = IO::AIO::get_fdlimit
286 IO::AIO::min_fdlimit $nfd 291 IO::AIO::min_fdlimit $nfd
287 292
288 IO::AIO::sendfile $ofh, $ifh, $offset, $count 293 IO::AIO::sendfile $ofh, $ifh, $offset, $count
289 IO::AIO::fadvise $fh, $offset, $len, $advice 294 IO::AIO::fadvise $fh, $offset, $len, $advice
295 IO::AIO::fexecve $fh, $argv, $envp
290 296
291 IO::AIO::mmap $scalar, $length, $prot, $flags[, $fh[, $offset]] 297 IO::AIO::mmap $scalar, $length, $prot, $flags[, $fh[, $offset]]
292 IO::AIO::munmap $scalar 298 IO::AIO::munmap $scalar
293 IO::AIO::mremap $scalar, $new_length, $flags[, $new_address] 299 IO::AIO::mremap $scalar, $new_length, $flags[, $new_address]
294 IO::AIO::madvise $scalar, $offset, $length, $advice 300 IO::AIO::madvise $scalar, $offset, $length, $advice
306 312
307 # very much unportable syscalls 313 # very much unportable syscalls
308 IO::AIO::accept4 $r_fh, $sockaddr, $sockaddr_len, $flags 314 IO::AIO::accept4 $r_fh, $sockaddr, $sockaddr_len, $flags
309 IO::AIO::splice $r_fh, $r_off, $w_fh, $w_off, $length, $flags 315 IO::AIO::splice $r_fh, $r_off, $w_fh, $w_off, $length, $flags
310 IO::AIO::tee $r_fh, $w_fh, $length, $flags 316 IO::AIO::tee $r_fh, $w_fh, $length, $flags
317
311 $actual_size = IO::AIO::pipesize $r_fh[, $new_size] 318 $actual_size = IO::AIO::pipesize $r_fh[, $new_size]
312 ($rfh, $wfh) = IO::AIO::pipe2 [$flags] 319 ($rfh, $wfh) = IO::AIO::pipe2 [$flags]
320
321 $fh = IO::AIO::eventfd [$initval, [$flags]]
313 $fh = IO::AIO::memfd_create $pathname[, $flags] 322 $fh = IO::AIO::memfd_create $pathname[, $flags]
314 $fh = IO::AIO::eventfd [$initval, [$flags]] 323
315 $fh = IO::AIO::timerfd_create $clockid[, $flags] 324 $fh = IO::AIO::timerfd_create $clockid[, $flags]
316 ($cur_interval, $cur_value) = IO::AIO::timerfd_settime $fh, $flags, $new_interval, $nbw_value 325 ($cur_interval, $cur_value) = IO::AIO::timerfd_settime $fh, $flags, $new_interval, $nbw_value
317 ($cur_interval, $cur_value) = IO::AIO::timerfd_gettime $fh 326 ($cur_interval, $cur_value) = IO::AIO::timerfd_gettime $fh
327
328 $fh = IO::AIO::pidfd_open $pid[, $flags]
329 $status = IO::AIO::pidfd_send_signal $pidfh, $signal[, $siginfo[, $flags]]
330 $fh = IO::AIO::pidfd_getfd $pidfh, $targetfd[, $flags]
318 331
319=head2 API NOTES 332=head2 API NOTES
320 333
321All the C<aio_*> calls are more or less thin wrappers around the syscall 334All the C<aio_*> calls are more or less thin wrappers around the syscall
322with the same name (sans C<aio_>). The arguments are similar or identical, 335with the same name (sans C<aio_>). The arguments are similar or identical,
2219some "Advanced I/O" function not available to in Perl, without going the 2232some "Advanced I/O" function not available to in Perl, without going the
2220"Asynchronous I/O" route. Many of these have an asynchronous C<aio_*> 2233"Asynchronous I/O" route. Many of these have an asynchronous C<aio_*>
2221counterpart. 2234counterpart.
2222 2235
2223=over 4 2236=over 4
2237
2238=item $retval = IO::AIO::fexecve $fh, $argv, $envp
2239
2240A more-or-less direct equivalent to the POSIX C<fexecve> functions, which
2241allows you to specify the program to be executed via a file descriptor (or
2242handle). Returns C<-1> and sets errno to C<ENOSYS> if not available.
2224 2243
2225=item $numfd = IO::AIO::get_fdlimit 2244=item $numfd = IO::AIO::get_fdlimit
2226 2245
2227Tries to find the current file descriptor limit and returns it, or 2246Tries to find the current file descriptor limit and returns it, or
2228C<undef> and sets C<$!> in case of an error. The limit is one larger than 2247C<undef> and sets C<$!> in case of an error. The limit is one larger than

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines