STRUCT IRQ_DESC(9)
π struct irq_desc(9) β interrupt descriptor π
okay so this is the Kernel API Manual page for struct irq_desc, aka the interrupt descriptor. Itβs giving core-kernel main character energy, and weβre gonna walk the whole struct without skipping a single field, no cap β¨
πΈ NAME πΈ
struct irq_desc β interrupt descriptor
β¨ SYNOPSIS β¨
struct irq_desc {
struct irq_common_data irq_common_data;
struct irq_data irq_data;
struct irqstat __percpu *kstat_irqs;
irq_flow_handler_t handle_irq;
struct irqaction *action;
unsigned int status_use_accessors;
unsigned int core_internal_state__do_not_mess_with_it;
unsigned int depth;
unsigned int wake_depth;
unsigned long tot_count;
unsigned long last_unhandled;
unsigned int irq_count;
unsigned int irqs_unhandled;
atomic_t threads_handled;
int threads_handled_last;
raw_spinlock_t lock;
struct cpumask *percpu_enabled;
#ifdef CONFIG_SMP;
struct irq_redirect redirect;
const struct cpumask *affinity_hint;
struct irq_affinity_notify *affinity_notify;
#ifdef CONFIG_GENERIC_PENDING_IRQ;
cpumask_var_t pending_mask;
#endif;
#endif;
unsigned long threads_oneshot;
atomic_t threads_active;
wait_queue_head_t wait_for_threads;
#ifdef CONFIG_PM_SLEEP;
unsigned int nr_actions;
unsigned int no_suspend_depth;
unsigned int cond_suspend_depth;
unsigned int force_resume_depth;
#endif;
#ifdef CONFIG_PROC_FS;
struct proc_dir_entry *dir;
#endif;
#ifdef CONFIG_GENERIC_IRQ_DEBUGFS;
struct dentry *debugfs_file;
const char *dev_name;
#endif;
rcuref_t refcnt;
#ifdef CONFIG_SPARSE_IRQ;
struct rcu_head rcu;
struct kobject kobj;
#endif;
struct mutex request_mutex;
int parent_irq;
struct module *owner;
const char *name;
#ifdef CONFIG_HARDIRQS_SW_RESEND;
struct hlist_node resend_node;
#endif;
};
π Members π
okay bestie, hereβs the member-by-member vibe check. every field is here, every description is here, and yes weβre keeping the lore intact π
irq_common_dataβ per irq and chip data passed down to chip functions.kstat_irqsβ irq stats per cpu.handle_irqβ the highlevel irq-events handler.actionβ the irq action chain.status_use_accessorsβ status information.core_internal_state__do_not_mess_with_itβ core internal status information. and yes the field name literally says do not mess with it β respect the boundary π«.depthβ disable-depth</> for nestedirq_disablecalls.wake_depthβ enable depth</> for multipleirq_set_irq_wakecallers.tot_countβ stats field for non-percpu irqs.last_unhandledβ aging timer for unhandled count.irq_countβ stats field to detect stalled irqs.irqs_unhandledβ stats field for spurious unhandled interrupts.threads_handledβ stats field for deferred spurious detection of threaded handlers.threads_handled_lastβ comparator field for deferred spurious detection of threaded handlers.lockβ locking for SMP.redirectβ facility for redirecting interrupts viairq_work.affinity_hintβ hint to user space for preferred irq affinity.affinity_notifyβ context for notification of affinity changes.pending_maskβ pending rebalanced interrupts.threads_oneshotβ bitfield to handle shared oneshot threads.threads_activeβ number of irqaction threads currently running.wait_for_threadsβ wait queue for sync_irq to wait for threaded handlers.nr_actionsβ number of installed actions on this descriptor.no_suspend_depthβ number of irqactions on a irq descriptor withIRQF_NO_SUSPENDset.force_resume_depthβ number of irqactions on a irq descriptor withIRQF_FORCE_RESUMEset.dirβ the/proc/irq/procfs entry.debugfs_fileβ dentry for the debugfs file.refcntβ reference count mainly for/proc/interrupts.rcuβ rcu head for delayed free.kobjβ kobject used to represent this struct in sysfs.request_mutexβ mutex to protect request/free before lockingdesc->lock.nameβ flow handler name for/proc/interruptsoutput.
π SEE ALSO π
Kernel file ./include/linux/irqdesc.h β plus struct irqstat(9), struct irq_redirect(9), irq_set_handler_locked(9), and irq_set_chip_handler_name_locked(9) π«Ά
thatβs the whole page, bestie π
β source path ./include/linux, dated October 2026, and itβs the struct irq_desc(9) entry in the Kernel API Manual. go forth and interrupt responsibly β¨π
π¦ 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