From 26cfb8e159a2c905bf0e93e991d2d1c9359e61f8 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 21 Aug 1997 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1997-08-21 --- port/devcons.c | 11 +++++++++-- port/proc.c | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/port/devcons.c b/port/devcons.c index e8e6072feb73331f6cd7ad1e0cb469c629adc5c8..a058b6e10c8a4ef0c3e5db17e96b8da4731946d3 100644 --- a/port/devcons.c +++ b/port/devcons.c @@ -525,8 +525,15 @@ consread(Chan *c, void *buf, long n, ulong offset) if(kbd.raw) { if(qcanread(lineq)) n = qread(lineq, buf, n); - else - n = qread(kbdq, buf, n); + else { + /* read as much as possible */ + do { + i = qread(kbdq, cbuf, n); + cbuf += i; + n -= i; + } while (n>0 && qcanread(kbdq)); + n = cbuf - (char*)buf; + } } else { while(!qcanread(lineq)) { qread(kbdq, &kbd.line[kbd.x], 1); diff --git a/port/proc.c b/port/proc.c index 8e7f78b42ba654d63d4dfdb767c4a4a03aa7715f..d8725804d012d5701a36a9fce7dc07ed05e786c1 100644 --- a/port/proc.c +++ b/port/proc.c @@ -230,7 +230,8 @@ loop: found: splhi(); - lock(runq); + if(!canlock(runq)) + goto loop; l = 0; for(p = rq->head; p; p = p->rnext){