Register Process and Thread object types
Some checks failed
Builds / ExectOS (i686, release) (push) Failing after 29s
Builds / ExectOS (amd64, debug) (push) Failing after 31s
Builds / ExectOS (i686, debug) (push) Failing after 36s
Builds / ExectOS (amd64, release) (push) Failing after 37s

This commit is contained in:
2026-07-09 23:19:42 +02:00
parent 849d68b939
commit b83aaf7cd0
2 changed files with 43 additions and 2 deletions

View File

@@ -2,7 +2,7 @@
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/ps/process.hh * FILE: xtoskrnl/includes/ps/process.hh
* DESCRIPTION: Process Management * DESCRIPTION: Process Manager
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com> * DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/ */
@@ -24,6 +24,7 @@ namespace PS
public: public:
STATIC XTFASTCALL POBJECT_TYPE GetProcessType(VOID); STATIC XTFASTCALL POBJECT_TYPE GetProcessType(VOID);
STATIC XTFASTCALL POBJECT_TYPE GetThreadType(VOID); STATIC XTFASTCALL POBJECT_TYPE GetThreadType(VOID);
STATIC XTAPI VOID InitializeProcessManager(VOID);
}; };
} }

View File

@@ -1,7 +1,7 @@
/** /**
* PROJECT: ExectOS * PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory * COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/po/psmgr.cc * FILE: xtoskrnl/ps/psmgr.cc
* DESCRIPTION: Process Manager * DESCRIPTION: Process Manager
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com> * DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/ */
@@ -38,3 +38,43 @@ PS::ProcessManager::GetThreadType(VOID)
/* Return the thread object type descriptor */ /* Return the thread object type descriptor */
return ThreadType; return ThreadType;
} }
/**
* Initializes the Process Manager subsystem.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTAPI
VOID
PS::ProcessManager::InitializeProcessManager(VOID)
{
OBJECT_TYPE_INITIALIZER ObjectTypeInitializer;
UNICODE_STRING ObjectTypeName;
/* Clear the object type initializer */
RTL::Memory::ZeroMemory(&ObjectTypeInitializer, sizeof(ObjectTypeInitializer));
/* Initialize common attributes */
ObjectTypeInitializer.InvalidAttributes = OBJECT_PERMANENT | OBJECT_EXCLUSIVE | OBJECT_OPENIF;
ObjectTypeInitializer.Length = sizeof(ObjectTypeInitializer);
ObjectTypeInitializer.PoolType = NonPagedPool;
ObjectTypeInitializer.SecurityRequired = TRUE;
/* Initialize the Process object type */
RTL::Unicode::InitializeString(&ObjectTypeName, L"Process");
ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(EPROCESS);
ObjectTypeInitializer.DeleteProcedure = PS::Process::DeleteProcess;
ObjectTypeInitializer.GenericMapping = PS_PROCESS_GENERIC_MAPPING;
ObjectTypeInitializer.ValidAccessMask = SE_PROCESS_ALL_ACCESS;
OB::TypeRegistry::CreateObjectType(&ObjectTypeName, &ObjectTypeInitializer, NULLPTR, &ProcessType);
/* Initialize the Thread object type */
RTL::Unicode::InitializeString(&ObjectTypeName, L"Thread");
ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(ETHREAD);
ObjectTypeInitializer.DeleteProcedure = PS::Thread::DeleteThread;
ObjectTypeInitializer.GenericMapping = PS_THREAD_GENERIC_MAPPING;
ObjectTypeInitializer.ValidAccessMask = SE_THREAD_ALL_ACCESS;
OB::TypeRegistry::CreateObjectType(&ObjectTypeName, &ObjectTypeInitializer, NULLPTR, &ThreadType);
}