STRUCT RPROC_MEM_ENTRY(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct rproc_mem_entry(9) πŸ’…

okay bestie, welcome to the Kernel API Manual β€” literally the group chat where the kernel explains its own data structures. today's main character is struct rproc_mem_entry, no cap. ✨


🌸 NAME 🌸

struct rproc_mem_entry β€” it's a memory entry descriptor. that's the whole vibe. one lil' struct holding all the deets about a memory entry. iconic.


πŸ¦‹ SYNOPSIS πŸ¦‹

like, this is the shape of it. copy-paste exactly, don't you dare touch a semicolon:

struct rproc_mem_entry {
    void *va;
    bool is_iomem;
    dma_addr_t dma;
    size_t len;
    u32 da;
    void *priv;
    char name[32];
    struct list_head node;
    u32 rsc_offset;
    u32 flags;
    u32 of_resm_idx;
    int (*alloc)(struct rproc *rproc, struct rproc_mem_entry *mem);
    int (*release)(struct rproc *rproc, struct rproc_mem_entry *mem);
 };

πŸŽ€ Members πŸŽ€

okay so each of these fields has a job, and honestly they all ate:

  • va β€” the virtual address. the address you actually see. main character energy fr.
  • is_iomem β€” a bool that says whether this is io memory. that's it. that's the whole field.
  • dma β€” the dma address, type dma_addr_t. the DMA's address, obviously πŸ’…
  • len β€” the length, measured in bytes. bytes!! not kilobytes, not vibes.
  • da β€” device address. different address, different lane, same energy.
  • priv β€” associated data. it's giving "miscellaneous stuff we're carrying around" 🫢
  • name β€” the associated memory region name, and it's optional. it's a char name[32] so like... 32 chars max, bestie, know your limits.
  • node β€” a struct list_head list node. it's how this struct links up with its friends πŸ”—
  • rsc_offset β€” the offset in the resource table. gotta know where you sit in the table, periodt.
  • flags β€” iommu protection flags. protection = self care, honestly.
  • of_resm_idx β€” the reserved memory phandle index. yes that's a real thing. no I will not explain the name better, that's literally what it is.
  • alloc β€” a function pointer, the specific memory allocator function. signature: int (*alloc)(struct rproc *rproc, struct rproc_mem_entry *mem);
  • release β€” also a function pointer, and it releases the associated memory. cleanup queen. signature: int (*release)(struct rproc *rproc, struct rproc_mem_entry *mem);
πŸ’€ reminder that alloc and release are pointers β€” if they're not set up right, that's a you problem, and the kernel will absolutely let you know.

⭐ SEE ALSO ⭐

go read these next, iykyk. all of them live in the kernel file ./include/linux/remoteproc.h:

  • enum rsc_handling_status(9)
  • struct rproc_ops(9)
  • enum rproc_state(9)
  • enum rproc_crash_type(9)
  • enum rproc_dump_mechanism(9)
  • struct rproc_dump_segment(9)
  • enum rproc_features(9)
  • struct rproc(9)
  • struct rproc_subdev(9)
  • struct rproc_vring(9)
  • struct rproc_vdev(9)

and that's the whole page, bestie 🧚 no notes, absolute slay.

source: ./include/linux Β· date: October 2026 β€” mwah, catch you in the next manpage πŸ’–πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from