VOID NTAPI HalEndSystemInterrupt (KIRQL Irql, ULONG Unknown2) /* * FUNCTION: Finish a system interrupt and restore the specified irq level. */ { HalpLowerIrql(Irql); HalpEndSystemInterrupt(Irql); }
/********************************************************************** * NAME EXPORTED * KfLowerIrql * * DESCRIPTION * Restores the irq level on the current processor * * ARGUMENTS * NewIrql = Irql to lower to * * RETURN VALUE * None * * NOTES * Uses fastcall convention */ VOID FASTCALL KfLowerIrql (KIRQL NewIrql) { KIRQL oldIrql = KeGetCurrentIrql(); if (NewIrql > oldIrql) { DPRINT1 ("NewIrql %x CurrentIrql %x\n", NewIrql, oldIrql); ASSERT(FALSE); } HalpLowerIrql (NewIrql, FALSE); }
/********************************************************************** * NAME EXPORTED * KfLowerIrql * * DESCRIPTION * Restores the irq level on the current processor * * ARGUMENTS * NewIrql = Irql to lower to * * RETURN VALUE * None * * NOTES * Uses fastcall convention */ VOID FASTCALL KfLowerIrql (KIRQL NewIrql) { DPRINT("KfLowerIrql(NewIrql %d)\n", NewIrql); if (NewIrql > KeGetPcr()->Irql) { DbgPrint ("(%s:%d) NewIrql %x CurrentIrql %x\n", __FILE__, __LINE__, NewIrql, KeGetPcr()->Irql); KeBugCheck(IRQL_NOT_LESS_OR_EQUAL); for(;;); } HalpLowerIrql(NewIrql); }
VOID NTAPI HalEndSystemInterrupt (KIRQL Irql, IN PKTRAP_FRAME TrapFrame) /* * FUNCTION: Finish a system interrupt and restore the specified irq level. */ { ULONG Flags; Flags = __readeflags(); if (Flags & EFLAGS_INTERRUPT_MASK) { DPRINT1("HalEndSystemInterrupt was called with interrupt's enabled\n"); ASSERT(FALSE); } APICSendEOI(); HalpLowerIrql (Irql, TRUE); }