STRUCT IRQ_DATA(9)
β¨ struct irq_data(9) β¨
okay so bestie, welcome to the Kernel API Manual π this one is about struct irq_data, which is literally the per irq chip data that gets passed down to chip functions. yes. that's the whole vibe. it's giving "little backpack of interrupt facts that every chip function gets handed" πβ¨
π¦ NAME π¦
struct irq_data β per irq chip data passed down to chip functions π
πΈ SYNOPSIS πΈ
like, here's the whole thing, character for character, no cap:
struct irq_data {
u32 mask;
unsigned int irq;
irq_hw_number_t hwirq;
struct irq_common_data *common;
struct irq_chip *chip;
struct irq_domain *domain;
#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY;
struct irq_data *parent_data;
#endif;
void *chip_data;
};
note the #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY; bit, okay? parent_data only shows up when that config is on. the semicolons in there are just how it's written, don't come for me π
π Members π
so we're gonna go through every single one, because every single one matters:
maskβ precomputed bitmask for accessing the chip registers. it's already crunched for you, bestie, no math needed at runtime π₯irqβ the interrupt number. yes, that one π«Άhwirqβ hardware interrupt number, local to the interrupt domain. so it's the hardware's own little name for it, not the linux one πcommonβ point to data shared by all irqchips πchipβ low level interrupt hardware access. this is where the actual chip methods live, the gritty stuff βdomainβ Interrupt translation domain; responsible for mapping between hwirq number and linux irq number. so basically it's the translator between hardware-speak and linux-speak, a whole bilingual icon πparent_dataβ pointer to parentstruct irq_datato support hierarchy irq_domain. it's the nepo baby field, it literally points at its parent π (and remember, it's inside thatCONFIG_IRQ_DOMAIN_HIERARCHY#ifdef)chip_dataβ platform-specific per-chip private data for the chip methods, to allow shared chip implementations. iykyk π
π« SEE ALSO π«
go read these next, bestie, they're all in the kernel file ./include/linux/irq.h:
struct irq_common_data(9)struct irq_chip(9)struct irq_chip_regs(9)struct irq_chip_type(9)struct irq_chip_generic(9)enum irq_gc_flags(9)struct irq_domain_chip_generic_info(9)
ngl this page is short but every field is doing main character energy work. don't skip any of them, fr fr π
that's a wrap, love you, bye πβ¨ this page came to you from ./include/linux, dated October 2026, and it's filed under struct irq_data(9) if you ever need to find it again ππ¦
π¦ 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