LibC: Rewrite sigprocmask in terms of pthread_sigmask

Also don't fail SYS_SIGPROCMASK if how is invalid and set is NULL.
This commit is contained in:
2024-08-07 17:01:35 +03:00
parent 2ca7886f88
commit 7afdfb150f
2 changed files with 9 additions and 12 deletions

View File

@@ -1826,16 +1826,6 @@ namespace Kernel
BAN::ErrorOr<long> Process::sys_sigprocmask(int how, const sigset_t* set, sigset_t* oset)
{
switch (how)
{
case SIG_BLOCK:
case SIG_SETMASK:
case SIG_UNBLOCK:
break;
default:
return BAN::Error::from_errno(EINVAL);
}
LockGuard _(m_process_lock);
if (set)
TRY(validate_pointer_access(set, sizeof(sigset_t)));
@@ -1857,8 +1847,10 @@ namespace Kernel
Thread::current().m_signal_block_mask = mask;
break;
case SIG_UNBLOCK:
Thread::current().m_signal_block_mask &= mask;
Thread::current().m_signal_block_mask &= ~mask;
break;
default:
return BAN::Error::from_errno(EINVAL);
}
}