struct irq_desc — interrupt descriptor
struct irq_desc { void fastcall (* handle_irq) (unsigned int irq,struct irq_desc *desc,struct pt_regs *regs); struct irq_chip * chip; void * handler_data; void * chip_data; struct irqaction * action; unsigned int status; unsigned int depth; unsigned int irq_count; unsigned int irqs_unhandled; spinlock_t lock; #ifdef CONFIG_SMP cpumask_t affinity; unsigned int cpu; #endif #if defined(CONFIG_GENERIC_PENDING_IRQ) || defined(CONFIG_IRQBALANCE) cpumask_t pending_mask; unsigned int move_irq; #endif #ifdef CONFIG_PROC_FS struct proc_dir_entry * dir; #endif };
highlevel irq-events handler [if NULL, __do_IRQ
]
low level interrupt hardware access
per-IRQ data for the irq_chip methods
platform-specific per-chip private data for the chip methods, to allow shared chip implementations
the irq action chain
status information
disable-depth, for nested irq_disable
calls
stats field to detect stalled irqs
stats field for spurious unhandled interrupts
locking for SMP
IRQ affinity on SMP
cpu index useful for balancing
pending rebalanced interrupts
need to re-target IRQ destination
/proc/irq/ procfs entry