Register APC interrupt handler
This commit is contained in:
@@ -142,6 +142,7 @@ VOID
|
||||
KE::KernelInit::InitializeInterruptHandlers(VOID)
|
||||
{
|
||||
/* Register interrupt handlers */
|
||||
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_APC, KE::Apc::HandleApcInterrupt);
|
||||
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_DPC, KE::Dispatcher::HandleDispatchInterrupt);
|
||||
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_IPI, KE::Ipi::HandleIpiInterrupt);
|
||||
}
|
||||
|
||||
@@ -76,6 +76,27 @@ KE::Apc::DeliverApc(IN KPROCESSOR_MODE ProcessorMode,
|
||||
Thread->ApcState.KernelApcPending = FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the Asynchronous Procedure Call (APC) interrupt.
|
||||
*
|
||||
* @param TrapFrame
|
||||
* Supplies a pointer to the hardware trap frame representing the interrupted context.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
XTCDECL
|
||||
VOID
|
||||
KE::Apc::HandleApcInterrupt(IN PKTRAP_FRAME TrapFrame)
|
||||
{
|
||||
/* Raise runlevel to APC level */
|
||||
KE::RaiseRunLevel RunLevel(APC_LEVEL);
|
||||
|
||||
/* Deliver the APC */
|
||||
DeliverApc(TrapFrame->PreviousMode, NULLPTR, TrapFrame);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes an APC object.
|
||||
*
|
||||
|
||||
@@ -142,6 +142,7 @@ VOID
|
||||
KE::KernelInit::InitializeInterruptHandlers(VOID)
|
||||
{
|
||||
/* Register interrupt handlers */
|
||||
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_APC, KE::Apc::HandleApcInterrupt);
|
||||
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_DPC, KE::Dispatcher::HandleDispatchInterrupt);
|
||||
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_IPI, KE::Ipi::HandleIpiInterrupt);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user