Client/Server using an I/O manager
Now, what if the client that you're porting used an I/O manager? How would we convert that to QNX Neutrino? Answer: we already did. Once we establish a file-descriptor-based interface, we're using a resource manager. Under QNX Neutrino, you'd almost never use a raw message interface. Why not?
Proxies
Under QNX 4, the only way to send a non-blocking message was to create a proxy via qnx_proxy_attach(). This function returns a proxy ID (which is taken from the same number space as process IDs), which you can then Trigger() or return from an interrupt service routine (see below).