forked from xt-sys/exectos
Initialize system interrupt handlers
This commit is contained in:
@@ -24,6 +24,7 @@ namespace KE
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
STATIC XTAPI VOID BootstrapKernel(VOID);
|
STATIC XTAPI VOID BootstrapKernel(VOID);
|
||||||
|
STATIC XTAPI VOID InitializeInterruptHandlers(VOID);
|
||||||
STATIC XTAPI VOID InitializeKernel(VOID);
|
STATIC XTAPI VOID InitializeKernel(VOID);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ KE::KernelInit::BootstrapApplicationProcessor(IN PPROCESSOR_START_BLOCK StartBlo
|
|||||||
/* Initialize per-CPU spin lock queues */
|
/* Initialize per-CPU spin lock queues */
|
||||||
KE::SpinLock::InitializeLockQueues();
|
KE::SpinLock::InitializeLockQueues();
|
||||||
|
|
||||||
|
/* Initialize interrupt handlers */
|
||||||
|
InitializeInterruptHandlers();
|
||||||
|
|
||||||
/* Lower to APC runlevel */
|
/* Lower to APC runlevel */
|
||||||
KE::RunLevel::LowerRunLevel(APC_LEVEL);
|
KE::RunLevel::LowerRunLevel(APC_LEVEL);
|
||||||
|
|
||||||
@@ -96,6 +99,9 @@ KE::KernelInit::BootstrapKernel(VOID)
|
|||||||
KE::SpinLock::InitializeAllLocks();
|
KE::SpinLock::InitializeAllLocks();
|
||||||
KE::SpinLock::InitializeLockQueues();
|
KE::SpinLock::InitializeLockQueues();
|
||||||
|
|
||||||
|
/* Initialize interrupt handlers */
|
||||||
|
InitializeInterruptHandlers();
|
||||||
|
|
||||||
/* Lower to APC runlevel */
|
/* Lower to APC runlevel */
|
||||||
KE::RunLevel::LowerRunLevel(APC_LEVEL);
|
KE::RunLevel::LowerRunLevel(APC_LEVEL);
|
||||||
|
|
||||||
@@ -123,6 +129,22 @@ KE::KernelInit::BootstrapKernel(VOID)
|
|||||||
KE::Crash::HaltSystem();
|
KE::Crash::HaltSystem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes and registers the core system interrupt handlers.
|
||||||
|
*
|
||||||
|
* @return This routine does not return any value.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
VOID
|
||||||
|
KE::KernelInit::InitializeInterruptHandlers(VOID)
|
||||||
|
{
|
||||||
|
/* Register interrupt handlers */
|
||||||
|
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_DPC, KE::Dispatcher::HandleDispatchInterrupt);
|
||||||
|
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_IPI, KE::Ipi::HandleIpiInterrupt);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This routine initializes XT kernel.
|
* This routine initializes XT kernel.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ KE::KernelInit::BootstrapApplicationProcessor(IN PPROCESSOR_START_BLOCK StartBlo
|
|||||||
/* Initialize per-CPU spin lock queues */
|
/* Initialize per-CPU spin lock queues */
|
||||||
KE::SpinLock::InitializeLockQueues();
|
KE::SpinLock::InitializeLockQueues();
|
||||||
|
|
||||||
|
/* Initialize interrupt handlers */
|
||||||
|
InitializeInterruptHandlers();
|
||||||
|
|
||||||
/* Lower to APC runlevel */
|
/* Lower to APC runlevel */
|
||||||
KE::RunLevel::LowerRunLevel(APC_LEVEL);
|
KE::RunLevel::LowerRunLevel(APC_LEVEL);
|
||||||
|
|
||||||
@@ -96,6 +99,9 @@ KE::KernelInit::BootstrapKernel(VOID)
|
|||||||
KE::SpinLock::InitializeAllLocks();
|
KE::SpinLock::InitializeAllLocks();
|
||||||
KE::SpinLock::InitializeLockQueues();
|
KE::SpinLock::InitializeLockQueues();
|
||||||
|
|
||||||
|
/* Initialize interrupt handlers */
|
||||||
|
InitializeInterruptHandlers();
|
||||||
|
|
||||||
/* Lower to APC runlevel */
|
/* Lower to APC runlevel */
|
||||||
KE::RunLevel::LowerRunLevel(APC_LEVEL);
|
KE::RunLevel::LowerRunLevel(APC_LEVEL);
|
||||||
|
|
||||||
@@ -123,6 +129,22 @@ KE::KernelInit::BootstrapKernel(VOID)
|
|||||||
KE::Crash::HaltSystem();
|
KE::Crash::HaltSystem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes and registers the core system interrupt handlers.
|
||||||
|
*
|
||||||
|
* @return This routine does not return any value.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
VOID
|
||||||
|
KE::KernelInit::InitializeInterruptHandlers(VOID)
|
||||||
|
{
|
||||||
|
/* Register interrupt handlers */
|
||||||
|
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_DPC, KE::Dispatcher::HandleDispatchInterrupt);
|
||||||
|
HL::Irq::RegisterSystemInterruptHandler(APIC_VECTOR_IPI, KE::Ipi::HandleIpiInterrupt);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This routine initializes XT kernel.
|
* This routine initializes XT kernel.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user