rpmsg_send_offchannel_raw(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’Œ 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: if wait is 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 -ERESTARTSYS is 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 appropriate rpmsg_{try}send{to} API (see include/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 πŸ¦‹

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 title rpmsg_send_offchannel_raw(9) πŸ’œ mwah, go send some messages, ily 🫢✨
πŸ“¦ where this page comes from