From: Alan Cox Date: Fri, 17 Aug 2018 09:44:49 +0000 (+0100) Subject: tty: improve behaviour of O_NDELAY X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=ca65d8a7fcc2217406320d4ae09a26bf68555632;p=FUZIX.git 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 --- 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);