STRUCT RPROC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct rproc(9) πŸ’–

okay bestie, welcome to the struct rproc(9) page from the Kernel API Manual β€” this is the whole vibe of a physical remote processor device, field by field. No skips, no cap ✨


✨ NAME ✨

struct rproc β€” represents a physical remote processor device. Literally the main character struct for a remote proc, and we're about to meet every single member πŸ’…

πŸ› οΈ SYNOPSIS πŸ› οΈ

struct rproc {
    struct list_head node;
    struct iommu_domain *domain;
    const char *name;
    const char *firmware;
    void *priv;
    struct rproc_ops *ops;
    struct device dev;
    atomic_t power;
    unsigned int state;
    enum rproc_dump_mechanism dump_conf;
    struct mutex lock;
    struct dentry *dbg_dir;
    struct list_head traces;
    int num_traces;
    struct list_head carveouts;
    struct list_head mappings;
    u64 bootaddr;
    struct list_head rvdevs;
    struct list_head subdevs;
    struct idr notifyids;
    int index;
    struct work_struct attach_work;
    struct work_struct crash_handler;
    spinlock_t crash_handler_lock;
    bool deleting;
    unsigned int crash_cnt;
    bool recovery_disabled;
    int max_notifyid;
    struct resource_table *table_ptr;
    struct resource_table *clean_table;
    struct resource_table *cached_table;
    size_t table_sz;
    bool has_iommu;
    bool auto_boot;
    bool sysfs_read_only;
    bool subdevs_started;
    struct list_head dump_segments;
    int nb_vdev;
    u8 elf_class;
    u16 elf_machine;
    struct cdev cdev;
    bool cdev_put_on_release;
    unsigned long features[BITS_TO_LONGS( RPROC_MAX_FEATURES)];
};

🧩 Members 🧩

  • node β€” list node of this rproc object. It's the little linked-list hookup, essential but lowkey doing its own thing.
  • domain β€” iommu domain. The IOMMU situation, no cap.
  • name β€” human readable name of the rproc. The cute display name, iykyk.
  • firmware β€” name of firmware file to be loaded. The firmware file's name, periodt.
  • priv β€” private data which belongs to the platform-specific rproc module. Platform-specific secrets stay in priv, bestie.
  • ops β€” platform-specific start/stop rproc handlers. The start/stop callback squad.
  • dev β€” virtual device for refcounting and common remoteproc behavior. It's giving refcount + common remoteproc behavior energy.
  • power β€” refcount of users who need this rproc powered up. Literally counting who needs this thing on.
  • state β€” state of the device. The current state, iconic.
  • dump_conf β€” Currently selected coredump configuration. The coredump config that's selected rn.
  • lock β€” lock which protects concurrent manipulations of the rproc. The lock that keeps concurrent rproc manipulation from getting messy.
  • dbg_dir β€” debugfs directory of this rproc device. Its debugfs home.
  • traces β€” list of trace buffers. Trace buffers in a list, slay.
  • num_traces β€” number of trace buffers. The count, obviously.
  • carveouts β€” list of physically contiguous memory allocations. All the physically contiguous memory allocations, listed.
  • mappings β€” list of iommu mappings we initiated, needed on shutdown. The IOMMU mappings we started, needed on shutdown.
  • bootaddr β€” address of first instruction to boot rproc with (optional). Optional first-instruction address, cute.
  • rvdevs β€” list of remote virtio devices. Remote virtio devices, assembled.
  • subdevs β€” list of subdevices, to following the running state. Subdevices tracking the running state.
  • notifyids β€” idr for dynamically assigning rproc-wide unique notify ids. Dynamically assigning those rproc-wide unique notify ids.
  • index β€” index of this rproc device. Its index, fr fr.
  • attach_work β€” workqueue for attaching rproc. The attach workqueue.
  • crash_handler β€” workqueue for handling a crash. The crash-handling workqueue.
  • crash_handler_lock β€” serializes crash handler queueing and deletion. Keeps crash handler queueing and deletion serialized.
  • deleting β€” remoteproc deletion has begun. The deletion-started flag.
  • crash_cnt β€” crash counter. Counting crashes.
  • recovery_disabled β€” flag that state if recovery was disabled. The flag saying recovery was disabled.
  • max_notifyid β€” largest allocated notify id. The biggest allocated notify id.
  • table_ptr β€” pointer to the resource table in effect. Points at the resource table in effect.
  • clean_table β€” copy of the resource table without modifications. Used when a remote processor is attached or detached from the core. The untouched resource-table copy, there for attach/detach.
  • cached_table β€” copy of the resource table. The cached resource table.
  • table_sz β€” size of cached_table. Size of the cached table, periodt.
  • has_iommu β€” flag to indicate if remote processor is behind an MMU. MMU-behind check flag.
  • auto_boot β€” flag to indicate if remote processor should be auto-started. Auto-start check flag.
  • sysfs_read_only β€” flag to make remoteproc sysfs files read only. Makes the sysfs files read only.
  • subdevs_started β€” flag to indicate if subdevs have started. Have the subdevs started? This flag knows.
  • dump_segments β€” list of segments in the firmware. Firmware segments, listed.
  • nb_vdev β€” number of vdev currently handled by rproc. How many vdev rproc is handling rn.
  • elf_class β€” firmware ELF class. ELF class of the firmware.
  • elf_machine β€” firmware ELF machine. ELF machine of the firmware.
  • cdev β€” character device of the rproc. The char device.
  • cdev_put_on_release β€” flag to indicate if remoteproc should be shutdown on char_dev release. Shutdown-on-char-dev-release flag.
  • features β€” indicate remoteproc features. The remoteproc features indicator.

πŸ”— SEE ALSO πŸ”—

Kernel file ./include/linux/remoteproc.h β€” then the whole squad: struct rproc_mem_entry(9), 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_subdev(9), struct rproc_vring(9), and struct rproc_vdev(9). Go off, bestie πŸ¦‹


mwah πŸ’‹ this page lives in ./include/linux, dated October 2026, and it's literally struct rproc(9) β€” bye bestie! 🌈

πŸ“¦ where this page comes from