Tool/software:
Hi,
I’m working on a multi-core IPC system using RPMsg on a TI SoC. From user space I send messages to remote cores via the RPMsg character device (e.g. /dev/rpmsgX). The problem: write() blocks indefinitely when the remote endpoint is not ready.
I tried calling select() / poll() on the fd before write(), but select() always times out (errno 110 / ETIMEDOUT) even though a plain blocking write() succeeds when the remote becomes ready shortly after. It looks like the RPMsg char device might not expose write-readiness the same way sockets/pipes do.
-
Is there a recommended way to implement a non-blocking or timeout send for RPMsg char devices on Linux?
-
Do standard RPMsg char drivers implement
poll()/select()for write readiness? If not, are there known patches or driver options to enable that? -
Any alternative techniques to avoid indefinite blocking on
write()if the remote endpoint is not ready? (e.g., driver changes, kernel API, user-space pattern) -
Any TI-specific APIs, examples, or best practices for robust send-with-timeout in RPMsg-based apps?
Regards,
Mary