Lines Matching refs:pty

50 extern struct pty *pty_softc;
67 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()
286 struct pty *pty; in ptcclose() local
290 pty = &pty_softc[getminor(dev)]; in ptcclose()
292 mutex_enter(&pty->ptc_lock); in ptcclose()
293 if ((q = pty->pt_ttycommon.t_readq) != NULL) { in ptcclose()
306 pty->pt_flags &= (PF_WOPEN|PF_STOPPED|PF_NOSTOP); in ptcclose()
307 while ((bp = pty->pt_stuffqfirst) != NULL) { in ptcclose()
308 if ((pty->pt_stuffqfirst = bp->b_next) == NULL) in ptcclose()
309 pty->pt_stuffqlast = NULL; in ptcclose()
311 pty->pt_stuffqfirst->b_prev = NULL; in ptcclose()
312 pty->pt_stuffqlen--; in ptcclose()
316 mutex_exit(&pty->ptc_lock); in ptcclose()
323 struct pty *pty = &pty_softc[getminor(dev)]; in ptcread() local
337 mutex_enter(&pty->ptc_lock); in ptcread()
340 while (pty->pt_flags & PF_READ) { in ptcread()
341 pty->pt_flags |= PF_WREAD; in ptcread()
342 cv_wait(&pty->pt_cv_flags, &pty->ptc_lock); in ptcread()
344 pty->pt_flags |= PF_READ; in ptcread()
349 while (pty->pt_flags&(PF_PKT|PF_UCNTL) && pty->pt_send) { in ptcread()
350 tmp = pty->pt_send; in ptcread()
351 pty->pt_send = 0; in ptcread()
352 mutex_exit(&pty->ptc_lock); in ptcread()
355 mutex_enter(&pty->ptc_lock); in ptcread()
357 pty->pt_send |= tmp; in ptcread()
360 if (pty->pt_send == 0) in ptcread()
368 while ((pty->pt_flags & (PF_UCNTL|PF_43UCNTL)) && in ptcread()
369 pty->pt_ucntl) { in ptcread()
370 tmp = pty->pt_ucntl; in ptcread()
371 pty->pt_ucntl = 0; in ptcread()
372 mutex_exit(&pty->ptc_lock); in ptcread()
375 mutex_enter(&pty->ptc_lock); in ptcread()
377 if (pty->pt_ucntl == 0) in ptcread()
378 pty->pt_ucntl = tmp; in ptcread()
381 if (pty->pt_ucntl == 0) in ptcread()
388 if ((q = pty->pt_ttycommon.t_writeq) != NULL && in ptcread()
390 !(pty->pt_flags & PF_STOPPED)) { in ptcread()
391 if (pty->pt_flags & (PF_PKT|PF_UCNTL|PF_43UCNTL)) { in ptcread()
397 mutex_exit(&pty->ptc_lock); in ptcread()
400 mutex_enter(&pty->ptc_lock); in ptcread()
403 if ((q = pty->pt_ttycommon.t_writeq) == NULL) in ptcread()
419 mutex_exit(&pty->ptc_lock); in ptcread()
423 mutex_enter(&pty->ptc_lock); in ptcread()
428 q = pty->pt_ttycommon.t_writeq; in ptcread()
453 if (pty->pt_flags&PF_UCNTL && pty->pt_stuffqfirst != NULL) { in ptcread()
454 mutex_exit(&pty->ptc_lock); in ptcread()
456 mutex_enter(&pty->ptc_lock); in ptcread()
458 (bp = pty->pt_stuffqfirst) != NULL && in ptcread()
460 pty->pt_stuffqlen--; in ptcread()
461 if ((pty->pt_stuffqfirst = bp->b_next) == NULL) in ptcread()
462 pty->pt_stuffqlast = NULL; in ptcread()
464 pty->pt_stuffqfirst->b_prev = NULL; in ptcread()
465 mutex_exit(&pty->ptc_lock); in ptcread()
469 mutex_enter(&pty->ptc_lock); in ptcread()
484 if (pty->pt_flags & PF_SLAVEGONE) { in ptcread()
492 if (pty->pt_flags & PF_NBIO) { in ptcread()
499 if (pty->pt_flags & PF_WREAD) in ptcread()
500 cv_broadcast(&pty->pt_cv_flags); in ptcread()
502 pty->pt_flags &= ~(PF_READ | PF_WREAD); in ptcread()
505 if (!cv_wait_sig(&pty->pt_cv_writeq, &pty->ptc_lock)) { in ptcread()
506 mutex_exit(&pty->ptc_lock); in ptcread()
512 if (pty->pt_flags & PF_WREAD) in ptcread()
513 cv_broadcast(&pty->pt_cv_flags); in ptcread()
515 pty->pt_flags &= ~(PF_READ | PF_WREAD); in ptcread()
517 mutex_exit(&pty->ptc_lock); in ptcread()
524 struct pty *pty = &pty_softc[getminor(dev)]; in ptcwrite() local
539 mutex_enter(&pty->ptc_lock); in ptcwrite()
542 while (pty->pt_flags & PF_WRITE) { in ptcwrite()
543 pty->pt_flags |= PF_WWRITE; in ptcwrite()
544 cv_wait(&pty->pt_cv_flags, &pty->ptc_lock); in ptcwrite()
547 pty->pt_flags |= PF_WRITE; in ptcwrite()
549 if ((q = pty->pt_ttycommon.t_readq) == NULL) { in ptcwrite()
554 if (pty->pt_flags & PF_SLAVEGONE) { in ptcwrite()
562 if (pty->pt_flags & PF_NBIO) { in ptcwrite()
569 if (pty->pt_flags & PF_WWRITE) in ptcwrite()
570 cv_broadcast(&pty->pt_cv_flags); in ptcwrite()
572 pty->pt_flags &= ~(PF_WRITE | PF_WWRITE); in ptcwrite()
574 if (!cv_wait_sig(&pty->pt_cv_readq, &pty->ptc_lock)) { in ptcwrite()
575 mutex_exit(&pty->ptc_lock); in ptcwrite()
586 if ((pty->pt_flags & PF_REMOTE) || uio->uio_resid > 0) { in ptcwrite()
592 if (pty->pt_flags & PF_SLAVEGONE) { in ptcwrite()
601 if (pty->pt_flags & PF_NBIO) { in ptcwrite()
609 if (pty->pt_flags & PF_WWRITE) in ptcwrite()
610 cv_broadcast(&pty->pt_cv_flags); in ptcwrite()
612 pty->pt_flags &= ~(PF_WRITE | PF_WWRITE); in ptcwrite()
614 if (!cv_wait_sig(&pty->pt_cv_readq, in ptcwrite()
615 &pty->ptc_lock)) { in ptcwrite()
616 mutex_exit(&pty->ptc_lock); in ptcwrite()
620 while (pty->pt_flags & PF_WRITE) { in ptcwrite()
621 pty->pt_flags |= PF_WWRITE; in ptcwrite()
622 cv_wait(&pty->pt_cv_flags, in ptcwrite()
623 &pty->ptc_lock); in ptcwrite()
626 pty->pt_flags |= PF_WRITE; in ptcwrite()
629 if ((pty->pt_flags & PF_NBIO) && in ptcwrite()
635 error = makemsg(uio->uio_resid, uio, pty, &mp); in ptcwrite()
647 if (pty->pt_flags & PF_NBIO) { in ptcwrite()
664 if ((q = pty->pt_ttycommon.t_readq) == NULL) { in ptcwrite()
676 if (pty->pt_flags & PF_WWRITE) in ptcwrite()
677 cv_broadcast(&pty->pt_cv_flags); in ptcwrite()
679 pty->pt_flags &= ~(PF_WRITE | PF_WWRITE); in ptcwrite()
681 mutex_exit(&pty->ptc_lock); in ptcwrite()
697 struct pty *pty = &pty_softc[getminor(dev)]; in ptcioctl() local
708 mutex_enter(&pty->ptc_lock); in ptcioctl()
710 if (pty->pt_flags & (PF_UCNTL|PF_43UCNTL)) { in ptcioctl()
711 mutex_exit(&pty->ptc_lock); in ptcioctl()
714 pty->pt_flags |= PF_PKT; in ptcioctl()
716 pty->pt_flags &= ~PF_PKT; in ptcioctl()
717 mutex_exit(&pty->ptc_lock); in ptcioctl()
722 mutex_enter(&pty->ptc_lock); in ptcioctl()
724 if (pty->pt_flags & (PF_PKT|PF_UCNTL)) { in ptcioctl()
725 mutex_exit(&pty->ptc_lock); in ptcioctl()
728 pty->pt_flags |= PF_43UCNTL; in ptcioctl()
730 pty->pt_flags &= ~PF_43UCNTL; in ptcioctl()
731 mutex_exit(&pty->ptc_lock); in ptcioctl()
736 mutex_enter(&pty->ptc_lock); in ptcioctl()
738 if (pty->pt_flags & PF_PKT) { in ptcioctl()
739 mutex_exit(&pty->ptc_lock); in ptcioctl()
742 pty->pt_flags |= PF_UCNTL; in ptcioctl()
744 pty->pt_flags &= ~PF_UCNTL; in ptcioctl()
745 mutex_exit(&pty->ptc_lock); in ptcioctl()
750 mutex_enter(&pty->ptc_lock); in ptcioctl()
752 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
754 pty->pt_flags |= PF_REMOTE; in ptcioctl()
756 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
758 pty->pt_flags &= ~PF_REMOTE; in ptcioctl()
760 mutex_exit(&pty->ptc_lock); in ptcioctl()
769 mutex_enter(&pty->ptc_lock); in ptcioctl()
770 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
772 mutex_exit(&pty->ptc_lock); in ptcioctl()
777 mutex_enter(&pty->ptc_lock); in ptcioctl()
779 pty->pt_flags |= PF_NBIO; in ptcioctl()
781 pty->pt_flags &= ~PF_NBIO; in ptcioctl()
782 mutex_exit(&pty->ptc_lock); in ptcioctl()
787 mutex_enter(&pty->ptc_lock); in ptcioctl()
789 pty->pt_flags |= PF_ASYNC; in ptcioctl()
791 pty->pt_flags &= ~PF_ASYNC; in ptcioctl()
792 mutex_exit(&pty->ptc_lock); in ptcioctl()
800 mutex_enter(&pty->ptc_lock); in ptcioctl()
801 d_arg = -pty->pt_pgrp; in ptcioctl()
802 mutex_exit(&pty->ptc_lock); in ptcioctl()
808 mutex_enter(&pty->ptc_lock); in ptcioctl()
809 pty->pt_pgrp = (short)(-d_arg); in ptcioctl()
810 mutex_exit(&pty->ptc_lock); in ptcioctl()
822 mutex_enter(&pty->ptc_lock); in ptcioctl()
823 if (pty->pt_flags&(PF_PKT|PF_UCNTL) && pty->pt_send) in ptcioctl()
825 else if ((pty->pt_flags & (PF_UCNTL|PF_43UCNTL)) && in ptcioctl()
826 pty->pt_ucntl) in ptcioctl()
828 else if ((q = pty->pt_ttycommon.t_writeq) != NULL && in ptcioctl()
829 q->q_first != NULL && !(pty->pt_flags & PF_STOPPED)) { in ptcioctl()
835 } else if ((pty->pt_flags & PF_UCNTL) && in ptcioctl()
836 pty->pt_stuffqfirst != NULL) { in ptcioctl()
840 count = pty->pt_stuffqlen + 1; in ptcioctl()
848 mutex_exit(&pty->ptc_lock); in ptcioctl()
870 mutex_enter(&pty->ptc_lock); in ptcioctl()
874 if (bcmp(&pty->pt_ttycommon.t_size, in ptcioctl()
876 pty->pt_ttycommon.t_size = win_arg; in ptcioctl()
877 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
880 mutex_exit(&pty->ptc_lock); in ptcioctl()
889 mutex_enter(&pty->ptc_lock); in ptcioctl()
890 pty->pt_ttycommon.t_size.ws_row = (ushort_t)tty_arg.ts_lines; in ptcioctl()
891 pty->pt_ttycommon.t_size.ws_col = (ushort_t)tty_arg.ts_cols; in ptcioctl()
892 pty->pt_ttycommon.t_size.ws_xpixel = 0; in ptcioctl()
893 pty->pt_ttycommon.t_size.ws_ypixel = 0; in ptcioctl()
894 mutex_exit(&pty->ptc_lock); in ptcioctl()
898 mutex_enter(&pty->ptc_lock); in ptcioctl()
899 win_arg = pty->pt_ttycommon.t_size; in ptcioctl()
900 mutex_exit(&pty->ptc_lock); in ptcioctl()
907 mutex_enter(&pty->ptc_lock); in ptcioctl()
908 tty_arg.ts_lines = pty->pt_ttycommon.t_size.ws_row; in ptcioctl()
909 tty_arg.ts_cols = pty->pt_ttycommon.t_size.ws_col; in ptcioctl()
910 mutex_exit(&pty->ptc_lock); in ptcioctl()
952 mutex_enter(&pty->ptc_lock); in ptcioctl()
953 if (pty->pt_vnode == NULL) { in ptcioctl()
954 mutex_exit(&pty->ptc_lock); in ptcioctl()
957 pty->pt_flags |= PF_IOCTL; in ptcioctl()
958 mutex_exit(&pty->ptc_lock); in ptcioctl()
959 err = strioctl(pty->pt_vnode, cmd, data, flag, in ptcioctl()
961 mutex_enter(&pty->ptc_lock); in ptcioctl()
962 if (pty->pt_flags & PF_WAIT) in ptcioctl()
963 cv_signal(&pty->pt_cv_flags); in ptcioctl()
964 pty->pt_flags &= ~(PF_IOCTL|PF_WAIT); in ptcioctl()
965 mutex_exit(&pty->ptc_lock); in ptcioctl()
983 struct pty *pty = &pty_softc[getminor(dev)]; in ptcpoll() local
991 polllock(php, &pty->ptc_lock); in ptcpoll()
993 ASSERT(MUTEX_HELD(&pty->ptc_lock)); in ptcpoll()
996 if (pty->pt_flags & PF_SLAVEGONE) { in ptcpoll()
1001 mutex_exit(&pty->ptc_lock); in ptcpoll()
1010 if ((q = pty->pt_ttycommon.t_writeq) != NULL && in ptcpoll()
1011 q->q_first != NULL && !(pty->pt_flags & PF_STOPPED)) { in ptcpoll()
1018 if (pty->pt_flags & (PF_PKT|PF_UCNTL) && pty->pt_send) { in ptcpoll()
1025 if ((pty->pt_flags & PF_UCNTL) && in ptcpoll()
1026 (pty->pt_ucntl || pty->pt_stuffqfirst != NULL)) { in ptcpoll()
1033 if ((pty->pt_flags & PF_43UCNTL) && pty->pt_ucntl) { in ptcpoll()
1039 if ((q = pty->pt_ttycommon.t_readq) != NULL && in ptcpoll()
1050 if (((pty->pt_flags & (PF_PKT|PF_UCNTL)) && pty->pt_send) || in ptcpoll()
1051 ((pty->pt_flags & PF_UCNTL) && in ptcpoll()
1052 (pty->pt_ucntl || pty->pt_stuffqfirst != NULL))) { in ptcpoll()
1055 if ((pty->pt_flags & PF_43UCNTL) && pty->pt_ucntl) { in ptcpoll()
1069 mutex_exit(&pty->ptc_lock); in ptcpoll()
1090 makemsg(ssize_t count, struct uio *uiop, struct pty *pty, mblk_t **mpp) in makemsg() argument
1096 ASSERT(MUTEX_HELD(&pty->ptc_lock)); in makemsg()
1107 mutex_exit(&pty->ptc_lock); in makemsg()
1109 mutex_enter(&pty->ptc_lock); in makemsg()