Kernel: Optimize process stopping

This commit is contained in:
2026-06-26 01:48:36 +03:00
parent 040bdea08e
commit fc1a6cacdc
2 changed files with 10 additions and 8 deletions

View File

@@ -2983,6 +2983,9 @@ namespace Kernel
void Process::wait_while_stopped()
{
if (!m_stopped) [[likely]]
return;
for (;;)
{
while (Thread::current().will_exit_because_of_signal())

View File

@@ -609,16 +609,15 @@ namespace Kernel
SpinLockGuard _2(m_process->m_signal_lock);
const uint64_t process_signal_pending_mask = m_process->m_signal_pending_mask;
const uint64_t full_pending_mask = m_signal_pending_mask | process_signal_pending_mask;
for (signal = _SIGMIN; signal <= _SIGMAX; signal++)
{
const uint64_t mask = 1ull << signal;
if ((full_pending_mask & mask) && !(m_signal_block_mask & mask))
break;
}
if (signal > _SIGMAX)
const uint64_t full_pending_mask = (m_signal_pending_mask | process_signal_pending_mask) & ~m_signal_block_mask;
if (full_pending_mask == 0) [[likely]]
return false;
for (signal = _SIGMIN; signal <= _SIGMAX; signal++)
if (full_pending_mask & (1ull << signal))
break;
ASSERT(signal <= _SIGMAX);
if (process_signal_pending_mask & (1ull << signal))
signal_info = m_process->m_signal_infos[signal];
else