summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1994-08-01 10:38:19 +0000
committerdg <dg@FreeBSD.org>1994-08-01 10:38:19 +0000
commit8b75418fcc4825e7403aa1cd6b5de06a1b2bc118 (patch)
tree813b352aea4548d4d58d11fe23801689a0efaeff
parent0f5f00912407aaa99d3a912c5c3e8d5f6a77813c (diff)
downloadFreeBSD-src-8b75418fcc4825e7403aa1cd6b5de06a1b2bc118.zip
FreeBSD-src-8b75418fcc4825e7403aa1cd6b5de06a1b2bc118.tar.gz
Fixed a bug that was introduced in the conversion from 1.1.5 to 2.0.
-rw-r--r--sys/dev/syscons/syscons.c20
-rw-r--r--sys/i386/isa/syscons.c20
-rw-r--r--sys/isa/syscons.c20
3 files changed, 42 insertions, 18 deletions
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
index 39292f9..a2a931c 100644
--- a/sys/dev/syscons/syscons.c
+++ b/sys/dev/syscons/syscons.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from:@(#)syscons.c 1.3 940129
- * $Id: syscons.c,v 1.44 1994/04/21 14:22:26 sos Exp $
+ * $Id: syscons.c,v 1.46 1994/05/25 08:59:56 rgrimes Exp $
*
*/
@@ -94,7 +94,7 @@
#define BELL_DURATION 5
#define BELL_PITCH 800
#define TIMER_FREQ 1193182 /* should be in isa.h */
-#define PCBURST 128
+#define PCBURST 256
/* defines related to hardware addresses */
#define MONO_BASE 0x3B4 /* crt controller base mono */
@@ -1038,16 +1038,24 @@ void pcstart(struct tty *tp)
if (scp->status & SLKED)
return;
- s = spltty();
+ s = spltty(); /* Isn't start always called at spltty? */
if (!(tp->t_state & (TS_TIMEOUT|TS_BUSY|TS_TTSTOP))) {
tp->t_state |= TS_BUSY;
splx(s);
rbp = &tp->t_outq;
- len = q_to_b(rbp, buf, PCBURST);
- for (i=0; i<len; i++)
- if (buf[i]) ansi_put(scp, buf[i]);
+ while (rbp->c_cc) {
+ len = q_to_b(rbp, buf, PCBURST);
+ for (i=0; i<len; i++)
+ if (buf[i]) ansi_put(scp, buf[i]);
+ }
s = spltty();
tp->t_state &= ~TS_BUSY;
+#if 0
+ if (rbp->c_cc) {
+ tp->t_state |= TS_TIMEOUT;
+ timeout((timeout_t)ttrstrt, (caddr_t)tp, 1);
+ }
+#endif
if (rbp->c_cc <= tp->t_lowat) {
if (tp->t_state & TS_ASLEEP) {
tp->t_state &= ~TS_ASLEEP;
diff --git a/sys/i386/isa/syscons.c b/sys/i386/isa/syscons.c
index 39292f9..a2a931c 100644
--- a/sys/i386/isa/syscons.c
+++ b/sys/i386/isa/syscons.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from:@(#)syscons.c 1.3 940129
- * $Id: syscons.c,v 1.44 1994/04/21 14:22:26 sos Exp $
+ * $Id: syscons.c,v 1.46 1994/05/25 08:59:56 rgrimes Exp $
*
*/
@@ -94,7 +94,7 @@
#define BELL_DURATION 5
#define BELL_PITCH 800
#define TIMER_FREQ 1193182 /* should be in isa.h */
-#define PCBURST 128
+#define PCBURST 256
/* defines related to hardware addresses */
#define MONO_BASE 0x3B4 /* crt controller base mono */
@@ -1038,16 +1038,24 @@ void pcstart(struct tty *tp)
if (scp->status & SLKED)
return;
- s = spltty();
+ s = spltty(); /* Isn't start always called at spltty? */
if (!(tp->t_state & (TS_TIMEOUT|TS_BUSY|TS_TTSTOP))) {
tp->t_state |= TS_BUSY;
splx(s);
rbp = &tp->t_outq;
- len = q_to_b(rbp, buf, PCBURST);
- for (i=0; i<len; i++)
- if (buf[i]) ansi_put(scp, buf[i]);
+ while (rbp->c_cc) {
+ len = q_to_b(rbp, buf, PCBURST);
+ for (i=0; i<len; i++)
+ if (buf[i]) ansi_put(scp, buf[i]);
+ }
s = spltty();
tp->t_state &= ~TS_BUSY;
+#if 0
+ if (rbp->c_cc) {
+ tp->t_state |= TS_TIMEOUT;
+ timeout((timeout_t)ttrstrt, (caddr_t)tp, 1);
+ }
+#endif
if (rbp->c_cc <= tp->t_lowat) {
if (tp->t_state & TS_ASLEEP) {
tp->t_state &= ~TS_ASLEEP;
diff --git a/sys/isa/syscons.c b/sys/isa/syscons.c
index 39292f9..a2a931c 100644
--- a/sys/isa/syscons.c
+++ b/sys/isa/syscons.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from:@(#)syscons.c 1.3 940129
- * $Id: syscons.c,v 1.44 1994/04/21 14:22:26 sos Exp $
+ * $Id: syscons.c,v 1.46 1994/05/25 08:59:56 rgrimes Exp $
*
*/
@@ -94,7 +94,7 @@
#define BELL_DURATION 5
#define BELL_PITCH 800
#define TIMER_FREQ 1193182 /* should be in isa.h */
-#define PCBURST 128
+#define PCBURST 256
/* defines related to hardware addresses */
#define MONO_BASE 0x3B4 /* crt controller base mono */
@@ -1038,16 +1038,24 @@ void pcstart(struct tty *tp)
if (scp->status & SLKED)
return;
- s = spltty();
+ s = spltty(); /* Isn't start always called at spltty? */
if (!(tp->t_state & (TS_TIMEOUT|TS_BUSY|TS_TTSTOP))) {
tp->t_state |= TS_BUSY;
splx(s);
rbp = &tp->t_outq;
- len = q_to_b(rbp, buf, PCBURST);
- for (i=0; i<len; i++)
- if (buf[i]) ansi_put(scp, buf[i]);
+ while (rbp->c_cc) {
+ len = q_to_b(rbp, buf, PCBURST);
+ for (i=0; i<len; i++)
+ if (buf[i]) ansi_put(scp, buf[i]);
+ }
s = spltty();
tp->t_state &= ~TS_BUSY;
+#if 0
+ if (rbp->c_cc) {
+ tp->t_state |= TS_TIMEOUT;
+ timeout((timeout_t)ttrstrt, (caddr_t)tp, 1);
+ }
+#endif
if (rbp->c_cc <= tp->t_lowat) {
if (tp->t_state & TS_ASLEEP) {
tp->t_state &= ~TS_ASLEEP;
OpenPOWER on IntegriCloud