Lines Matching defs:tp
233 struct tty *tp;
240 tp = pti->pt_tty;
241 if ((tp->t_state & TS_ISOPEN) == 0) {
242 tp->t_state |= TS_WOPEN;
243 ttychars(tp); /* Set up default chars */
244 tp->t_iflag = TTYDEF_IFLAG;
245 tp->t_oflag = TTYDEF_OFLAG;
246 tp->t_lflag = TTYDEF_LFLAG;
247 tp->t_cflag = TTYDEF_CFLAG;
248 tp->t_ispeed = tp->t_ospeed = B115200;
249 ttsetwater(tp); /* would be done in xxparam() */
250 } else if (tp->t_state & TS_XCLUDE && suser(p) != 0)
252 if (tp->t_oproc) /* Ctrlr still around. */
253 tp->t_state |= TS_CARR_ON;
254 while ((tp->t_state & TS_CARR_ON) == 0) {
255 tp->t_state |= TS_WOPEN;
258 error = ttysleep(tp, &tp->t_rawq, TTIPRI | PCATCH, ttopen);
262 error = (*linesw[tp->t_line].l_open)(dev, tp, p);
263 ptcwakeup(tp, FREAD|FWRITE);
271 struct tty *tp = pti->pt_tty;
274 error = (*linesw[tp->t_line].l_close)(tp, flag, p);
275 error |= ttyclose(tp);
276 ptcwakeup(tp, FREAD|FWRITE);
286 struct tty *tp = pti->pt_tty;
291 while (isbackground(pr, tp)) {
297 error = ttysleep(tp, &lbolt, TTIPRI | PCATCH, ttybg);
301 if (tp->t_canq.c_cc == 0) {
304 error = ttysleep(tp, &tp->t_canq,
310 while (tp->t_canq.c_cc > 1 && uio->uio_resid > 0)
311 if (ureadc(getc(&tp->t_canq), uio) < 0) {
315 if (tp->t_canq.c_cc == 1)
316 (void) getc(&tp->t_canq);
317 if (tp->t_canq.c_cc)
320 if (tp->t_oproc)
321 error = (*linesw[tp->t_line].l_read)(tp, uio, flag);
322 ptcwakeup(tp, FWRITE);
335 struct tty *tp = pti->pt_tty;
337 if (tp->t_oproc == NULL)
339 return ((*linesw[tp->t_line].l_write)(tp, uio, flag));
347 ptsstart(struct tty *tp)
349 struct pt_softc *pti = pt_softc[minor(tp->t_dev)];
351 if (tp->t_state & TS_TTSTOP)
357 ptcwakeup(tp, FREAD);
361 ptsstop(struct tty *tp, int flush)
363 struct pt_softc *pti = pt_softc[minor(tp->t_dev)];
379 ptcwakeup(tp, flag);
384 ptcwakeup(struct tty *tp, int flag)
386 struct pt_softc *pti = pt_softc[minor(tp->t_dev)];
390 wakeup(&tp->t_outq.c_cf);
394 wakeup(&tp->t_rawq.c_cf);
404 struct tty *tp;
411 tp = pti->pt_tty;
412 if (tp->t_oproc)
414 tp->t_oproc = ptsstart;
415 (void)(*linesw[tp->t_line].l_modem)(tp, 1);
416 tp->t_lflag &= ~EXTPROC;
427 struct tty *tp = pti->pt_tty;
429 (void)(*linesw[tp->t_line].l_modem)(tp, 0);
430 tp->t_state &= ~TS_CARR_ON;
431 tp->t_oproc = NULL; /* mark closed */
439 struct tty *tp = pti->pt_tty;
450 if (tp->t_state & TS_ISOPEN) {
457 sizeof(tp->t_termios));
458 error = uiomove(&tp->t_termios, cc, uio);
472 if (tp->t_outq.c_cc && (tp->t_state & TS_TTSTOP) == 0)
475 if ((tp->t_state & TS_CARR_ON) == 0)
479 error = tsleep_nsec(&tp->t_outq.c_cf, TTIPRI | PCATCH, ttyin,
488 cc = q_to_b(&tp->t_outq, buf, cc);
495 ttwakeupwr(tp);
506 struct tty *tp = pti->pt_tty;
514 if ((tp->t_state & TS_ISOPEN) == 0)
517 if (tp->t_canq.c_cc)
519 while (uio->uio_resid > 0 && tp->t_canq.c_cc < TTYHOG(tp) - 1) {
522 cc = min(cc, TTYHOG(tp) - 1 - tp->t_canq.c_cc);
530 if ((tp->t_state & TS_ISOPEN) == 0) {
536 (void) b_to_q((char *)cp, cc, &tp->t_canq);
539 (void) putc(0, &tp->t_canq);
540 ttwakeup(tp);
541 wakeup(&tp->t_canq);
554 if ((tp->t_state & TS_ISOPEN) == 0) {
561 if ((tp->t_rawq.c_cc + tp->t_canq.c_cc) >= TTYHOG(tp) - 2 &&
562 (tp->t_canq.c_cc > 0 || !ISSET(tp->t_lflag, ICANON))) {
563 wakeup(&tp->t_rawq);
566 if ((*linesw[tp->t_line].l_rint)(*cp++, tp) == 1 &&
567 tsleep(tp, TTIPRI | PCATCH, "ttyretype", 1) == EINTR)
580 if ((tp->t_state & TS_CARR_ON) == 0) {
591 error = tsleep_nsec(&tp->t_rawq.c_cf, TTOPRI | PCATCH, ttyout, INFSLP);
619 struct tty *tp;
622 tp = pti->pt_tty;
625 if (ISSET(tp->t_state, TS_ISOPEN)) {
626 if (!ISSET(tp->t_state, TS_TTSTOP))
627 kn->kn_data = tp->t_outq.c_cc;
634 if (!ISSET(tp->t_state, TS_CARR_ON)) {
661 struct tty *tp;
664 tp = pti->pt_tty;
667 if (ISSET(tp->t_state, TS_ISOPEN)) {
669 if (tp->t_canq.c_cc == 0)
670 kn->kn_data = tp->t_canq.c_cn;
671 } else if ((tp->t_rawq.c_cc + tp->t_canq.c_cc < TTYHOG(tp)-2) ||
672 (tp->t_canq.c_cc == 0 && ISSET(tp->t_lflag, ICANON)))
673 kn->kn_data = tp->t_canq.c_cn -
674 (tp->t_rawq.c_cc + tp->t_canq.c_cc);
680 if (!ISSET(tp->t_state, TS_CARR_ON)) {
695 struct tty *tp;
698 tp = pti->pt_tty;
711 if (!ISSET(tp->t_state, TS_CARR_ON)) {
780 struct tty *tp = pti->pt_tty;
782 return (tp);
789 struct tty *tp = pti->pt_tty;
790 u_char *cc = tp->t_cc;
795 * ttywflush(tp) will hang if there are characters in the outq.
806 ptcwakeup(tp, FREAD);
808 tp->t_lflag |= EXTPROC;
810 if ((tp->t_lflag & EXTPROC) &&
813 ptcwakeup(tp, FREAD);
815 tp->t_lflag &= ~EXTPROC;
824 * in that case, tp must be the controlling terminal.
826 *(int *)data = tp->t_pgrp ? tp->t_pgrp->pg_id : 0;
852 ttyflush(tp, FREAD|FWRITE);
859 ndflush(&tp->t_outq, tp->t_outq.c_cc);
866 if ((tp->t_lflag & NOFLSH) == 0)
867 ttyflush(tp, FREAD|FWRITE);
868 pgsignal(tp->t_pgrp, *(unsigned int *)data, 1);
870 ((tp->t_lflag & NOKERNINFO) == 0))
871 ttyinfo(tp);
879 *(int *)data = tp->t_outq.c_cc;
882 error = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag, p);
884 error = ttioctl(tp, cmd, data, flag, p);
904 ptcwakeup(tp, FREAD);
913 if ((tp->t_lflag & EXTPROC) && (pti->pt_flags & PF_PKT)) {
919 ptcwakeup(tp, FREAD);
924 stop = (tp->t_iflag & IXON) && CCEQ(cc[VSTOP], CTRL('s')) &&
931 ptcwakeup(tp, FREAD);
938 ptcwakeup(tp, FREAD);