asio icon indicating copy to clipboard operation
asio copied to clipboard

ionotify() implementation for QNX based on QNX pulse communcation

Open VladCimpianu opened this issue 1 year ago • 4 comments

The current ASIO socket implementation on QNX uses two different processes for communication. The io_pkt (or in newer version io_sock) and the pipe daemon. Involving additional daemons in basic communication paths is always less than optional with respect to latency and CPU load. While io_pkt implements the real socket functionality, the pipe daemon is only used to implement the file descriptor select functionality. ASIOs default select_reactor implementation on QNX uses the pipe_select_interrupter, which performs the interactions with the pipe daemon. The proposed patch (initially implemented by Blackberry) implements its own ionotify_reactor, which builds on top of the ionotify() system call and asynchronous QNX pulse communication. As a result, the interaction with the additional pipe daemon is not needed anymore.

VladCimpianu avatar Nov 29 '23 12:11 VladCimpianu

Hello @chriskohlhoff @klemens-morgenstern @vinipsmaker @MarcelRaad

Sorry to notify you like this but I cant find any way to contact you. Is it possible to review this PR?

Thank you!

VladCimpianu avatar Feb 21 '24 11:02 VladCimpianu

I'm not a maintainer, sorry.

MarcelRaad avatar Feb 21 '24 11:02 MarcelRaad

I'm not a maintainer, sorry.

Do you have any contact from any maintainer?

VladCimpianu avatar Feb 21 '24 11:02 VladCimpianu

At NVIDIA we've encountered problems with QNX's select_reactor due to the limit on the max value of file descriptors that select accepts. I've written a custom reactor based on poll() (which I can submit a patch for if there's interest). But ionotify(), a native mechanism for QNX, sounds like a much better solution. It'd be great to see this patch merged.

@VladCimpianu About the patch itself. It seems like config.hpp.orig was accidentally added to the commit. There's also an __SRCVERSION macro that isn't used anywhere else in the project.

olegv11 avatar May 03 '24 08:05 olegv11