--- libev/ev.pod 2019/06/24 00:19:26 1.451 +++ libev/ev.pod 2019/06/25 04:58:36 1.452 @@ -577,7 +577,10 @@ =item C (value 64, Linux) Use the linux-specific linux aio (I C<< aio(7) >> but C<< -io_submit(2) >>) event interface available in post-4.18 kernels. +io_submit(2) >>) event interface available in post-4.18 kernels (but libev +only tries to use it in 4.19+). + +This is another linux trainwreck of an event interface. If this backend works for you (as of this writing, it was very experimental), it is the best event interface available on linux and might @@ -586,17 +589,19 @@ This backend can batch oneshot requests and supports a user-space ring buffer to receive events. It also doesn't suffer from most of the design -problems of epoll (such as not being able to remove event sources from the -epoll set), and generally sounds too good to be true. Because, this being -the linux kernel, of course it suffers from a whole new set of limitations. +problems of epoll (such as not being able to remove event sources from +the epoll set), and generally sounds too good to be true. Because, this +being the linux kernel, of course it suffers from a whole new set of +limitations, forcing you to fall back to epoll, inheriting all its design +issues. For one, it is not easily embeddable (but probably could be done using an event fd at some extra overhead). It also is subject to a system wide -limit that can be configured in F - each loop -currently requires C<61> of this number. If no aio requests are left, this -backend will be skipped during initialisation. +limit that can be configured in F. If no aio +requests are left, this backend will be skipped during initialisation, and +will switch to epoll when the loop is active. -Most problematic in practise, however, is that not all file descriptors +Most problematic in practice, however, is that not all file descriptors work with it. For example, in linux 5.1, tcp sockets, pipes, event fds, files, F and a few others are supported, but ttys do not work properly (a known bug that the kernel developers don't care about, see @@ -606,10 +611,9 @@ Overall, it seems the linux developers just don't want it to have a generic event handling mechanism other than C