ptos: ps: Add process init logic

Signed-off-by: Chloe M <chloe@mensia.org>
This commit is contained in:
2026-07-13 22:01:39 -04:00
parent 27b7e930fa
commit 9d7ff0461f
2 changed files with 97 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
/*
* Copyright (c) 2026, Chloe M.
* Provided under the BSD-3 clause.
*
* Description: Process management
* Author: Chloe M.
*/
#include <ps/process.h>
#include <ex/pool.h>
#include <string.h>
#include <atomic.h>
static UQUAD ProcessId = 0;
PT_STATUS
PsCreateProcess(const CHAR *Name, ULONG Flags, PROCESS **Result)
{
USIZE NameLen;
PROCESS *Process;
if (Name == NULL || Result == NULL) {
return STATUS_INVALID_PARAM;
}
/* TODO: Support user-level processes */
if (ISSET(Flags, PS_USER)) {
return STATUS_NOT_SUPPORTED;
}
NameLen = RtlStrLen(Name);
if (NameLen >= PS_NAME_MAX - 1) {
return STATUS_NAME_TOO_LONG;
}
Process = ExAllocatePoolWithTag(
POOL_NON_PAGED,
sizeof(*Process),
PS_POOL_TAG
);
if (Process == NULL) {
return STATUS_NO_MEMORY;
}
RtlMemCpy(Process->Name, Name, NameLen);
Process->Pid = AtomicIncQuad(&ProcessId);
Process->Flags = Flags;
*Result = Process;
return STATUS_SUCCESS;
}