Kernel: Allow any signal flags and support SA_RESETHAND

This commit is contained in:
Bananymous 2025-08-05 00:08:32 +03:00
parent 5940e912b3
commit a51b589bc9
2 changed files with 10 additions and 10 deletions

View File

@ -2505,14 +2505,7 @@ namespace Kernel
*oact = m_signal_handlers[signal];
if (act)
{
if (act->sa_flags & ~(SA_RESTART))
{
dwarnln("TODO: sigaction({}, {H})", signal, act->sa_flags);
return BAN::Error::from_errno(ENOTSUP);
}
m_signal_handlers[signal] = *act;
}
return 0;
}

View File

@ -507,9 +507,16 @@ namespace Kernel
bool has_sa_restart;
{
SpinLockGuard _(m_process->m_signal_lock);
ASSERT(!(m_process->m_signal_handlers[signal].sa_flags & SA_SIGINFO));
signal_handler = (vaddr_t)m_process->m_signal_handlers[signal].sa_handler;
has_sa_restart = !!(m_process->m_signal_handlers[signal].sa_flags & SA_RESTART);
auto& handler = m_process->m_signal_handlers[signal];
ASSERT(!(handler.sa_flags & SA_SIGINFO));
signal_handler = reinterpret_cast<vaddr_t>(handler.sa_handler);
if (handler.sa_flags & SA_RESETHAND)
handler.sa_handler = SIG_DFL;
has_sa_restart = !!(handler.sa_flags & SA_RESTART);
}
m_signal_pending_mask &= ~(1ull << signal);