diff --git a/Kernel/Devices/SB16.cpp b/Kernel/Devices/SB16.cpp index 5b3a90131a..d16fa97721 100644 --- a/Kernel/Devices/SB16.cpp +++ b/Kernel/Devices/SB16.cpp @@ -239,7 +239,7 @@ void SB16::handle_irq(const RegisterState&) void SB16::wait_for_irq() { - m_irq_queue.wait_on({}, "SB16"); + m_irq_queue.wait_forever("SB16"); disable_irq(); } diff --git a/Kernel/FileSystem/FIFO.cpp b/Kernel/FileSystem/FIFO.cpp index 5b419b1efa..72cda752ca 100644 --- a/Kernel/FileSystem/FIFO.cpp +++ b/Kernel/FileSystem/FIFO.cpp @@ -74,7 +74,7 @@ KResultOr> FIFO::open_direction_blocking(FIFO::Di if (m_writers == 0) { locker.unlock(); - m_write_open_queue.wait_on({}, "FIFO"); + m_write_open_queue.wait_forever("FIFO"); locker.lock(); } } @@ -84,7 +84,7 @@ KResultOr> FIFO::open_direction_blocking(FIFO::Di if (m_readers == 0) { locker.unlock(); - m_read_open_queue.wait_on({}, "FIFO"); + m_read_open_queue.wait_forever("FIFO"); locker.lock(); } } diff --git a/Kernel/Lock.cpp b/Kernel/Lock.cpp index a2634d3b15..b7a313c3c0 100644 --- a/Kernel/Lock.cpp +++ b/Kernel/Lock.cpp @@ -127,7 +127,7 @@ void Lock::lock(Mode mode) } m_lock.store(false, AK::memory_order_release); dbgln_if(LOCK_TRACE_DEBUG, "Lock::lock @ {} ({}) waiting...", this, m_name); - m_queue.wait_on({}, m_name); + m_queue.wait_forever(m_name); dbgln_if(LOCK_TRACE_DEBUG, "Lock::lock @ {} ({}) waited", this, m_name); } } diff --git a/Kernel/Net/E1000NetworkAdapter.cpp b/Kernel/Net/E1000NetworkAdapter.cpp index 7ffb13dbff..47844809eb 100644 --- a/Kernel/Net/E1000NetworkAdapter.cpp +++ b/Kernel/Net/E1000NetworkAdapter.cpp @@ -444,7 +444,7 @@ void E1000NetworkAdapter::send_raw(ReadonlyBytes payload) sti(); break; } - m_wait_queue.wait_on({}, "E1000NetworkAdapter"); + m_wait_queue.wait_forever("E1000NetworkAdapter"); } #if E1000_DEBUG dbgln("E1000: Sent packet, status is now {:#02x}!", (u8)descriptor.status); diff --git a/Kernel/Net/NE2000NetworkAdapter.cpp b/Kernel/Net/NE2000NetworkAdapter.cpp index cbf100c614..86b7222441 100644 --- a/Kernel/Net/NE2000NetworkAdapter.cpp +++ b/Kernel/Net/NE2000NetworkAdapter.cpp @@ -392,7 +392,7 @@ void NE2000NetworkAdapter::send_raw(ReadonlyBytes payload) } while (in8(REG_RW_COMMAND) & BIT_COMMAND_TXP) - m_wait_queue.wait_on({}, "NE2000NetworkAdapter"); + m_wait_queue.wait_forever("NE2000NetworkAdapter"); disable_irq(); size_t packet_size = payload.size(); diff --git a/Kernel/Net/NetworkTask.cpp b/Kernel/Net/NetworkTask.cpp index a4a9975dd2..f3254fb442 100644 --- a/Kernel/Net/NetworkTask.cpp +++ b/Kernel/Net/NetworkTask.cpp @@ -106,7 +106,7 @@ void NetworkTask_main(void*) for (;;) { size_t packet_size = dequeue_packet(buffer, buffer_size, packet_timestamp); if (!packet_size) { - packet_wait_queue.wait_on({}, "NetworkTask"); + packet_wait_queue.wait_forever("NetworkTask"); continue; } if (packet_size < sizeof(EthernetFrameHeader)) { diff --git a/Kernel/Random.cpp b/Kernel/Random.cpp index 51adeacbd5..7e0ec2b93b 100644 --- a/Kernel/Random.cpp +++ b/Kernel/Random.cpp @@ -91,7 +91,7 @@ void KernelRng::wait_for_entropy() ScopedSpinLock lock(get_lock()); if (!resource().is_ready()) { dbgln("Entropy starvation..."); - m_seed_queue.wait_on({}, "KernelRng"); + m_seed_queue.wait_forever("KernelRng"); } } diff --git a/Kernel/Tasks/FinalizerTask.cpp b/Kernel/Tasks/FinalizerTask.cpp index 77c34560d4..c06ecb9691 100644 --- a/Kernel/Tasks/FinalizerTask.cpp +++ b/Kernel/Tasks/FinalizerTask.cpp @@ -36,7 +36,7 @@ void FinalizerTask::spawn() finalizer_thread, "FinalizerTask", [](void*) { Thread::current()->set_priority(THREAD_PRIORITY_LOW); for (;;) { - g_finalizer_wait_queue->wait_on({}, "FinalizerTask"); + g_finalizer_wait_queue->wait_forever("FinalizerTask"); if (g_finalizer_has_work.exchange(false, AK::MemoryOrder::memory_order_acq_rel) == true) Thread::finalize_dying_threads(); diff --git a/Kernel/WaitQueue.h b/Kernel/WaitQueue.h index 0121273958..c803f82929 100644 --- a/Kernel/WaitQueue.h +++ b/Kernel/WaitQueue.h @@ -50,6 +50,12 @@ public: return Thread::current()->block(timeout, *this, forward(args)...); } + template + void wait_forever(Args&&... args) + { + (void)Thread::current()->block({}, *this, forward(args)...); + } + protected: virtual bool should_add_blocker(Thread::Blocker& b, void* data) override;