This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: QNX: IPC blocking receive

Part Number: TDA4VM

Hello,

We have an issue with the IPC Receive on QNX. There is no RPMessage_recvNb in the user-space library, and when we use RPMessage_recv with a timeout of 0 the receive still blocks. Will, there be support for the non-blocking functions. We noticed that in the ipc_osal_qnx a blocking semaphore wait is used. We have made a workaround in the driver to use a non-blocking alternative when the timeout is 0. But our question is will RPMessage_recvNb be added (since it is also missing in devctl) as an alternative or will the wait be reimplemented to not block in Ipc_qnxSemWait?

Kind Regards,

Stefan

  • Hi Stefan,

    Yes, we are aware of the current blocking behavior/bug in Ipc_qncSemWait that is totally ignoring the timeout, and already have an outstanding bug against our QNX release. It should get addressed formally in our 8.1 release. And the solution would be exactly similar to what you probably have locally, the sem_wait() call will be replaced with the sem_timedwait() API and the proper timespec struct constructed for the timeout value.

    www.qnx.com/.../

     I will also follow up to get the RPMessage_recvNb() API, we already have the functionality within the PDD ipc_api.c for it, and just need to expose/use it for the QNX API. It probably may not even require a separate devctl, the corresponding switch logic can be implemented in the IPC resmgr layer with a timeout of 0. Again, this appears to be what you have implemented from above.

    regards

    Suman