Files
exectos/xtoskrnl/ke/kprocess.cc
Aiken Harris 4947f788d5
Some checks failed
Builds / ExectOS (amd64, debug) (push) Failing after 23s
Builds / ExectOS (amd64, release) (push) Failing after 27s
Builds / ExectOS (i686, debug) (push) Failing after 21s
Builds / ExectOS (i686, release) (push) Failing after 25s
Migrate KE subsystem to C++
2025-09-09 23:20:50 +02:00

97 lines
2.5 KiB
C++

/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/ke/kprocess.cc
* DESCRIPTION: XT kernel process manipulation support
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#include <xtos.hh>
/* Kernel Library */
namespace KE
{
XTAPI
PEPROCESS
KProcess::GetInitialProcess(VOID)
{
return &InitialProcess;
}
/**
* Initializes the process.
*
* @param Process
* Supplies a pointer to process that will be initialized.
*
* @param Priority
* Specifies the process priority.
*
* @param Affinity
* Specifies a process affinity designating processors on which process can run.
*
* @param DirectoryTable
* Supplies a pointer to the directory table.
*
* @param Alignment
* Specifies the exceptions alignment of the process.
*
* @return This routine does not return any value.
*
* @since NT 3.5
*/
XTAPI
VOID
KProcess::InitializeProcess(IN OUT PKPROCESS Process,
IN KPRIORITY Priority,
IN KAFFINITY Affinity,
IN PULONG_PTR DirectoryTable,
IN BOOLEAN Alignment)
{
/* Initialize process dispatcher header */
Process->Header.Type = ProcessObject;
/* Initialize process wait list */
RtlInitializeListHead(&Process->Header.WaitListHead);
/* Initialize process list heads */
RtlInitializeListHead(&Process->ProfileListHead);
RtlInitializeListHead(&Process->ReadyListHead);
RtlInitializeListHead(&Process->ThreadListHead);
/* Set base process properties */
Process->BasePriority = Priority;
Process->Affinity = Affinity;
Process->AutoAlignment = Alignment;
Process->DirectoryTable[0] = DirectoryTable[0];
Process->DirectoryTable[1] = DirectoryTable[1];
Process->StackCount = MAXSHORT;
/* Set thread quantum */
Process->Quantum = THREAD_QUANTUM;
/* Set IOPM offset */
Process->IopmOffset = sizeof(KTSS);
/* Set initial process state */
Process->State = ProcessInMemory;
}
} /* namespace */
/* TEMPORARY FOR COMPATIBILITY WITH C CODE */
XTAPI
VOID
KeInitializeProcess(IN OUT PKPROCESS Process,
IN KPRIORITY Priority,
IN KAFFINITY Affinity,
IN PULONG_PTR DirectoryTable,
IN BOOLEAN Alignment)
{
KE::KProcess::InitializeProcess(Process, Priority, Affinity, DirectoryTable, Alignment);
}