I was a telecommunication engineer for ten years. It is my first year to work in computer field. The computer has greatly changed since I left school. Many thins are very interesting. Below is something I was once puzzled, who would check it is correct or not? Thank you bari, the link is very useful. ===================================================================== There are two mappings in computer system: 1. the mapping between the device interrupt pins and the IRQs of APIC, and MPTABLE defines the mapping. 2. the mapping between IRQs of APIC and software vectors with x86, and the IOAPIC redirection table registers define the mapping. At beginning, I was confused by the Linux function:
int request_irq( unsigned int irq, void(*handler)(int, void*, struct pt_regs*), unsigned long irqflags, const char *devname, void * dev_id)
The first input parameter irq, I thought it was a software vector. When I was in University, I could set any software interrupt under DOS with BIOS INT or directly writing the first 256*4 byte interrupt table. So the idea led me to a wrong direction. The file io_apic.c under arch/i386/kernel tells me all secret: the function assign_irq_vector(irq), as its name, assigns a vector to an IRQ of APIC. ======================================================================
Best Regards
??? Feng Libo @ AMD Ext: 20906 Mobile Phone: 13683249071 Office Phone: 0086-010-62801406
-----Original Message----- From: linuxbios-bounces@linuxbios.org [mailto:linuxbios-bounces@linuxbios.org] On Behalf Of bari Sent: Saturday, November 17, 2007 11:40 PM To: FengLibo Cc: linuxbios@linuxbios.org Subject: Re: [LinuxBIOS] IRQ question
FengLibo wrote:
A simple question: when talking about IRQ, you mean one of the 256 interrupt vectors within x86, or one of the pins of APIC, or one of the pins of 8259? I always got confused by it.
Yes! I see the same term "IRQ" used for both hardware and software interrupts all the time. Context is the only key at times as to which interrupt the writer is referring to.
Software Interrupt = 256 interrupt vectors within x86 Hardware Interrupt = "IRQ" signals on APIC, 8259 or other hardware interrupt controller
http://en.wikipedia.org/wiki/Interrupt
Another questiong about IRQ: The interrupt line register in PCI configurationn space also contains an IRQ number, for example, my ethernet card is IRQ 10, the IRQ number is the interrupter vector in x86 or the physical signal in APIC or PIC?
PCI Hardware Interrupt
http://tldp.org/HOWTO/Plug-and-Play-HOWTO-7.html http://en.wikipedia.org/wiki/Peripheral_Component_Interconnect#Interrupts
-Bari
-- linuxbios mailing list linuxbios@linuxbios.org http://www.linuxbios.org/mailman/listinfo/linuxbios