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