Rework signal handling code

This commit is contained in:
EnderIce2
2024-03-25 23:21:27 +02:00
parent 3b1bd58a36
commit 3d1ecc3db0
10 changed files with 1040 additions and 711 deletions

View File

@ -64,7 +64,7 @@ namespace Tasking
{
int TCB::SendSignal(int sig)
{
return this->Parent->Signals->SendSignal(sig);
return this->Parent->Signals.SendSignal((enum Signals)sig, {0}, this->ID);
}
void TCB::SetState(TaskState state)
@ -420,6 +420,7 @@ namespace Tasking
TaskArchitecture Architecture,
TaskCompatibility Compatibility,
bool ThreadNotReady)
: Signals(Parent->Signals)
{
debug("+ %#lx", this);
@ -440,6 +441,14 @@ namespace Tasking
this->ctx = ctx;
this->ID = (TID)this->Parent->ID + (TID)this->Parent->Threads.size();
if (Compatibility == TaskCompatibility::Linux)
{
if (Parent->Threads.size() == 0)
this->Linux.tgid = Parent->ID;
else
this->Linux.tgid = Parent->Threads.front()->Linux.tgid;
}
if (this->Name)
delete[] this->Name;