chriskohlhoff / asio

Asio C++ Library
http://think-async.com/Asio
4.88k stars 1.21k forks source link

Upstream QNX patch to ASIO library #1368

Open VladCimpianu opened 12 months ago

VladCimpianu commented 12 months ago

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.

The purposed patch: qnx-asio-upstream.patch

jiazhanfeng1989 commented 8 months ago

I tested the patch on QNX-700 and QNX-710 with BOOST 1.81.0 On QNX-710 the patch worked well.

On QNX-700 compiled failed.

ionotify_reactor.ipp: error: '_NTO_COF_REG_EVENTS' was not declared
ionotify_reactor.ipp: error: 'MsgRegisterEvent' was not declared
VladCimpianu commented 7 months ago

Hello!

Sorry to bother like this, but somehow do you have any contact from any responsible of Reviews and Merges into this repo? like: @chriskohlhoff @klemens-morgenstern @vinipsmaker @MarcelRaad I tried to find any way to contact them but can't find anything. I made a PR 3 months ago and still didn't get any review.

Thank you!