rpmsg_send_offchannel_raw(9)
π rpmsg_send_offchannel_raw β NAME π
okay so this is rpmsg_send_offchannel_raw β it sends a message across to the remote processor. that's the whole vibe. bestie is a courier β¨
(this lives in the Kernel API Manual, section 9, iykyk π)
β¨ SYNOPSIS β¨
int rpmsg_send_offchannel_raw (struct rpmsg_device *rpdev , u32 src ,
u32 dst , const void *data , int len , bool wait );
like, that's the whole signature, no cap. six things go in, one int comes out πΈ
π«Ά ARGUMENTS π«Ά
rpdevβ the rpmsg channel. this is your main character πsrcβ source address. where it's saying it's from πdstβ destination address. where it's actually going π¦dataβ payload of message. the actual goods π¦lenβ length of payload. how much goods πwaitβ indicates whether caller should block in case no TX buffers available. like, do you wanna wait in line or not π
π DESCRIPTION π
so this function is the base implementation for all of the rpmsg sending API. literally the mother of all the senders. the blueprint. the template fr fr π
it will send data of length len to dst, and say it's from src. yes bestie, it's telling a little white lie about who sent it β that's literally the point π the message will be sent to the remote processor which the rpdev channel belongs to.
the message is sent using one of the TX buffers that are available for communication with this remote processor. one of them. whichever one's free. slay π
β° okay this part matters: ifwaitis true, the caller will be blocked until either a TX buffer is available, or 15 seconds elapses (we don't want callers to sleep indefinitely due to misbehaving remote processors), and in that case-ERESTARTSYSis returned. so you don't just hang forever waiting on a rude remote processor, tyvm β the number '15' itself was picked arbitrarily; there's little point in asking drivers to provide a timeout value themselves. it's giving "we made it up and we stand by it" π
otherwise, if wait is false, and there are no TX buffers available, the function will immediately fail, and -ENOMEM will be returned. no buffer, no waiting, just vibes and an error code π
πΈ friendly reminder: normally drivers shouldn't use this function directly; instead, drivers should use the appropriaterpmsg_{try}send{to}API (seeinclude/linux/rpmsg.h). this one is the plumbing, not the faucet π°
β RETURN β
0 on success and an appropriate error value on failure. that's it, that's the return. zero means we ate, anything else means we did not eat ππ₯
π¦ SEE ALSO π¦
Kernel file ./drivers/rpmsg/virtio_rpmsg_bus.cstruct virtproc_info(9)struct rpmsg_hdr(9)struct virtio_rpmsg_channel(9)rpmsg_sg_init(9)__ept_release(9)__rpmsg_destroy_ept(9)
like. go read those too. they're iconic π
π§ and that's the page bestie!! brought to you by./drivers/rpmsg, dated October 2026, under the very official titlerpmsg_send_offchannel_raw(9)π mwah, go send some messages, ily π«Άβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms