On creation of irq_desc and irq_data.

Subhra S. Sarkar sarkar at g.clemson.edu
Thu Jun 20 22:49:21 EDT 2013


mind entropy <mindentropy <at> gmail.com> writes:

> 
> > Hi,
> >
> >   I am reading through mini2440 code. I am going through the init_irq
> > (http://lxr.free-electrons.com/source/arch/arm/mach-s3c24xx/mach-
mini2440.c#L689)
> > code. In it (http://lxr.free-electrons.com/source/arch/arm/mach-
s3c24xx/irq.c#L446)
> > there is irq_domain_add_legacy(..) which references irq_desc and
> > irq_data. I am not sure where these descriptors are created? In the
> > irq_domain_add_legacy there is a lookup for irq_data from the number.
> > Could someone tell where these descriptors are created?
> >
> > Thanks.
> 
> I think it is statically created here
> https://github.com/torvalds/linux/blob/master/kernel/irq/irqdesc.c#L243
> and the initialization happens in early_irq_init(..) here
> https://github.com/torvalds/linux/blob/master/kernel/irq/irqdesc.c#L251.
> 
> Please correct me if I am wrong.
> 
> Thanks.
> 

Within the function definition for irq_domain_add_legacy (), a pointer to 
the structure irq_data is obtained [$KERN_HOME/kernel/irq/irqdomain.c, L: 
232] by returning from function irq_get_irq_data() 
[$KERN_HOME/kernel/irq/chip.c, L: 147]. Function irq_get_irq_data() in turn 
retrieves the pointer to corresponding irq_desc structure from array of the 
same type in $KERN_HOME/kernel/irq/irqdesc.c, L: 243. So, you're correct, 
IMHO.

~Sarkar




More information about the Kernelnewbies mailing list