Refactor KE subsystem
This commit is contained in:
@@ -9,10 +9,6 @@
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
|
||||
/**
|
||||
* Sets new interrupt handler for the existing IDT entry.
|
||||
*
|
||||
@@ -28,20 +24,19 @@ namespace KE
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
Irq::SetInterruptHandler(IN ULONG Vector,
|
||||
IN PVOID Handler)
|
||||
KE::Irq::SetInterruptHandler(IN ULONG Vector,
|
||||
IN PVOID Handler)
|
||||
{
|
||||
PKPROCESSOR_BLOCK ProcessorBlock;
|
||||
|
||||
/* Get current processor block */
|
||||
ProcessorBlock = KeGetCurrentProcessorBlock();
|
||||
ProcessorBlock = KE::Processor::GetCurrentProcessorBlock();
|
||||
|
||||
/* Update interrupt handler */
|
||||
ProcessorBlock->IdtBase[(UCHAR) Vector].Offset = (USHORT)((ULONG)Handler & 0xFFFF);
|
||||
ProcessorBlock->IdtBase[(UCHAR) Vector].ExtendedOffset = (USHORT)((ULONG)Handler >> 16);
|
||||
}
|
||||
|
||||
} /* namespace */
|
||||
|
||||
|
||||
|
||||
|
@@ -9,10 +9,6 @@
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
|
||||
/**
|
||||
* This routine initializes XT kernel.
|
||||
*
|
||||
@@ -22,7 +18,7 @@ namespace KE
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
KernelInit::InitializeKernel(VOID)
|
||||
KE::KernelInit::InitializeKernel(VOID)
|
||||
{
|
||||
XTSTATUS Status;
|
||||
|
||||
@@ -45,7 +41,7 @@ KernelInit::InitializeKernel(VOID)
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
KernelInit::InitializeMachine(VOID)
|
||||
KE::KernelInit::InitializeMachine(VOID)
|
||||
{
|
||||
/* Re-enable IDE interrupts */
|
||||
HlIoPortOutByte(0x376, 0);
|
||||
@@ -70,7 +66,7 @@ KernelInit::InitializeMachine(VOID)
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
KernelInit::StartKernel(VOID)
|
||||
KE::KernelInit::StartKernel(VOID)
|
||||
{
|
||||
PKPROCESSOR_CONTROL_BLOCK Prcb;
|
||||
ULONG_PTR PageDirectory[2];
|
||||
@@ -125,7 +121,7 @@ KernelInit::StartKernel(VOID)
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
KernelInit::SwitchBootStack(VOID)
|
||||
KE::KernelInit::SwitchBootStack(VOID)
|
||||
{
|
||||
ULONG_PTR Stack;
|
||||
PVOID StartKernel;
|
||||
@@ -150,5 +146,3 @@ KernelInit::SwitchBootStack(VOID)
|
||||
"r" (StartKernel)
|
||||
: "edx", "ebp", "esp", "memory");
|
||||
}
|
||||
|
||||
} /* namespace */
|
||||
|
@@ -9,10 +9,6 @@
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
|
||||
/**
|
||||
* Initializes CPU architecture dependent context of a thread.
|
||||
*
|
||||
@@ -37,11 +33,11 @@ namespace KE
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
KThread::InitializeThreadContext(IN PKTHREAD Thread,
|
||||
IN PKSYSTEM_ROUTINE SystemRoutine,
|
||||
IN PKSTART_ROUTINE StartRoutine,
|
||||
IN PVOID StartContext,
|
||||
IN PCONTEXT ContextRecord)
|
||||
KE::KThread::InitializeThreadContext(IN PKTHREAD Thread,
|
||||
IN PKSYSTEM_ROUTINE SystemRoutine,
|
||||
IN PKSTART_ROUTINE StartRoutine,
|
||||
IN PVOID StartContext,
|
||||
IN PCONTEXT ContextRecord)
|
||||
{
|
||||
PKTHREAD_INIT_FRAME ThreadFrame;
|
||||
PFX_SAVE_FORMAT FxSaveFormat;
|
||||
@@ -50,7 +46,7 @@ KThread::InitializeThreadContext(IN PKTHREAD Thread,
|
||||
ThreadFrame = (PKTHREAD_INIT_FRAME)((ULONG_PTR)Thread->InitialStack - sizeof(KTHREAD_INIT_FRAME));
|
||||
|
||||
/* Fill floating point save area with zeroes */
|
||||
RtlZeroMemory(&ThreadFrame->NpxFrame, sizeof(FX_SAVE_AREA));
|
||||
RTL::Memory::ZeroMemory(&ThreadFrame->NpxFrame, sizeof(FX_SAVE_AREA));
|
||||
|
||||
/* Check if context provided for this thread */
|
||||
if(ContextRecord)
|
||||
@@ -59,7 +55,7 @@ KThread::InitializeThreadContext(IN PKTHREAD Thread,
|
||||
UNIMPLEMENTED;
|
||||
|
||||
/* Fill trap frame with zeroes */
|
||||
RtlZeroMemory(&ThreadFrame->TrapFrame, sizeof(KTRAP_FRAME));
|
||||
RTL::Memory::ZeroMemory(&ThreadFrame->TrapFrame, sizeof(KTRAP_FRAME));
|
||||
|
||||
/* Disable debug registers and enable context registers */
|
||||
ContextRecord->ContextFlags &= ~CONTEXT_DEBUG_REGISTERS | CONTEXT_CONTROL;
|
||||
@@ -118,5 +114,3 @@ KThread::InitializeThreadContext(IN PKTHREAD Thread,
|
||||
/* Set thread stack */
|
||||
Thread->KernelStack = &ThreadFrame->SwitchFrame;
|
||||
}
|
||||
|
||||
} /* namespace */
|
||||
|
@@ -9,10 +9,6 @@
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
|
||||
/**
|
||||
* Gets the processor block for the currently executing processor.
|
||||
*
|
||||
@@ -22,7 +18,7 @@ namespace KE
|
||||
*/
|
||||
XTAPI
|
||||
PKPROCESSOR_BLOCK
|
||||
Processor::GetCurrentProcessorBlock(VOID)
|
||||
KE::Processor::GetCurrentProcessorBlock(VOID)
|
||||
{
|
||||
/* Get processor block from FS register */
|
||||
return (PKPROCESSOR_BLOCK)AR::CpuFunc::ReadFSDualWord(FIELD_OFFSET(KPROCESSOR_BLOCK, Self));
|
||||
@@ -37,7 +33,7 @@ Processor::GetCurrentProcessorBlock(VOID)
|
||||
*/
|
||||
XTAPI
|
||||
PKPROCESSOR_CONTROL_BLOCK
|
||||
Processor::GetCurrentProcessorControlBlock(VOID)
|
||||
KE::Processor::GetCurrentProcessorControlBlock(VOID)
|
||||
{
|
||||
return (PKPROCESSOR_CONTROL_BLOCK)AR::CpuFunc::ReadFSDualWord(FIELD_OFFSET(KPROCESSOR_BLOCK, CurrentPrcb));
|
||||
}
|
||||
@@ -51,7 +47,7 @@ Processor::GetCurrentProcessorControlBlock(VOID)
|
||||
*/
|
||||
XTAPI
|
||||
ULONG
|
||||
Processor::GetCurrentProcessorNumber(VOID)
|
||||
KE::Processor::GetCurrentProcessorNumber(VOID)
|
||||
{
|
||||
return (ULONG)AR::CpuFunc::ReadFSDualWord(FIELD_OFFSET(KPROCESSOR_BLOCK, CpuNumber));
|
||||
}
|
||||
@@ -65,7 +61,7 @@ Processor::GetCurrentProcessorNumber(VOID)
|
||||
*/
|
||||
XTAPI
|
||||
PKTHREAD
|
||||
Processor::GetCurrentThread(VOID)
|
||||
KE::Processor::GetCurrentThread(VOID)
|
||||
{
|
||||
return (PKTHREAD)AR::CpuFunc::ReadFSDualWord(FIELD_OFFSET(KPROCESSOR_BLOCK, Prcb.CurrentThread));
|
||||
}
|
||||
@@ -82,7 +78,7 @@ Processor::GetCurrentThread(VOID)
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
Processor::SaveProcessorState(OUT PKPROCESSOR_STATE CpuState)
|
||||
KE::Processor::SaveProcessorState(OUT PKPROCESSOR_STATE CpuState)
|
||||
{
|
||||
/* Save CR registers */
|
||||
CpuState->SpecialRegisters.Cr0 = AR::CpuFunc::ReadControlRegister(0);
|
||||
@@ -105,7 +101,6 @@ Processor::SaveProcessorState(OUT PKPROCESSOR_STATE CpuState)
|
||||
AR::CpuFunc::StoreTaskRegister(&CpuState->SpecialRegisters.Tr);
|
||||
}
|
||||
|
||||
} /* namespace */
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user