From 1a24bc71fda8ecb6f3247786a54c325020571dcc Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Fri, 24 Jan 2003 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2003-01-24 --- port/devuart.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/port/devuart.c b/port/devuart.c index b7690bbfa5643430aee580ab185876453aa4bad5..9cd99bba1a47e8a4b1e8250ac853aa410ffb6d30 100644 --- a/port/devuart.c +++ b/port/devuart.c @@ -350,6 +350,7 @@ uartctl(Uart *p, char *cmd) switch(*f[i]){ case 'B': case 'b': + sleep(&p->r, uartdrained, p); if((*p->phys->baud)(p, n) < 0) return -1; break; @@ -359,6 +360,7 @@ uartctl(Uart *p, char *cmd) break; case 'D': case 'd': + sleep(&p->r, uartdrained, p); (*p->phys->dtr)(p, n); break; case 'E': @@ -379,19 +381,23 @@ uartctl(Uart *p, char *cmd) break; case 'i': case 'I': + sleep(&p->r, uartdrained, p); (*p->phys->fifo)(p, n); break; case 'K': case 'k': + sleep(&p->r, uartdrained, p); (*p->phys->dobreak)(p, n); break; case 'L': case 'l': + sleep(&p->r, uartdrained, p); if((*p->phys->bits)(p, n) < 0) return -1; break; case 'm': case 'M': + sleep(&p->r, uartdrained, p); (*p->phys->modemctl)(p, n); break; case 'n': @@ -401,6 +407,7 @@ uartctl(Uart *p, char *cmd) break; case 'P': case 'p': + sleep(&p->r, uartdrained, p); if((*p->phys->parity)(p, *(f[i]+1)) < 0) return -1; break; @@ -413,10 +420,12 @@ uartctl(Uart *p, char *cmd) break; case 'R': case 'r': + sleep(&p->r, uartdrained, p); (*p->phys->rts)(p, n); break; case 'S': case 's': + sleep(&p->r, uartdrained, p); if((*p->phys->stop)(p, n) < 0) return -1; break; @@ -477,7 +486,6 @@ uartwrite(Chan *c, void *buf, long n, vlong) } /* let output drain */ - sleep(&p->r, uartdrained, p); if(uartctl(p, cmd) < 0) error(Ebadarg);