Lines Matching refs:pty

51 extern struct pty *pty_softc;
68 struct pty *pty, mblk_t **mpp);
248 struct pty *pty; in ptcopen() local
254 pty = &pty_softc[getminor(dev)]; in ptcopen()
255 mutex_enter(&pty->ptc_lock); in ptcopen()
256 if (pty->pt_flags & PF_CARR_ON) { in ptcopen()
257 mutex_exit(&pty->ptc_lock); in ptcopen()
261 if (pty->pt_flags & PF_WOPEN) { in ptcopen()
262 pty->pt_flags &= ~PF_WOPEN; in ptcopen()
263 cv_broadcast(&pty->pt_cv_flags); in ptcopen()
266 if ((q = pty->pt_ttycommon.t_readq) != NULL) { in ptcopen()
274 pty->pt_flags |= PF_CARR_ON; in ptcopen()
275 pty->pt_send = 0; in ptcopen()
276 pty->pt_ucntl = 0; in ptcopen()
278 mutex_exit(&pty->ptc_lock); in ptcopen()
285 struct pty *pty; in ptcclose() local
289 pty = &pty_softc[getminor(dev)]; in ptcclose()
291 mutex_enter(&pty->ptc_lock); in ptcclose()
292 if ((q = pty->pt_ttycommon.t_readq) != NULL) { in ptcclose()
305 pty->pt_flags &= (PF_WOPEN|PF_STOPPED|PF_NOSTOP); in ptcclose()
306 while ((bp = pty->pt_stuffqfirst) != NULL) { in ptcclose()
307 if ((pty->pt_stuffqfirst = bp->b_next) == NULL) in ptcclose()
308 pty->pt_stuffqlast = NULL; in ptcclose()
310 pty->pt_stuffqfirst->b_prev = NULL; in ptcclose()
311 pty->pt_stuffqlen--; in ptcclose()
315 mutex_exit(&pty->ptc_lock); in ptcclose()
322 struct pty *pty = &pty_softc[getminor(dev)]; in ptcread() local
332 mutex_enter(&pty->ptc_lock); in ptcread()
335 while (pty->pt_flags & PF_READ) { in ptcread()
336 pty->pt_flags |= PF_WREAD; in ptcread()
337 cv_wait(&pty->pt_cv_flags, &pty->ptc_lock); in ptcread()
339 pty->pt_flags |= PF_READ; in ptcread()
344 while (pty->pt_flags&(PF_PKT|PF_UCNTL) && pty->pt_send) { in ptcread()
345 tmp = pty->pt_send; in ptcread()
346 pty->pt_send = 0; in ptcread()
347 mutex_exit(&pty->ptc_lock); in ptcread()
350 mutex_enter(&pty->ptc_lock); in ptcread()
352 pty->pt_send |= tmp; in ptcread()
355 if (pty->pt_send == 0) in ptcread()
363 while ((pty->pt_flags & (PF_UCNTL|PF_43UCNTL)) && in ptcread()
364 pty->pt_ucntl) { in ptcread()
365 tmp = pty->pt_ucntl; in ptcread()
366 pty->pt_ucntl = 0; in ptcread()
367 mutex_exit(&pty->ptc_lock); in ptcread()
370 mutex_enter(&pty->ptc_lock); in ptcread()
372 if (pty->pt_ucntl == 0) in ptcread()
373 pty->pt_ucntl = tmp; in ptcread()
376 if (pty->pt_ucntl == 0) in ptcread()
383 if ((q = pty->pt_ttycommon.t_writeq) != NULL && in ptcread()
385 !(pty->pt_flags & PF_STOPPED)) { in ptcread()
386 if (pty->pt_flags & (PF_PKT|PF_UCNTL|PF_43UCNTL)) { in ptcread()
392 mutex_exit(&pty->ptc_lock); in ptcread()
395 mutex_enter(&pty->ptc_lock); in ptcread()
398 if ((q = pty->pt_ttycommon.t_writeq) == NULL) in ptcread()
414 mutex_exit(&pty->ptc_lock); in ptcread()
418 mutex_enter(&pty->ptc_lock); in ptcread()
423 q = pty->pt_ttycommon.t_writeq; in ptcread()
448 if (pty->pt_flags&PF_UCNTL && pty->pt_stuffqfirst != NULL) { in ptcread()
449 mutex_exit(&pty->ptc_lock); in ptcread()
451 mutex_enter(&pty->ptc_lock); in ptcread()
453 (bp = pty->pt_stuffqfirst) != NULL && in ptcread()
455 pty->pt_stuffqlen--; in ptcread()
456 if ((pty->pt_stuffqfirst = bp->b_next) == NULL) in ptcread()
457 pty->pt_stuffqlast = NULL; in ptcread()
459 pty->pt_stuffqfirst->b_prev = NULL; in ptcread()
460 mutex_exit(&pty->ptc_lock); in ptcread()
464 mutex_enter(&pty->ptc_lock); in ptcread()
479 if (pty->pt_flags & PF_SUBSIDGONE) { in ptcread()
487 if (pty->pt_flags & PF_NBIO) { in ptcread()
494 if (pty->pt_flags & PF_WREAD) in ptcread()
495 cv_broadcast(&pty->pt_cv_flags); in ptcread()
497 pty->pt_flags &= ~(PF_READ | PF_WREAD); in ptcread()
500 if (!cv_wait_sig(&pty->pt_cv_writeq, &pty->ptc_lock)) { in ptcread()
501 mutex_exit(&pty->ptc_lock); in ptcread()
507 if (pty->pt_flags & PF_WREAD) in ptcread()
508 cv_broadcast(&pty->pt_cv_flags); in ptcread()
510 pty->pt_flags &= ~(PF_READ | PF_WREAD); in ptcread()
512 mutex_exit(&pty->ptc_lock); in ptcread()
519 struct pty *pty = &pty_softc[getminor(dev)]; in ptcwrite() local
529 mutex_enter(&pty->ptc_lock); in ptcwrite()
532 while (pty->pt_flags & PF_WRITE) { in ptcwrite()
533 pty->pt_flags |= PF_WWRITE; in ptcwrite()
534 cv_wait(&pty->pt_cv_flags, &pty->ptc_lock); in ptcwrite()
537 pty->pt_flags |= PF_WRITE; in ptcwrite()
539 if ((q = pty->pt_ttycommon.t_readq) == NULL) { in ptcwrite()
544 if (pty->pt_flags & PF_SUBSIDGONE) { in ptcwrite()
552 if (pty->pt_flags & PF_NBIO) { in ptcwrite()
559 if (pty->pt_flags & PF_WWRITE) in ptcwrite()
560 cv_broadcast(&pty->pt_cv_flags); in ptcwrite()
562 pty->pt_flags &= ~(PF_WRITE | PF_WWRITE); in ptcwrite()
564 if (!cv_wait_sig(&pty->pt_cv_readq, &pty->ptc_lock)) { in ptcwrite()
565 mutex_exit(&pty->ptc_lock); in ptcwrite()
576 if ((pty->pt_flags & PF_REMOTE) || uio->uio_resid > 0) { in ptcwrite()
582 if (pty->pt_flags & PF_SUBSIDGONE) { in ptcwrite()
591 if (pty->pt_flags & PF_NBIO) { in ptcwrite()
599 if (pty->pt_flags & PF_WWRITE) in ptcwrite()
600 cv_broadcast(&pty->pt_cv_flags); in ptcwrite()
602 pty->pt_flags &= ~(PF_WRITE | PF_WWRITE); in ptcwrite()
604 if (!cv_wait_sig(&pty->pt_cv_readq, in ptcwrite()
605 &pty->ptc_lock)) { in ptcwrite()
606 mutex_exit(&pty->ptc_lock); in ptcwrite()
610 while (pty->pt_flags & PF_WRITE) { in ptcwrite()
611 pty->pt_flags |= PF_WWRITE; in ptcwrite()
612 cv_wait(&pty->pt_cv_flags, in ptcwrite()
613 &pty->ptc_lock); in ptcwrite()
616 pty->pt_flags |= PF_WRITE; in ptcwrite()
619 if ((pty->pt_flags & PF_NBIO) && in ptcwrite()
625 error = makemsg(uio->uio_resid, uio, pty, &mp); in ptcwrite()
637 if (pty->pt_flags & PF_NBIO) { in ptcwrite()
654 if ((q = pty->pt_ttycommon.t_readq) == NULL) { in ptcwrite()
666 if (pty->pt_flags & PF_WWRITE) in ptcwrite()
667 cv_broadcast(&pty->pt_cv_flags); in ptcwrite()
669 pty->pt_flags &= ~(PF_WRITE | PF_WWRITE); in ptcwrite()
671 mutex_exit(&pty->ptc_lock); in ptcwrite()
687 struct pty *pty = &pty_softc[getminor(dev)]; in ptcioctl() local
698 mutex_enter(&pty->ptc_lock); in ptcioctl()
700 if (pty->pt_flags & (PF_UCNTL|PF_43UCNTL)) { in ptcioctl()
701 mutex_exit(&pty->ptc_lock); in ptcioctl()
704 pty->pt_flags |= PF_PKT; in ptcioctl()
706 pty->pt_flags &= ~PF_PKT; in ptcioctl()
707 mutex_exit(&pty->ptc_lock); in ptcioctl()
712 mutex_enter(&pty->ptc_lock); in ptcioctl()
714 if (pty->pt_flags & (PF_PKT|PF_UCNTL)) { in ptcioctl()
715 mutex_exit(&pty->ptc_lock); in ptcioctl()
718 pty->pt_flags |= PF_43UCNTL; in ptcioctl()
720 pty->pt_flags &= ~PF_43UCNTL; in ptcioctl()
721 mutex_exit(&pty->ptc_lock); in ptcioctl()
726 mutex_enter(&pty->ptc_lock); in ptcioctl()
728 if (pty->pt_flags & PF_PKT) { in ptcioctl()
729 mutex_exit(&pty->ptc_lock); in ptcioctl()
732 pty->pt_flags |= PF_UCNTL; in ptcioctl()
734 pty->pt_flags &= ~PF_UCNTL; in ptcioctl()
735 mutex_exit(&pty->ptc_lock); in ptcioctl()
740 mutex_enter(&pty->ptc_lock); in ptcioctl()
742 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
744 pty->pt_flags |= PF_REMOTE; in ptcioctl()
746 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
748 pty->pt_flags &= ~PF_REMOTE; in ptcioctl()
750 mutex_exit(&pty->ptc_lock); in ptcioctl()
759 mutex_enter(&pty->ptc_lock); in ptcioctl()
760 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
762 mutex_exit(&pty->ptc_lock); in ptcioctl()
767 mutex_enter(&pty->ptc_lock); in ptcioctl()
769 pty->pt_flags |= PF_NBIO; in ptcioctl()
771 pty->pt_flags &= ~PF_NBIO; in ptcioctl()
772 mutex_exit(&pty->ptc_lock); in ptcioctl()
777 mutex_enter(&pty->ptc_lock); in ptcioctl()
779 pty->pt_flags |= PF_ASYNC; in ptcioctl()
781 pty->pt_flags &= ~PF_ASYNC; in ptcioctl()
782 mutex_exit(&pty->ptc_lock); in ptcioctl()
790 mutex_enter(&pty->ptc_lock); in ptcioctl()
791 d_arg = -pty->pt_pgrp; in ptcioctl()
792 mutex_exit(&pty->ptc_lock); in ptcioctl()
798 mutex_enter(&pty->ptc_lock); in ptcioctl()
799 pty->pt_pgrp = (short)(-d_arg); in ptcioctl()
800 mutex_exit(&pty->ptc_lock); in ptcioctl()
812 mutex_enter(&pty->ptc_lock); in ptcioctl()
813 if (pty->pt_flags&(PF_PKT|PF_UCNTL) && pty->pt_send) in ptcioctl()
815 else if ((pty->pt_flags & (PF_UCNTL|PF_43UCNTL)) && in ptcioctl()
816 pty->pt_ucntl) in ptcioctl()
818 else if ((q = pty->pt_ttycommon.t_writeq) != NULL && in ptcioctl()
819 q->q_first != NULL && !(pty->pt_flags & PF_STOPPED)) { in ptcioctl()
825 } else if ((pty->pt_flags & PF_UCNTL) && in ptcioctl()
826 pty->pt_stuffqfirst != NULL) { in ptcioctl()
830 count = pty->pt_stuffqlen + 1; in ptcioctl()
838 mutex_exit(&pty->ptc_lock); in ptcioctl()
860 mutex_enter(&pty->ptc_lock); in ptcioctl()
864 if (bcmp(&pty->pt_ttycommon.t_size, in ptcioctl()
866 pty->pt_ttycommon.t_size = win_arg; in ptcioctl()
867 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
870 mutex_exit(&pty->ptc_lock); in ptcioctl()
879 mutex_enter(&pty->ptc_lock); in ptcioctl()
880 pty->pt_ttycommon.t_size.ws_row = (ushort_t)tty_arg.ts_lines; in ptcioctl()
881 pty->pt_ttycommon.t_size.ws_col = (ushort_t)tty_arg.ts_cols; in ptcioctl()
882 pty->pt_ttycommon.t_size.ws_xpixel = 0; in ptcioctl()
883 pty->pt_ttycommon.t_size.ws_ypixel = 0; in ptcioctl()
884 mutex_exit(&pty->ptc_lock); in ptcioctl()
888 mutex_enter(&pty->ptc_lock); in ptcioctl()
889 win_arg = pty->pt_ttycommon.t_size; in ptcioctl()
890 mutex_exit(&pty->ptc_lock); in ptcioctl()
897 mutex_enter(&pty->ptc_lock); in ptcioctl()
898 tty_arg.ts_lines = pty->pt_ttycommon.t_size.ws_row; in ptcioctl()
899 tty_arg.ts_cols = pty->pt_ttycommon.t_size.ws_col; in ptcioctl()
900 mutex_exit(&pty->ptc_lock); in ptcioctl()
942 mutex_enter(&pty->ptc_lock); in ptcioctl()
943 if (pty->pt_vnode == NULL) { in ptcioctl()
944 mutex_exit(&pty->ptc_lock); in ptcioctl()
947 pty->pt_flags |= PF_IOCTL; in ptcioctl()
948 mutex_exit(&pty->ptc_lock); in ptcioctl()
949 err = strioctl(pty->pt_vnode, cmd, data, flag, in ptcioctl()
951 mutex_enter(&pty->ptc_lock); in ptcioctl()
952 if (pty->pt_flags & PF_WAIT) in ptcioctl()
953 cv_signal(&pty->pt_cv_flags); in ptcioctl()
954 pty->pt_flags &= ~(PF_IOCTL|PF_WAIT); in ptcioctl()
955 mutex_exit(&pty->ptc_lock); in ptcioctl()
970 struct pty *pty = &pty_softc[getminor(dev)]; in ptcpoll() local
975 if (polllock(php, &pty->ptc_lock) != 0) { in ptcpoll()
980 ASSERT(MUTEX_HELD(&pty->ptc_lock)); in ptcpoll()
983 if (pty->pt_flags & PF_SUBSIDGONE) { in ptcpoll()
988 mutex_exit(&pty->ptc_lock); in ptcpoll()
997 if ((q = pty->pt_ttycommon.t_writeq) != NULL && in ptcpoll()
998 q->q_first != NULL && !(pty->pt_flags & PF_STOPPED)) { in ptcpoll()
1005 if (pty->pt_flags & (PF_PKT|PF_UCNTL) && pty->pt_send) { in ptcpoll()
1012 if ((pty->pt_flags & PF_UCNTL) && in ptcpoll()
1013 (pty->pt_ucntl || pty->pt_stuffqfirst != NULL)) { in ptcpoll()
1020 if ((pty->pt_flags & PF_43UCNTL) && pty->pt_ucntl) { in ptcpoll()
1026 if ((q = pty->pt_ttycommon.t_readq) != NULL && in ptcpoll()
1037 if (((pty->pt_flags & (PF_PKT|PF_UCNTL)) && pty->pt_send) || in ptcpoll()
1038 ((pty->pt_flags & PF_UCNTL) && in ptcpoll()
1039 (pty->pt_ucntl || pty->pt_stuffqfirst != NULL))) { in ptcpoll()
1042 if ((pty->pt_flags & PF_43UCNTL) && pty->pt_ucntl) { in ptcpoll()
1056 mutex_exit(&pty->ptc_lock); in ptcpoll()
1077 makemsg(ssize_t count, struct uio *uiop, struct pty *pty, mblk_t **mpp) in makemsg() argument
1083 ASSERT(MUTEX_HELD(&pty->ptc_lock)); in makemsg()
1094 mutex_exit(&pty->ptc_lock); in makemsg()
1096 mutex_enter(&pty->ptc_lock); in makemsg()