From f1e366d36ff67ef314b394319621ff62a1cf0892 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 17 Jun 2024 23:04:37 +0300 Subject: [PATCH] Kernel: Free keyboard mutex while waiting for data to read This was making select hang if one thread was trying to read from keyboard. --- kernel/kernel/Input/PS2/Keyboard.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/kernel/Input/PS2/Keyboard.cpp b/kernel/kernel/Input/PS2/Keyboard.cpp index adeef1dc..8aff4426 100644 --- a/kernel/kernel/Input/PS2/Keyboard.cpp +++ b/kernel/kernel/Input/PS2/Keyboard.cpp @@ -204,7 +204,10 @@ namespace Kernel::Input while (m_event_queue.empty()) { m_event_lock.unlock(state); - TRY(Thread::current().block_or_eintr_indefinite(m_semaphore)); + { + LockFreeGuard _(m_mutex); + TRY(Thread::current().block_or_eintr_indefinite(m_semaphore)); + } state = m_event_lock.lock(); }