rproc_add(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’œ rproc_add(9) β€” kernel API manual, bestie edition πŸ’œ

okay so real talk, this is a page straight out of the kernel API manual, section 9, and it's about rproc_add. that's the whole vibe. let's get into it ✨


🌸 NAME 🌸

rproc_add β€” register a remote processor. that's it. that's the function. she registers, she slays πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

int rproc_add (struct rproc *rproc );

literally one argument, one int coming back. iconic minimalism πŸŽ€


πŸ“ ARGUMENTS πŸ“

  • rproc β€” the remote processor handle you wanna register. that's the thing you're signing up for the framework. your main character struct 🫢

✨ DESCRIPTION ✨

so what she actually does: rproc_add registers rproc with the remoteproc framework β€” and important detail, this happens after it's been allocated with rproc_alloc. so like, alloc first, add second. don't skip steps bestie 😭

who calls it? the platform-specific rproc implementation calls this, whenever a new remote processor device is probed. so it's the "hey a new device showed up" moment, and this is what you do about it πŸ’–


πŸ”₯ NOTE πŸ”₯

heads up, this one's important β€” this function initiates an asynchronous firmware loading context. async! it doesn't sit there and block, it kicks things off and goes about its business.

that context is gonna look for virtio devices supported by the rproc's firmware.

and if it finds them? those virtio devices get created and added. so like, as a result of registering this remote processor, additional virtio drivers might get probed. surprise guests at the party 🌈⭐


πŸ‘‘ RETURN πŸ‘‘

  • 0 on success πŸŽ‰
  • an appropriate error code otherwise πŸ™ˆ

that's the whole return situation. classic kernel energy.


πŸ’€ SEE ALSO πŸ’€

this list is LONG, get comfy. kernel file ./drivers/remoteproc/remoteproc_core.c and then:

rproc_da_to_va(9), rproc_find_carveout_by_name(9), rproc_check_carveout_da(9), rproc_handle_vdev(9), rproc_handle_trace(9), rproc_handle_devmem(9), rproc_alloc_carveout(9), rproc_release_carveout(9), rproc_handle_carveout(9), rproc_add_carveout(9), rproc_mem_entry_init(9), rproc_of_resm_mem_entry_init(9), rproc_of_parse_firmware(9), rproc_alloc_registered_carveouts(9), rproc_resource_cleanup(9), rproc_trigger_recovery(9), rproc_crash_handler_work(9), rproc_boot(9), rproc_shutdown(9), rproc_detach(9), rproc_get_by_phandle(9), rproc_set_firmware(9), devm_rproc_add(9), rproc_type_release(9), rproc_alloc(9), rproc_free(9), rproc_put(9), rproc_del(9), devm_rproc_alloc(9), rproc_add_subdev(9), rproc_remove_subdev(9), rproc_get_by_child(9), rproc_report_crash(9)

fr fr that's all of them, go read, iykyk πŸ“š


and that's the page!! mwah πŸ’‹ this little gem lives in ./drivers/remoteproc and it's dated October 2026 β€” so yeah, future vibes, no cap. catch you in the next manpage bestie πŸ§šβ€β™€οΈπŸ’œ

πŸ“¦ where this page comes from