Translating messages to standard file-descriptor-based POSIX calls

In the case of the CLID server, this really isn't an option. There is no standard POSIX file-descriptor-based call to “add an NPA/NXX pair to a CLID resource manager.” However, there is the general devctl() mechanism, so if your client/server relationship requires this form, see “Translating messages to devctl() or _IO_MSG,” below.

Now, before you write off this approach (translating to standard fd-based messages), let's stop and think about some of the places where this would be useful. In an audio driver, you may have used customized QNX 4 messages to transfer the audio data to and from the resource manager. When you really look at it, read() and write() are probably much more suited to the task at hand—bulk data transfer. Setting the sampling rate, on the other hand, would be much better accomplished via the devctl() function.

Granted, not every client/server relationship will have a bulk data transfer requirement (the CLID server is such an example).