Lines Matching refs:pty

51 extern struct pty *pty_softc;
68 struct pty *pty, mblk_t **mpp);
249 struct pty *pty; in ptcopen() local
255 pty = &pty_softc[getminor(dev)]; in ptcopen()
256 mutex_enter(&pty->ptc_lock); in ptcopen()
257 if (pty->pt_flags & PF_CARR_ON) { in ptcopen()
258 mutex_exit(&pty->ptc_lock); in ptcopen()
262 if (pty->pt_flags & PF_WOPEN) { in ptcopen()
263 pty->pt_flags &= ~PF_WOPEN; in ptcopen()
264 cv_broadcast(&pty->pt_cv_flags); in ptcopen()
267 if ((q = pty->pt_ttycommon.t_readq) != NULL) { in ptcopen()
275 pty->pt_flags |= PF_CARR_ON; in ptcopen()
276 pty->pt_send = 0; in ptcopen()
277 pty->pt_ucntl = 0; in ptcopen()
279 mutex_exit(&pty->ptc_lock); in ptcopen()
287 struct pty *pty; in ptcclose() local
291 pty = &pty_softc[getminor(dev)]; in ptcclose()
293 mutex_enter(&pty->ptc_lock); in ptcclose()
294 if ((q = pty->pt_ttycommon.t_readq) != NULL) { in ptcclose()
307 pty->pt_flags &= (PF_WOPEN|PF_STOPPED|PF_NOSTOP); in ptcclose()
308 while ((bp = pty->pt_stuffqfirst) != NULL) { in ptcclose()
309 if ((pty->pt_stuffqfirst = bp->b_next) == NULL) in ptcclose()
310 pty->pt_stuffqlast = NULL; in ptcclose()
312 pty->pt_stuffqfirst->b_prev = NULL; in ptcclose()
313 pty->pt_stuffqlen--; in ptcclose()
317 mutex_exit(&pty->ptc_lock); in ptcclose()
324 struct pty *pty = &pty_softc[getminor(dev)]; in ptcread() local
338 mutex_enter(&pty->ptc_lock); in ptcread()
341 while (pty->pt_flags & PF_READ) { in ptcread()
342 pty->pt_flags |= PF_WREAD; in ptcread()
343 cv_wait(&pty->pt_cv_flags, &pty->ptc_lock); in ptcread()
345 pty->pt_flags |= PF_READ; in ptcread()
350 while (pty->pt_flags&(PF_PKT|PF_UCNTL) && pty->pt_send) { in ptcread()
351 tmp = pty->pt_send; in ptcread()
352 pty->pt_send = 0; in ptcread()
353 mutex_exit(&pty->ptc_lock); in ptcread()
356 mutex_enter(&pty->ptc_lock); in ptcread()
358 pty->pt_send |= tmp; in ptcread()
361 if (pty->pt_send == 0) in ptcread()
369 while ((pty->pt_flags & (PF_UCNTL|PF_43UCNTL)) && in ptcread()
370 pty->pt_ucntl) { in ptcread()
371 tmp = pty->pt_ucntl; in ptcread()
372 pty->pt_ucntl = 0; in ptcread()
373 mutex_exit(&pty->ptc_lock); in ptcread()
376 mutex_enter(&pty->ptc_lock); in ptcread()
378 if (pty->pt_ucntl == 0) in ptcread()
379 pty->pt_ucntl = tmp; in ptcread()
382 if (pty->pt_ucntl == 0) in ptcread()
389 if ((q = pty->pt_ttycommon.t_writeq) != NULL && in ptcread()
391 !(pty->pt_flags & PF_STOPPED)) { in ptcread()
392 if (pty->pt_flags & (PF_PKT|PF_UCNTL|PF_43UCNTL)) { in ptcread()
398 mutex_exit(&pty->ptc_lock); in ptcread()
401 mutex_enter(&pty->ptc_lock); in ptcread()
404 if ((q = pty->pt_ttycommon.t_writeq) == NULL) in ptcread()
420 mutex_exit(&pty->ptc_lock); in ptcread()
424 mutex_enter(&pty->ptc_lock); in ptcread()
429 q = pty->pt_ttycommon.t_writeq; in ptcread()
454 if (pty->pt_flags&PF_UCNTL && pty->pt_stuffqfirst != NULL) { in ptcread()
455 mutex_exit(&pty->ptc_lock); in ptcread()
457 mutex_enter(&pty->ptc_lock); in ptcread()
459 (bp = pty->pt_stuffqfirst) != NULL && in ptcread()
461 pty->pt_stuffqlen--; in ptcread()
462 if ((pty->pt_stuffqfirst = bp->b_next) == NULL) in ptcread()
463 pty->pt_stuffqlast = NULL; in ptcread()
465 pty->pt_stuffqfirst->b_prev = NULL; in ptcread()
466 mutex_exit(&pty->ptc_lock); in ptcread()
470 mutex_enter(&pty->ptc_lock); in ptcread()
485 if (pty->pt_flags & PF_SLAVEGONE) { in ptcread()
493 if (pty->pt_flags & PF_NBIO) { in ptcread()
500 if (pty->pt_flags & PF_WREAD) in ptcread()
501 cv_broadcast(&pty->pt_cv_flags); in ptcread()
503 pty->pt_flags &= ~(PF_READ | PF_WREAD); in ptcread()
506 if (!cv_wait_sig(&pty->pt_cv_writeq, &pty->ptc_lock)) { in ptcread()
507 mutex_exit(&pty->ptc_lock); in ptcread()
513 if (pty->pt_flags & PF_WREAD) in ptcread()
514 cv_broadcast(&pty->pt_cv_flags); in ptcread()
516 pty->pt_flags &= ~(PF_READ | PF_WREAD); in ptcread()
518 mutex_exit(&pty->ptc_lock); in ptcread()
525 struct pty *pty = &pty_softc[getminor(dev)]; in ptcwrite() local
540 mutex_enter(&pty->ptc_lock); in ptcwrite()
543 while (pty->pt_flags & PF_WRITE) { in ptcwrite()
544 pty->pt_flags |= PF_WWRITE; in ptcwrite()
545 cv_wait(&pty->pt_cv_flags, &pty->ptc_lock); in ptcwrite()
548 pty->pt_flags |= PF_WRITE; in ptcwrite()
550 if ((q = pty->pt_ttycommon.t_readq) == NULL) { in ptcwrite()
555 if (pty->pt_flags & PF_SLAVEGONE) { in ptcwrite()
563 if (pty->pt_flags & PF_NBIO) { in ptcwrite()
570 if (pty->pt_flags & PF_WWRITE) in ptcwrite()
571 cv_broadcast(&pty->pt_cv_flags); in ptcwrite()
573 pty->pt_flags &= ~(PF_WRITE | PF_WWRITE); in ptcwrite()
575 if (!cv_wait_sig(&pty->pt_cv_readq, &pty->ptc_lock)) { in ptcwrite()
576 mutex_exit(&pty->ptc_lock); in ptcwrite()
587 if ((pty->pt_flags & PF_REMOTE) || uio->uio_resid > 0) { in ptcwrite()
593 if (pty->pt_flags & PF_SLAVEGONE) { in ptcwrite()
602 if (pty->pt_flags & PF_NBIO) { in ptcwrite()
610 if (pty->pt_flags & PF_WWRITE) in ptcwrite()
611 cv_broadcast(&pty->pt_cv_flags); in ptcwrite()
613 pty->pt_flags &= ~(PF_WRITE | PF_WWRITE); in ptcwrite()
615 if (!cv_wait_sig(&pty->pt_cv_readq, in ptcwrite()
616 &pty->ptc_lock)) { in ptcwrite()
617 mutex_exit(&pty->ptc_lock); in ptcwrite()
621 while (pty->pt_flags & PF_WRITE) { in ptcwrite()
622 pty->pt_flags |= PF_WWRITE; in ptcwrite()
623 cv_wait(&pty->pt_cv_flags, in ptcwrite()
624 &pty->ptc_lock); in ptcwrite()
627 pty->pt_flags |= PF_WRITE; in ptcwrite()
630 if ((pty->pt_flags & PF_NBIO) && in ptcwrite()
636 error = makemsg(uio->uio_resid, uio, pty, &mp); in ptcwrite()
648 if (pty->pt_flags & PF_NBIO) { in ptcwrite()
665 if ((q = pty->pt_ttycommon.t_readq) == NULL) { in ptcwrite()
677 if (pty->pt_flags & PF_WWRITE) in ptcwrite()
678 cv_broadcast(&pty->pt_cv_flags); in ptcwrite()
680 pty->pt_flags &= ~(PF_WRITE | PF_WWRITE); in ptcwrite()
682 mutex_exit(&pty->ptc_lock); in ptcwrite()
698 struct pty *pty = &pty_softc[getminor(dev)]; in ptcioctl() local
709 mutex_enter(&pty->ptc_lock); in ptcioctl()
711 if (pty->pt_flags & (PF_UCNTL|PF_43UCNTL)) { in ptcioctl()
712 mutex_exit(&pty->ptc_lock); in ptcioctl()
715 pty->pt_flags |= PF_PKT; in ptcioctl()
717 pty->pt_flags &= ~PF_PKT; in ptcioctl()
718 mutex_exit(&pty->ptc_lock); in ptcioctl()
723 mutex_enter(&pty->ptc_lock); in ptcioctl()
725 if (pty->pt_flags & (PF_PKT|PF_UCNTL)) { in ptcioctl()
726 mutex_exit(&pty->ptc_lock); in ptcioctl()
729 pty->pt_flags |= PF_43UCNTL; in ptcioctl()
731 pty->pt_flags &= ~PF_43UCNTL; in ptcioctl()
732 mutex_exit(&pty->ptc_lock); in ptcioctl()
737 mutex_enter(&pty->ptc_lock); in ptcioctl()
739 if (pty->pt_flags & PF_PKT) { in ptcioctl()
740 mutex_exit(&pty->ptc_lock); in ptcioctl()
743 pty->pt_flags |= PF_UCNTL; in ptcioctl()
745 pty->pt_flags &= ~PF_UCNTL; in ptcioctl()
746 mutex_exit(&pty->ptc_lock); in ptcioctl()
751 mutex_enter(&pty->ptc_lock); in ptcioctl()
753 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
755 pty->pt_flags |= PF_REMOTE; in ptcioctl()
757 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
759 pty->pt_flags &= ~PF_REMOTE; in ptcioctl()
761 mutex_exit(&pty->ptc_lock); in ptcioctl()
770 mutex_enter(&pty->ptc_lock); in ptcioctl()
771 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
773 mutex_exit(&pty->ptc_lock); in ptcioctl()
778 mutex_enter(&pty->ptc_lock); in ptcioctl()
780 pty->pt_flags |= PF_NBIO; in ptcioctl()
782 pty->pt_flags &= ~PF_NBIO; in ptcioctl()
783 mutex_exit(&pty->ptc_lock); in ptcioctl()
788 mutex_enter(&pty->ptc_lock); in ptcioctl()
790 pty->pt_flags |= PF_ASYNC; in ptcioctl()
792 pty->pt_flags &= ~PF_ASYNC; in ptcioctl()
793 mutex_exit(&pty->ptc_lock); in ptcioctl()
801 mutex_enter(&pty->ptc_lock); in ptcioctl()
802 d_arg = -pty->pt_pgrp; in ptcioctl()
803 mutex_exit(&pty->ptc_lock); in ptcioctl()
809 mutex_enter(&pty->ptc_lock); in ptcioctl()
810 pty->pt_pgrp = (short)(-d_arg); in ptcioctl()
811 mutex_exit(&pty->ptc_lock); in ptcioctl()
823 mutex_enter(&pty->ptc_lock); in ptcioctl()
824 if (pty->pt_flags&(PF_PKT|PF_UCNTL) && pty->pt_send) in ptcioctl()
826 else if ((pty->pt_flags & (PF_UCNTL|PF_43UCNTL)) && in ptcioctl()
827 pty->pt_ucntl) in ptcioctl()
829 else if ((q = pty->pt_ttycommon.t_writeq) != NULL && in ptcioctl()
830 q->q_first != NULL && !(pty->pt_flags & PF_STOPPED)) { in ptcioctl()
836 } else if ((pty->pt_flags & PF_UCNTL) && in ptcioctl()
837 pty->pt_stuffqfirst != NULL) { in ptcioctl()
841 count = pty->pt_stuffqlen + 1; in ptcioctl()
849 mutex_exit(&pty->ptc_lock); in ptcioctl()
871 mutex_enter(&pty->ptc_lock); in ptcioctl()
875 if (bcmp(&pty->pt_ttycommon.t_size, in ptcioctl()
877 pty->pt_ttycommon.t_size = win_arg; in ptcioctl()
878 if ((q = pty->pt_ttycommon.t_readq) != NULL) in ptcioctl()
881 mutex_exit(&pty->ptc_lock); in ptcioctl()
890 mutex_enter(&pty->ptc_lock); in ptcioctl()
891 pty->pt_ttycommon.t_size.ws_row = (ushort_t)tty_arg.ts_lines; in ptcioctl()
892 pty->pt_ttycommon.t_size.ws_col = (ushort_t)tty_arg.ts_cols; in ptcioctl()
893 pty->pt_ttycommon.t_size.ws_xpixel = 0; in ptcioctl()
894 pty->pt_ttycommon.t_size.ws_ypixel = 0; in ptcioctl()
895 mutex_exit(&pty->ptc_lock); in ptcioctl()
899 mutex_enter(&pty->ptc_lock); in ptcioctl()
900 win_arg = pty->pt_ttycommon.t_size; in ptcioctl()
901 mutex_exit(&pty->ptc_lock); in ptcioctl()
908 mutex_enter(&pty->ptc_lock); in ptcioctl()
909 tty_arg.ts_lines = pty->pt_ttycommon.t_size.ws_row; in ptcioctl()
910 tty_arg.ts_cols = pty->pt_ttycommon.t_size.ws_col; in ptcioctl()
911 mutex_exit(&pty->ptc_lock); in ptcioctl()
953 mutex_enter(&pty->ptc_lock); in ptcioctl()
954 if (pty->pt_vnode == NULL) { in ptcioctl()
955 mutex_exit(&pty->ptc_lock); in ptcioctl()
958 pty->pt_flags |= PF_IOCTL; in ptcioctl()
959 mutex_exit(&pty->ptc_lock); in ptcioctl()
960 err = strioctl(pty->pt_vnode, cmd, data, flag, in ptcioctl()
962 mutex_enter(&pty->ptc_lock); in ptcioctl()
963 if (pty->pt_flags & PF_WAIT) in ptcioctl()
964 cv_signal(&pty->pt_cv_flags); in ptcioctl()
965 pty->pt_flags &= ~(PF_IOCTL|PF_WAIT); in ptcioctl()
966 mutex_exit(&pty->ptc_lock); in ptcioctl()
984 struct pty *pty = &pty_softc[getminor(dev)]; in ptcpoll() local
992 if (polllock(php, &pty->ptc_lock) != 0) { in ptcpoll()
997 ASSERT(MUTEX_HELD(&pty->ptc_lock)); in ptcpoll()
1000 if (pty->pt_flags & PF_SLAVEGONE) { in ptcpoll()
1005 mutex_exit(&pty->ptc_lock); in ptcpoll()
1014 if ((q = pty->pt_ttycommon.t_writeq) != NULL && in ptcpoll()
1015 q->q_first != NULL && !(pty->pt_flags & PF_STOPPED)) { in ptcpoll()
1022 if (pty->pt_flags & (PF_PKT|PF_UCNTL) && pty->pt_send) { in ptcpoll()
1029 if ((pty->pt_flags & PF_UCNTL) && in ptcpoll()
1030 (pty->pt_ucntl || pty->pt_stuffqfirst != NULL)) { in ptcpoll()
1037 if ((pty->pt_flags & PF_43UCNTL) && pty->pt_ucntl) { in ptcpoll()
1043 if ((q = pty->pt_ttycommon.t_readq) != NULL && in ptcpoll()
1054 if (((pty->pt_flags & (PF_PKT|PF_UCNTL)) && pty->pt_send) || in ptcpoll()
1055 ((pty->pt_flags & PF_UCNTL) && in ptcpoll()
1056 (pty->pt_ucntl || pty->pt_stuffqfirst != NULL))) { in ptcpoll()
1059 if ((pty->pt_flags & PF_43UCNTL) && pty->pt_ucntl) { in ptcpoll()
1073 mutex_exit(&pty->ptc_lock); in ptcpoll()
1094 makemsg(ssize_t count, struct uio *uiop, struct pty *pty, mblk_t **mpp) in makemsg() argument
1100 ASSERT(MUTEX_HELD(&pty->ptc_lock)); in makemsg()
1111 mutex_exit(&pty->ptc_lock); in makemsg()
1113 mutex_enter(&pty->ptc_lock); in makemsg()