diff --git a/kernel/kernel/Networking/UNIX/Socket.cpp b/kernel/kernel/Networking/UNIX/Socket.cpp index b7588c14f8..c21b0181db 100644 --- a/kernel/kernel/Networking/UNIX/Socket.cpp +++ b/kernel/kernel/Networking/UNIX/Socket.cpp @@ -281,10 +281,11 @@ namespace Kernel if (!is_streaming()) m_packet_sizes.push(packet.size()); - epoll_notify(EPOLLIN); - m_packet_thread_blocker.unblock(); m_packet_lock.unlock(state); + + epoll_notify(EPOLLIN); + return {}; } diff --git a/kernel/kernel/Terminal/PseudoTerminal.cpp b/kernel/kernel/Terminal/PseudoTerminal.cpp index 04c2b15e59..0e4e463296 100644 --- a/kernel/kernel/Terminal/PseudoTerminal.cpp +++ b/kernel/kernel/Terminal/PseudoTerminal.cpp @@ -88,18 +88,20 @@ namespace Kernel bool PseudoTerminalMaster::putchar(uint8_t ch) { - SpinLockGuard _(m_buffer_lock); + { + SpinLockGuard _(m_buffer_lock); - if (m_buffer_size >= m_buffer->size()) - return false; + if (m_buffer_size >= m_buffer->size()) + return false; - reinterpret_cast(m_buffer->vaddr())[(m_buffer_tail + m_buffer_size) % m_buffer->size()] = ch; - m_buffer_size++; + reinterpret_cast(m_buffer->vaddr())[(m_buffer_tail + m_buffer_size) % m_buffer->size()] = ch; + m_buffer_size++; + + m_buffer_blocker.unblock(); + } epoll_notify(EPOLLIN); - m_buffer_blocker.unblock(); - return true; } @@ -130,10 +132,10 @@ namespace Kernel m_buffer_size -= to_copy; m_buffer_tail = (m_buffer_tail + to_copy) % m_buffer->size(); - epoll_notify(EPOLLOUT); - m_buffer_lock.unlock(state); + epoll_notify(EPOLLOUT); + return to_copy; }