Files
exectos/xtoskrnl/ps/process.cc
Aiken Harris 02d0f3f538
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 33s
Builds / ExectOS (i686, release) (push) Successful in 29s
Builds / ExectOS (amd64, debug) (push) Successful in 50s
Builds / ExectOS (i686, debug) (push) Successful in 48s
Introduce PS subsystem with IDLE process and thread creation
2026-06-04 13:09:09 +02:00

44 lines
1.1 KiB
C++

/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/po/process.cc
* DESCRIPTION: Process Management
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/
#include <xtos.hh>
/**
* Creates the global IDLE process.
*
* @param Prcb
* Supplies a pointer to the Processor Control Block of the Bootstrap Processor.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTAPI
VOID
PS::Process::CreateIdleProcess(IN PKPROCESSOR_CONTROL_BLOCK Prcb)
{
ULONG_PTR PageDirectory[2];
PKPROCESS IdleProcess;
PKTHREAD IdleThread;
/* Get initial IDLE thread */
IdleThread = Prcb->CurrentThread;
/* Get initial IDLE process */
IdleProcess = IdleThread->ApcState.Process;
/* Setup placeholder for page directory entries */
PageDirectory[0] = 0;
PageDirectory[1] = 0;
/* Initialize Idle process and Idle thread */
KE::KProcess::InitializeIdleProcess(IdleProcess, PageDirectory);
KE::KThread::InitializeIdleThread(IdleProcess, IdleThread, Prcb, AR::ProcessorSupport::GetBootStack());
}