From ca65d8a7fcc2217406320d4ae09a26bf68555632 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Fri, 17 Aug 2018 10:44:49 +0100 Subject: [PATCH] tty: improve behaviour of O_NDELAY We want to bale out on a polled output port on a reschedule not just sit assuming the bits will go out shortly --- Kernel/tty.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Kernel/tty.c b/Kernel/tty.c index 169cd5ea..eba4444f 100644 --- a/Kernel/tty.c +++ b/Kernel/tty.c @@ -512,12 +512,14 @@ uint8_t tty_putc_maywait(uint8_t minor, unsigned char c, uint8_t flag) udata.u_error = EINTR; return 1; } - if (t == TTY_READY_LATER && flag) { - udata.u_error = EAGAIN; - return 1; - } if (t != TTY_READY_SOON || need_reschedule()){ - irqflags_t irq = di(); + irqflags_t irq; + + if (flag) { + udata.u_error = EAGAIN; + return 1; + } + irq = di(); tty_sleeping(minor); psleep(&ttydata[minor]); irqrestore(irq); -- 2.34.1