This uses io_uring API. To get things working you need a fairly recent kernel (at least version 5.6).
Why io_uring: Making a comparable implementation for older versions of Linux kernel using a different API seems troublesome. For example, epoll only works well with sockets, and Linux AIO requires O_DIRECT flag (no caching and needs buffer alignment) when opening files. Also Linux AIO has no real support for anything socket-specific.
This pull request includes:
Scheduling operations with io_service.
File read, write & cancel.
It does not include:
Scheduling with timer.
Sockets.
I also updated CMake files from #158 inside a separate branch in my repository to reflect the additions. This might be useful for someone.
This uses io_uring API. To get things working you need a fairly recent kernel (at least version 5.6).
Why io_uring: Making a comparable implementation for older versions of Linux kernel using a different API seems troublesome. For example, epoll only works well with sockets, and Linux AIO requires O_DIRECT flag (no caching and needs buffer alignment) when opening files. Also Linux AIO has no real support for anything socket-specific.
This pull request includes:
It does not include:
I also updated CMake files from #158 inside a separate branch in my repository to reflect the additions. This might be useful for someone.