Lifecycle management of threads #29

Sapludināts
harraiken sapludināja 240 revīzijas no threads uz master 2026-09-07 13:45:09 +02:00
3 mainīti faili ar 17 papildinājumiem un 4 dzēšanām
Rāda tikai revīzijas f680830b53 izmaiņas - Rādīt visas revīzijas

Parādīt failu

@@ -82,7 +82,8 @@ KE::KProcess::InitializeIdleProcess(IN OUT PKPROCESS Process,
Status = MM::Allocator::AllocatePool(NonPagedPool, MapSize, (PVOID*)&Process->ActiveProcessors);
if(Status != STATUS_SUCCESS)
{
/* Memory allocation failed, return the status code */
/* Memory allocation failed, free previously allocated memory and return the status code */
MM::Allocator::FreePool((PVOID)Process->Affinity);
return Status;
}

Parādīt failu

@@ -75,7 +75,8 @@ KE::KThread::InitializeIdleThread(IN PKPROCESS IdleProcess,
Status = MM::Allocator::AllocatePool(NonPagedPool, MapSize, (PVOID*)&IdleThread->UserAffinity);
if(Status != STATUS_SUCCESS)
{
/* Memory allocation failed, return the status code */
/* Memory allocation failed, free previously allocated memory and return the status code */
MM::Allocator::FreePool((PVOID)IdleThread->Affinity);
return Status;
}
@@ -88,7 +89,9 @@ KE::KThread::InitializeIdleThread(IN PKPROCESS IdleProcess,
NULLPTR, NULLPTR, Stack, TRUE);
if(Status != STATUS_SUCCESS)
{
/* Failed to initialize IDLE thread, return status code */
/* Failed to initialize IDLE thread, free both affinity maps and return the status code */
MM::Allocator::FreePool((PVOID)IdleThread->Affinity);
MM::Allocator::FreePool((PVOID)IdleThread->UserAffinity);
return Status;
}

Parādīt failu

@@ -50,5 +50,14 @@ PS::Thread::CreateIdleThread(IN PKPROCESSOR_CONTROL_BLOCK Prcb,
Prcb->IdleThread = &IdleThread->ThreadControlBlock;
/* Initialize the IDLE thread */
return KE::KThread::InitializeIdleThread(IdleProcess, &IdleThread->ThreadControlBlock, Prcb, Stack);
Status = KE::KThread::InitializeIdleThread(IdleProcess, &IdleThread->ThreadControlBlock, Prcb, Stack);
if(Status != STATUS_SUCCESS)
{
/* Failed to initialize the IDLE thread state, free the ETHREAD object and return the status code */
MM::Allocator::FreePool((PVOID)IdleThread);
return Status;
}
/* Return success */
return STATUS_SUCCESS;
}