- Use common KiInterruptDispatch2 function for both UP and MP kernels.

svn path=/trunk/; revision=11519
This commit is contained in:
Filip Navara 2004-10-31 23:57:15 +00:00
parent a30fcc1117
commit c8583d9809

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: irq.c,v 1.50 2004/10/31 12:49:37 hbirr Exp $ /* $Id: irq.c,v 1.51 2004/10/31 23:57:15 navaraf Exp $
* *
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
* FILE: ntoskrnl/ke/i386/irq.c * FILE: ntoskrnl/ke/i386/irq.c
@ -289,8 +289,6 @@ KeTrapFrameToIRQTrapFrame(PKTRAP_FRAME TrapFrame,
IrqTrapFrame->Eflags = TrapFrame->Eflags; IrqTrapFrame->Eflags = TrapFrame->Eflags;
} }
#ifdef MP
VOID STDCALL VOID STDCALL
KiInterruptDispatch2 (ULONG vector, KIRQL old_level) KiInterruptDispatch2 (ULONG vector, KIRQL old_level)
/* /*
@ -304,7 +302,7 @@ KiInterruptDispatch2 (ULONG vector, KIRQL old_level)
PKINTERRUPT isr; PKINTERRUPT isr;
PLIST_ENTRY current; PLIST_ENTRY current;
DPRINT1("I(0x%.08x, 0x%.08x)\n", vector, old_level); DPRINT("I(0x%.08x, 0x%.08x)\n", vector, old_level);
/* /*
* Iterate the list until one of the isr tells us its device interrupted * Iterate the list until one of the isr tells us its device interrupted
@ -320,6 +318,8 @@ KiInterruptDispatch2 (ULONG vector, KIRQL old_level)
} }
} }
#ifdef MP
VOID VOID
KiInterruptDispatch (ULONG Vector, PKIRQ_TRAPFRAME Trapframe) KiInterruptDispatch (ULONG Vector, PKIRQ_TRAPFRAME Trapframe)
/* /*
@ -389,38 +389,6 @@ KiInterruptDispatch (ULONG Vector, PKIRQ_TRAPFRAME Trapframe)
#else /* MP */ #else /* MP */
VOID STDCALL
KiInterruptDispatch2 (ULONG Irq, KIRQL old_level)
/*
* FUNCTION: Calls all the interrupt handlers for a given irq.
* ARGUMENTS:
* Irq - The number of the irq to call handlers for.
* old_level - The irql of the processor when the irq took place.
* NOTES: Must be called at DIRQL.
*/
{
PKINTERRUPT isr;
PLIST_ENTRY current;
/*
* Iterate the list until one of the isr tells us its device interrupted
*/
current = isr_table[Irq].Flink;
while (current != &isr_table[Irq])
{
isr = CONTAINING_RECORD(current,KINTERRUPT,Entry);
#if 0
if (isr->ServiceRoutine(isr, isr->ServiceContext))
{
break;
}
#else
isr->ServiceRoutine(isr, isr->ServiceContext);
#endif
current = current->Flink;
}
}
VOID VOID
KiInterruptDispatch (ULONG irq, PKIRQ_TRAPFRAME Trapframe) KiInterruptDispatch (ULONG irq, PKIRQ_TRAPFRAME Trapframe)
/* /*
@ -464,6 +432,9 @@ KiInterruptDispatch (ULONG irq, PKIRQ_TRAPFRAME Trapframe)
{ {
KeIRQTrapFrameToTrapFrame(Trapframe, &KernelTrapFrame); KeIRQTrapFrameToTrapFrame(Trapframe, &KernelTrapFrame);
KeUpdateSystemTime(&KernelTrapFrame, PROFILE_LEVEL); KeUpdateSystemTime(&KernelTrapFrame, PROFILE_LEVEL);
#ifdef KDBG
KdbProfileInterrupt(Trapframe->Eip);
#endif /* KDBG */
} }
else else
{ {
@ -473,13 +444,6 @@ KiInterruptDispatch (ULONG irq, PKIRQ_TRAPFRAME Trapframe)
KiInterruptDispatch2(irq, old_level); KiInterruptDispatch2(irq, old_level);
} }
#ifdef KDBG
if (irq == 0)
{
KdbProfileInterrupt(Trapframe->Eip);
}
#endif /* KDBG */
/* /*
* End the system interrupt. * End the system interrupt.
*/ */