… | |
… | |
171 | use common::sense; |
171 | use common::sense; |
172 | |
172 | |
173 | use base 'Exporter'; |
173 | use base 'Exporter'; |
174 | |
174 | |
175 | BEGIN { |
175 | BEGIN { |
176 | our $VERSION = 4.77; |
176 | our $VERSION = 4.78; |
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 |
… | |
… | |
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 | |
198 | |
199 | accept4 tee splice pipe2 pipesize |
199 | accept4 tee splice pipe2 pipesize |
200 | fexecve memfd_create eventfd |
200 | fexecve mount umount memfd_create eventfd |
201 | timerfd_create timerfd_settime timerfd_gettime |
201 | timerfd_create timerfd_settime timerfd_gettime |
202 | pidfd_open pidfd_send_signal pidfd_getfd); |
202 | pidfd_open pidfd_send_signal pidfd_getfd); |
203 | |
203 | |
204 | push @AIO_REQ, qw(aio_busy); # not exported |
204 | push @AIO_REQ, qw(aio_busy); # not exported |
205 | |
205 | |
… | |
… | |
327 | |
327 | |
328 | $fh = IO::AIO::pidfd_open $pid[, $flags] |
328 | $fh = IO::AIO::pidfd_open $pid[, $flags] |
329 | $status = IO::AIO::pidfd_send_signal $pidfh, $signal[, $siginfo[, $flags]] |
329 | $status = IO::AIO::pidfd_send_signal $pidfh, $signal[, $siginfo[, $flags]] |
330 | $fh = IO::AIO::pidfd_getfd $pidfh, $targetfd[, $flags] |
330 | $fh = IO::AIO::pidfd_getfd $pidfh, $targetfd[, $flags] |
331 | |
331 | |
|
|
332 | $retval = IO::AIO::mount $special, $path, $fstype, $flags = 0, $data = undef |
|
|
333 | $retval = IO::AIO::umount $path, $flags = 0 |
|
|
334 | |
332 | =head2 API NOTES |
335 | =head2 API NOTES |
333 | |
336 | |
334 | All the C<aio_*> calls are more or less thin wrappers around the syscall |
337 | All the C<aio_*> calls are more or less thin wrappers around the syscall |
335 | with the same name (sans C<aio_>). The arguments are similar or identical, |
338 | with the same name (sans C<aio_>). The arguments are similar or identical, |
336 | and they all accept an additional (and optional) C<$callback> argument |
339 | and they all accept an additional (and optional) C<$callback> argument |
… | |
… | |
1351 | C<FS_XFLAG_REALTIME>, C<FS_XFLAG_PREALLOC>, C<FS_XFLAG_IMMUTABLE>, C<FS_XFLAG_APPEND>, |
1354 | C<FS_XFLAG_REALTIME>, C<FS_XFLAG_PREALLOC>, C<FS_XFLAG_IMMUTABLE>, C<FS_XFLAG_APPEND>, |
1352 | C<FS_XFLAG_SYNC>, C<FS_XFLAG_NOATIME>, C<FS_XFLAG_NODUMP>, C<FS_XFLAG_RTINHERIT>, |
1355 | C<FS_XFLAG_SYNC>, C<FS_XFLAG_NOATIME>, C<FS_XFLAG_NODUMP>, C<FS_XFLAG_RTINHERIT>, |
1353 | C<FS_XFLAG_PROJINHERIT>, C<FS_XFLAG_NOSYMLINKS>, C<FS_XFLAG_EXTSIZE>, C<FS_XFLAG_EXTSZINHERIT>, |
1356 | C<FS_XFLAG_PROJINHERIT>, C<FS_XFLAG_NOSYMLINKS>, C<FS_XFLAG_EXTSIZE>, C<FS_XFLAG_EXTSZINHERIT>, |
1354 | C<FS_XFLAG_NODEFRAG>, C<FS_XFLAG_FILESTREAM>, C<FS_XFLAG_DAX>, C<FS_XFLAG_HASATTR>, |
1357 | C<FS_XFLAG_NODEFRAG>, C<FS_XFLAG_FILESTREAM>, C<FS_XFLAG_DAX>, C<FS_XFLAG_HASATTR>, |
1355 | |
1358 | |
|
|
1359 | C<BLKROSET>, C<BLKROGET>, C<BLKRRPART>, C<BLKGETSIZE>, C<BLKFLSBUF>, C<BLKRASET>, |
|
|
1360 | C<BLKRAGET>, C<BLKFRASET>, C<BLKFRAGET>, C<BLKSECTSET>, C<BLKSECTGET>, C<BLKSSZGET>, |
|
|
1361 | C<BLKBSZGET>, C<BLKBSZSET>, C<BLKGETSIZE64>, |
|
|
1362 | |
|
|
1363 | |
1356 | =item aio_sync $callback->($status) |
1364 | =item aio_sync $callback->($status) |
1357 | |
1365 | |
1358 | Asynchronously call sync and call the callback when finished. |
1366 | Asynchronously call sync and call the callback when finished. |
1359 | |
1367 | |
1360 | =item aio_fsync $fh, $callback->($status) |
1368 | =item aio_fsync $fh, $callback->($status) |
… | |
… | |
2238 | =item $retval = IO::AIO::fexecve $fh, $argv, $envp |
2246 | =item $retval = IO::AIO::fexecve $fh, $argv, $envp |
2239 | |
2247 | |
2240 | A more-or-less direct equivalent to the POSIX C<fexecve> functions, which |
2248 | A more-or-less direct equivalent to the POSIX C<fexecve> functions, which |
2241 | allows you to specify the program to be executed via a file descriptor (or |
2249 | allows you to specify the program to be executed via a file descriptor (or |
2242 | handle). Returns C<-1> and sets errno to C<ENOSYS> if not available. |
2250 | handle). Returns C<-1> and sets errno to C<ENOSYS> if not available. |
|
|
2251 | |
|
|
2252 | =item $retval = IO::AIO::mount $special, $path, $fstype, $flags = 0, $data = undef |
|
|
2253 | |
|
|
2254 | Calls the GNU/Linux mount syscall with the given arguments. All except |
|
|
2255 | C<$flags> are strings, and if C<$data> is C<undef>, a C<NULL> will be |
|
|
2256 | passed. |
|
|
2257 | |
|
|
2258 | The following values for C<$flags> are available: |
|
|
2259 | |
|
|
2260 | C<IO::AIO::MS_RDONLY>, C<IO::AIO::MS_NOSUID>, C<IO::AIO::MS_NODEV>, C<IO::AIO::MS_NOEXEC>, C<IO::AIO::MS_SYNCHRONOUS>, |
|
|
2261 | C<IO::AIO::MS_REMOUNT>, C<IO::AIO::MS_MANDLOCK>, C<IO::AIO::MS_DIRSYNC>, C<IO::AIO::MS_NOATIME>, |
|
|
2262 | C<IO::AIO::MS_NODIRATIME>, C<IO::AIO::MS_BIND>, C<IO::AIO::MS_MOVE>, C<IO::AIO::MS_REC>, C<IO::AIO::MS_SILENT>, |
|
|
2263 | C<IO::AIO::MS_POSIXACL>, C<IO::AIO::MS_UNBINDABLE>, C<IO::AIO::MS_PRIVATE>, C<IO::AIO::MS_SLAVE>, C<IO::AIO::MS_SHARED>, |
|
|
2264 | C<IO::AIO::MS_RELATIME>, C<IO::AIO::MS_KERNMOUNT>, C<IO::AIO::MS_I_VERSION>, C<IO::AIO::MS_STRICTATIME>, |
|
|
2265 | C<IO::AIO::MS_LAZYTIME>, C<IO::AIO::MS_ACTIVE>, C<IO::AIO::MS_NOUSER>, C<IO::AIO::MS_RMT_MASK>, C<IO::AIO::MS_MGC_VAL> and |
|
|
2266 | C<IO::AIO::MS_MGC_MSK>. |
|
|
2267 | |
|
|
2268 | =item $retval = IO::AIO::umount $path, $flags = 0 |
|
|
2269 | |
|
|
2270 | Invokes the GNU/Linux C<umount> or C<umount2> syscalls. Always calls |
|
|
2271 | C<umount> if C<$flags> is C<0>, otherwqise always tries to call |
|
|
2272 | C<umount2>. |
|
|
2273 | |
|
|
2274 | The following C<$flags> are available: |
|
|
2275 | |
|
|
2276 | C<IO::AIO::MNT_FORCE>, C<IO::AIO::MNT_DETACH>, C<IO::AIO::MNT_EXPIRE> and C<IO::AIO::UMOUNT_NOFOLLOW>. |
2243 | |
2277 | |
2244 | =item $numfd = IO::AIO::get_fdlimit |
2278 | =item $numfd = IO::AIO::get_fdlimit |
2245 | |
2279 | |
2246 | Tries to find the current file descriptor limit and returns it, or |
2280 | Tries to find the current file descriptor limit and returns it, or |
2247 | C<undef> and sets C<$!> in case of an error. The limit is one larger than |
2281 | C<undef> and sets C<$!> in case of an error. The limit is one larger than |