STRUCT RPROC(9)
π 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 inpriv, 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 ofcached_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 onchar_devrelease. 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
- 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