Re: Interrupt Handling in Linux.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Hi,
Thanks for the info. But when an interrupt occurs it looks into the Interrupt Descriptor Table based on the corresponding interrupt and branches to the offset specified in the Interrupt Descriptor Table. The interrupts from 0 are mapped to interrupts from 32 onwards. That is an IRQ 0 produces the instruction INT32 and the code that needs to be executed for processing this interrupt is obtained from the IDT table at IDT[n+32]. The vector number (32) is pushed on to the stack by subtracting it from 256. After pushing the remaining registers on to the Stack, the function do_interrupt() is called. The do_interrupt(), then takes the encoded vector number from the stack , it ands this number with 255 and uses this number as an index into the irq_desc array which stores the interrupt handlers for the various interrupts apart from other things. If this is the case then instead of using irq_desc[0] , it would use irq_desc[32]. Hence Iam not able to comprehend how this scenario works.. Could someone help me on this.
Cheers,
Sajay
[Index of Archives]
[Newbies FAQ]
[Linux Kernel Mentors]
[Linux Kernel Development]
[IETF Annouce]
[Git]
[Networking]
[Security]
[Bugtraq]
[Yosemite]
[MIPS Linux]
[ARM Linux]
[Linux RAID]
[Linux SCSI]
[Linux ACPI]