netnews@wnuxb.UUCP (Heiby) (05/16/85)
Unix Technical Digest Thu, 16 May 85 Volume 2 : Issue 4 Today's Topics: AT (IBM) XENIX Performance Limits CTS/RTS handshaking on UNIX ---------------------------------------------------------------------- Date: 15 May 85 19:27:05 CDT (Wed) From: ihnp4!tmq!peter Subject: AT (IBM) XENIX Performance Limits Ok, here's a question for PC/AT XENIX experts: Can XENIX on an AT support up to it's licenced capacity (16 users), provided that sufficent terminal hardware/drivers are supplied? It's possible to put 16 serial ports now on an AT (with the Octacom card) , so there is the hardware to do this. Are there any ugly implementation hurdles? Thanx, Peter Kerrigan, ICOM systems, Buffalo Grove IL ihnp4!tmq!peter ------------------------------ Date: Wed, 15 May 85 13:44:35 pdt From: ihnp4!nsc!turtlevax!ken (Ken Turkowski) Subject: CTS/RTS handshaking on UNIX Enclosed is a "diff -c" of mods to 4.2BSD's tty driver to allow CTS/RTS (actually DTR/CD) hardware handshaking, thanks to turtlevax!minc!grant. ----------------------------------------------------------------- *** tty.c.std Thu Mar 22 07:12:16 1984 --- tty.c Thu Mar 22 07:36:25 1984 *************** *** 184,190 * Current input > threshold AND input is available to user program */ if (x >= TTYHOG/2 && (tp->t_delct>0 || (tp->t_flags&(RAW|CBREAK)))) { ! if (putc(tp->t_stopc, &tp->t_outq)==0) { tp->t_state |= TS_TBLOCK; ttstart(tp); } --- 184,191 ----- * Current input > threshold AND input is available to user program */ if (x >= TTYHOG/2 && (tp->t_delct>0 || (tp->t_flags&(RAW|CBREAK)))) { ! if ((tp->t_line == NTTYDISC) && (tp->t_flags & MDMBUF)) { ! (*cdevsw[major(tp->t_dev)].d_ioctl)(tp->t_dev, TIOCCDTR, 0, 0); tp->t_state |= TS_TBLOCK; ttstart(tp); } else if (putc(tp->t_stopc, &tp->t_outq)==0) { *************** *** 187,192 if (putc(tp->t_stopc, &tp->t_outq)==0) { tp->t_state |= TS_TBLOCK; ttstart(tp); } } } --- 188,196 ----- (*cdevsw[major(tp->t_dev)].d_ioctl)(tp->t_dev, TIOCCDTR, 0, 0); tp->t_state |= TS_TBLOCK; ttstart(tp); + } else if (putc(tp->t_stopc, &tp->t_outq)==0) { + tp->t_state |= TS_TBLOCK; + ttstart(tp); } } } *************** *** 1151,1157 * the input queue has gone down. */ if (tp->t_state&TS_TBLOCK && tp->t_rawq.c_cc < TTYHOG/5) ! if (putc(tp->t_startc, &tp->t_outq) == 0) { tp->t_state &= ~TS_TBLOCK; ttstart(tp); } --- 1155,1165 ----- * the input queue has gone down. */ if (tp->t_state&TS_TBLOCK && tp->t_rawq.c_cc < TTYHOG/5) ! if (tp->t_flags & MDMBUF) { ! (*cdevsw[major(tp->t_dev)].d_ioctl)(tp->t_dev, TIOCSDTR, 0, 0); ! tp->t_state &= ~TS_TBLOCK; ! ttstart(tp); ! } else if (putc(tp->t_startc, &tp->t_outq) == 0) { tp->t_state &= ~TS_TBLOCK; ttstart(tp); } ------------------------------ End of Unix Technical Digest ****************************** -- Ronald W. Heiby / netnews@wnuxb.UUCP | unix-request@cbosgd.UUCP AT&T Information Systems, Inc., Lisle, IL (CU-D21)