Lines Matching refs:async

174 static void	async_ioctl(struct asyncline *async, queue_t *q, mblk_t *mp);
178 static void async_start(struct asyncline *async);
179 static void async_nstart(struct asyncline *async, int mode);
180 static void async_resume(struct asyncline *async);
197 static void async_resume_utbrk(struct asyncline *async);
198 static void async_dtr_free(struct asyncline *async);
416 struct asyncline *async = asy->asy_priv; in async_put_suspq() local
420 if (async->async_suspqf == NULL) in async_put_suspq()
421 async->async_suspqf = mp; in async_put_suspq()
423 async->async_suspqb->b_next = mp; in async_put_suspq()
425 async->async_suspqb = mp; in async_put_suspq()
431 struct asyncline *async = asy->asy_priv; in async_get_suspq() local
436 if ((mp = async->async_suspqf) != NULL) { in async_get_suspq()
437 async->async_suspqf = mp->b_next; in async_get_suspq()
440 async->async_suspqb = NULL; in async_get_suspq()
448 struct asyncline *async = asy->asy_priv; in async_process_suspq() local
456 q = async->async_ttycommon.t_writeq; in async_process_suspq()
462 async->async_flags &= ~ASYNC_DDI_SUSPENDED; in async_process_suspq()
463 cv_broadcast(&async->async_flags_cv); in async_process_suspq()
603 struct asyncline *async; in asydetach() local
610 async = asy->asy_priv; in asydetach()
618 if (async->async_dtrtid != 0) { in asydetach()
619 (void) untimeout(async->async_dtrtid); in asydetach()
620 async->async_dtrtid = 0; in asydetach()
628 cv_destroy(&async->async_flags_cv); in asydetach()
648 ASSERT(async->async_ops >= 0); in asydetach()
649 while (async->async_ops > 0) in asydetach()
650 cv_wait(&async->async_ops_cv, &asy->asy_excl); in asydetach()
652 async->async_flags |= ASYNC_DDI_SUSPENDED; in asydetach()
655 while ((async->async_flags & (ASYNC_BREAK|ASYNC_DELAY))) { in asydetach()
656 if (cv_wait_sig(&async->async_flags_cv, &asy->asy_excl) in asydetach()
665 if (async->async_flags & ASYNC_OUT_SUSPEND) in asydetach()
666 async_resume_utbrk(async); in asydetach()
672 if (async->async_wbufcid != 0) { in asydetach()
673 bufcall_id_t bcid = async->async_wbufcid; in asydetach()
674 async->async_wbufcid = 0; in asydetach()
675 async->async_flags |= ASYNC_RESUME_BUFCALL; in asydetach()
760 struct asyncline *async; in asyattach() local
774 async = asy->asy_priv; in asyattach()
786 if (async->async_flags & ASYNC_ISOPEN) { in asyattach()
789 if (async->async_ocnt > 0) { in asyattach()
790 async_resume(async); in asyattach()
793 if (async->async_xmitblk) in asyattach()
794 freeb(async->async_xmitblk); in asyattach()
795 async->async_xmitblk = NULL; in asyattach()
796 async_start(async); in asyattach()
806 if (async->async_flags & ASYNC_RESUME_BUFCALL) { in asyattach()
807 async->async_wbufcid = bufcall(async->async_wbufcds, in asyattach()
809 (void *)(intptr_t)async->async_common->asy_unit); in asyattach()
810 async->async_flags &= ~ASYNC_RESUME_BUFCALL; in asyattach()
1089 struct asyncline *async = asy->asy_priv; in asyattach() local
1097 cv_destroy(&async->async_flags_cv); in asyattach()
1532 struct asyncline *async; in asyinit() local
1535 async = asy->asy_priv; in asyinit()
1537 async->async_common = asy; in asyinit()
1538 cv_init(&async->async_flags_cv, NULL, CV_DRIVER, NULL); in asyinit()
1547 struct asyncline *async; in asyopen() local
1558 async = asy->asy_priv; in asyopen()
1567 if (!(async->async_flags & ASYNC_ISOPEN)) { in asyopen()
1578 async->async_ttycommon.t_cflag = termiosp->c_cflag; in asyopen()
1587 async->async_ttycommon.t_cflag = asy->asy_cflag; in asyopen()
1589 async->async_ttycommon.t_iflag = 0; in asyopen()
1590 async->async_ttycommon.t_iocpending = NULL; in asyopen()
1591 async->async_ttycommon.t_size.ws_row = 0; in asyopen()
1592 async->async_ttycommon.t_size.ws_col = 0; in asyopen()
1593 async->async_ttycommon.t_size.ws_xpixel = 0; in asyopen()
1594 async->async_ttycommon.t_size.ws_ypixel = 0; in asyopen()
1595 async->async_dev = *dev; in asyopen()
1596 async->async_wbufcid = 0; in asyopen()
1598 async->async_startc = CSTART; in asyopen()
1599 async->async_stopc = CSTOP; in asyopen()
1602 if ((async->async_ttycommon.t_flags & TS_XCLUDE) && in asyopen()
1607 } else if ((*dev & OUTLINE) && !(async->async_flags & ASYNC_OUT)) { in asyopen()
1614 async->async_flags |= ASYNC_OUT; in asyopen()
1617 while (async->async_flags & ASYNC_DTR_DELAY) { in asyopen()
1622 if (cv_wait_sig(&async->async_flags_cv, in asyopen()
1647 async->async_ttycommon.t_flags |= TS_SOFTCAR; in asyopen()
1650 async->async_ttycommon.t_flags &= ~TS_SOFTCAR; in asyopen()
1659 (async->async_ttycommon.t_flags & TS_SOFTCAR) ? "set" : "clear", in asyopen()
1663 async->async_flags |= ASYNC_CARR_ON; in asyopen()
1665 async->async_flags &= ~ASYNC_CARR_ON; in asyopen()
1673 !(async->async_ttycommon.t_cflag & CLOCAL)) { in asyopen()
1674 if ((!(async->async_flags & (ASYNC_CARR_ON|ASYNC_OUT)) && in asyopen()
1675 !(async->async_ttycommon.t_flags & TS_SOFTCAR)) || in asyopen()
1676 ((async->async_flags & ASYNC_OUT) && in asyopen()
1678 async->async_flags |= ASYNC_WOPEN; in asyopen()
1679 if (cv_wait_sig(&async->async_flags_cv, in asyopen()
1681 async->async_flags &= ~ASYNC_WOPEN; in asyopen()
1685 async->async_flags &= ~ASYNC_WOPEN; in asyopen()
1688 } else if ((async->async_flags & ASYNC_OUT) && !(*dev & OUTLINE)) { in asyopen()
1693 async->async_ttycommon.t_readq = rq; in asyopen()
1694 async->async_ttycommon.t_writeq = WR(rq); in asyopen()
1695 rq->q_ptr = WR(rq)->q_ptr = (caddr_t)async; in asyopen()
1703 async->async_flags |= ASYNC_ISOPEN; in asyopen()
1704 async->async_polltid = 0; in asyopen()
1712 struct asyncline *async = arg; in async_progress_check() local
1713 struct asycom *asy = async->async_common; in async_progress_check()
1723 if (!(async->async_flags & (ASYNC_BREAK|ASYNC_DELAY|ASYNC_PROGRESS))) { in async_progress_check()
1724 async->async_ocnt = 0; in async_progress_check()
1725 async->async_flags &= ~ASYNC_BUSY; in async_progress_check()
1726 async->async_timer = 0; in async_progress_check()
1727 bp = async->async_xmitblk; in async_progress_check()
1728 async->async_xmitblk = NULL; in async_progress_check()
1738 flushq(async->async_ttycommon.t_writeq, FLUSHALL); in async_progress_check()
1739 cv_broadcast(&async->async_flags_cv); in async_progress_check()
1741 async->async_flags &= ~ASYNC_PROGRESS; in async_progress_check()
1742 async->async_timer = timeout(async_progress_check, async, in async_progress_check()
1753 async_dtr_free(struct asyncline *async) in async_dtr_free() argument
1755 struct asycom *asy = async->async_common; in async_dtr_free()
1760 async->async_flags &= ~ASYNC_DTR_DELAY; in async_dtr_free()
1761 async->async_dtrtid = 0; in async_dtr_free()
1762 cv_broadcast(&async->async_flags_cv); in async_dtr_free()
1773 struct asyncline *async; in asyclose() local
1780 async = (struct asyncline *)q->q_ptr; in asyclose()
1781 ASSERT(async != NULL); in asyclose()
1783 instance = UNIT(async->async_dev); in asyclose()
1786 asy = async->async_common; in asyclose()
1789 async->async_flags |= ASYNC_CLOSING; in asyclose()
1808 if (async->async_flags & ASYNC_OUT_SUSPEND) { in asyclose()
1809 if (async->async_utbrktid != 0) { in asyclose()
1810 (void) untimeout(async->async_utbrktid); in asyclose()
1811 async->async_utbrktid = 0; in asyclose()
1818 async->async_flags &= ~ASYNC_OUT_SUSPEND; in asyclose()
1833 (async->async_flags & ASYNC_STOPPED)) { in asyclose()
1856 async->async_flags &= ~ASYNC_PROGRESS; in asyclose()
1857 async->async_timer = timeout(async_progress_check, async, in asyclose()
1860 while (async->async_ocnt > 0 || in asyclose()
1861 async->async_ttycommon.t_writeq->q_first != NULL || in asyclose()
1862 (async->async_flags & (ASYNC_BUSY|ASYNC_BREAK|ASYNC_DELAY))) { in asyclose()
1863 if (cv_wait_sig(&async->async_flags_cv, &asy->asy_excl) == 0) in asyclose()
1866 if (async->async_timer != 0) { in asyclose()
1867 (void) untimeout(async->async_timer); in asyclose()
1868 async->async_timer = 0; in asyclose()
1872 async->async_ocnt = 0; in asyclose()
1873 if (async->async_xmitblk != NULL) in asyclose()
1874 freeb(async->async_xmitblk); in asyclose()
1875 async->async_xmitblk = NULL; in asyclose()
1884 if ((async->async_ttycommon.t_cflag & HUPCL) || in asyclose()
1885 (async->async_flags & ASYNC_WOPEN)) { in asyclose()
1889 async->async_ttycommon.t_cflag & HUPCL, in asyclose()
1890 async->async_ttycommon.t_cflag & ASYNC_WOPEN); in asyclose()
1891 async->async_flags |= ASYNC_DTR_DELAY; in asyclose()
1910 async->async_dtrtid = in asyclose()
1912 (caddr_t)async, drv_usectohz(asy_min_dtr_low)); in asyclose()
1917 if ((async->async_flags & (ASYNC_WOPEN|ASYNC_ISOPEN)) == 0) { in asyclose()
1924 ttycommon_close(&async->async_ttycommon); in asyclose()
1929 if (async->async_wbufcid != 0) { in asyclose()
1930 unbufcall(async->async_wbufcid); in asyclose()
1931 async->async_wbufcid = 0; in asyclose()
1937 async->async_ttycommon.t_readq = NULL; in asyclose()
1938 async->async_ttycommon.t_writeq = NULL; in asyclose()
1943 async->async_flags &= (ASYNC_DTR_DELAY|ASY_RTS_DTR_OFF); in asyclose()
1944 cv_broadcast(&async->async_flags_cv); in asyclose()
1954 struct asyncline *async; in asy_isbusy() local
1957 async = asy->asy_priv; in asy_isbusy()
1963 return ((async->async_ocnt > 0) || in asy_isbusy()
2023 struct asyncline *async; in asy_program() local
2035 async = asy->asy_priv; in asy_program()
2037 instance = UNIT(async->async_dev); in asy_program()
2042 baudrate = BAUDINDEX(async->async_ttycommon.t_cflag); in asy_program()
2044 async->async_ttycommon.t_cflag &= ~(CIBAUD); in asy_program()
2047 async->async_ttycommon.t_cflag |= CIBAUDEXT; in asy_program()
2048 async->async_ttycommon.t_cflag |= in asy_program()
2051 async->async_ttycommon.t_cflag &= ~CIBAUDEXT; in asy_program()
2052 async->async_ttycommon.t_cflag |= in asy_program()
2056 c_flag = async->async_ttycommon.t_cflag & in asy_program()
2075 if ((CRTSCTS & async->async_ttycommon.t_cflag) && !(flush_reg & CTS)) { in asy_program()
2083 async->async_flags &= ~ASYNC_HW_OUT_FLW; in asy_program()
2097 if (!(IXON & async->async_ttycommon.t_iflag)) in asy_program()
2098 async->async_flags &= ~ASYNC_SW_OUT_FLW; in asy_program()
2185 async->async_ttycommon.t_cflag & CRTSCTS); in asy_program()
2187 if ((c_flag & CLOCAL) && !(async->async_ttycommon.t_cflag & CRTSCTS)) in asy_program()
2206 struct asyncline *async = asy->asy_priv; in asy_baudok() local
2210 baudrate = BAUDINDEX(async->async_ttycommon.t_cflag); in asy_baudok()
2233 struct asyncline *async; in asyintr() local
2239 async = asy->asy_priv; in asyintr()
2241 if ((async == NULL) || in asyintr()
2242 !(async->async_flags & (ASYNC_ISOPEN|ASYNC_WOPEN))) { in asyintr()
2300 if ((lsr & XHRE) && (async->async_flags & ASYNC_BUSY) && in asyintr()
2301 (async->async_ocnt > 0)) in asyintr()
2319 struct asyncline *async = asy->asy_priv; in async_txint() local
2328 if (async->async_flags & (ASYNC_BREAK|ASYNC_OUT_SUSPEND)) in async_txint()
2338 if (async->async_ocnt > 0 && fifo_len > 0 && in async_txint()
2339 !(async->async_flags & in async_txint()
2341 while (fifo_len-- > 0 && async->async_ocnt-- > 0) { in async_txint()
2343 asy->asy_ioaddr + DAT, *async->async_optr++); in async_txint()
2345 async->async_flags |= ASYNC_PROGRESS; in async_txint()
2428 struct asyncline *async = asy->asy_priv; in async_rxint() local
2434 tp = &async->async_ttycommon; in async_rxint()
2460 if ((c == async->async_stopc) && in async_rxint()
2465 } else if ((c == async->async_startc) && in async_rxint()
2473 (async->async_flags & ASYNC_SW_OUT_FLW)) { in async_rxint()
2500 async->async_hw_overrun = 1; in async_rxint()
2509 if (RING_POK(async, 2)) { in async_rxint()
2510 RING_PUT(async, 0377); in async_rxint()
2511 RING_PUT(async, c); in async_rxint()
2513 async->async_sw_overrun = 1; in async_rxint()
2515 if (RING_POK(async, 1)) in async_rxint()
2516 RING_PUT(async, c); in async_rxint()
2518 async->async_sw_overrun = 1; in async_rxint()
2527 async->async_break++; in async_rxint()
2529 if (RING_POK(async, 1)) in async_rxint()
2530 RING_MARK(async, c, s); in async_rxint()
2532 async->async_sw_overrun = 1; in async_rxint()
2534 if (RING_POK(async, 1)) in async_rxint()
2535 RING_MARK(async, c, s); in async_rxint()
2537 async->async_sw_overrun = 1; in async_rxint()
2543 if ((RING_CNT(async) > (RINGSIZE * 3)/4) && in async_rxint()
2544 !(async->async_inflow_source & IN_FLOW_RINGBUFF)) { in async_rxint()
2550 if ((async->async_flags & ASYNC_SERVICEIMM) || needsoft || in async_rxint()
2551 (RING_FRAC(async)) || (async->async_polltid == 0)) in async_rxint()
2564 struct asyncline *async = asy->asy_priv; in async_msint() local
2565 int msr, t_cflag = async->async_ttycommon.t_cflag; in async_msint()
2567 int instance = UNIT(async->async_dev); in async_msint()
2603 async->async_ext++; in async_msint()
2626 struct asyncline *async; in asysoftintr() local
2643 async = (struct asyncline *)asy->asy_priv; in asysoftintr()
2659 cc = RING_CNT(async); in asysoftintr()
2673 struct asyncline *async = asy->asy_priv; in async_softint() local
2681 int instance = UNIT(async->async_dev); in async_softint()
2695 tp = &async->async_ttycommon; in async_softint()
2697 if (async->async_flags & ASYNC_OUT_FLW_RESUME) { in async_softint()
2698 if (async->async_ocnt > 0) { in async_softint()
2700 async_resume(async); in async_softint()
2703 if (async->async_xmitblk) in async_softint()
2704 freeb(async->async_xmitblk); in async_softint()
2705 async->async_xmitblk = NULL; in async_softint()
2706 async_start(async); in async_softint()
2708 async->async_flags &= ~ASYNC_OUT_FLW_RESUME; in async_softint()
2711 if (async->async_ext) { in async_softint()
2712 async->async_ext = 0; in async_softint()
2721 if ((async->async_flags & ASYNC_CARR_ON) == 0) { in async_softint()
2725 async->async_flags |= ASYNC_CARR_ON; in async_softint()
2726 if (async->async_flags & ASYNC_ISOPEN) { in async_softint()
2733 cv_broadcast(&async->async_flags_cv); in async_softint()
2736 if ((async->async_flags & ASYNC_CARR_ON) && in async_softint()
2757 if (async->async_flags & ASYNC_BUSY) { in async_softint()
2762 async->async_ocnt = 0; in async_softint()
2765 async->async_flags &= ~ASYNC_STOPPED; in async_softint()
2766 if (async->async_flags & ASYNC_ISOPEN) { in async_softint()
2787 flushflag = (async->async_flags & in async_softint()
2793 bp = async->async_xmitblk; in async_softint()
2796 async->async_xmitblk = NULL; in async_softint()
2800 async->async_flags &= ~ASYNC_BUSY; in async_softint()
2811 async->async_flags &= ~ASYNC_CARR_ON; in async_softint()
2812 cv_broadcast(&async->async_flags_cv); in async_softint()
2826 if (!(async->async_flags & ASYNC_ISOPEN)) { in async_softint()
2827 RING_INIT(async); in async_softint()
2830 if ((cc = RING_CNT(async)) == 0) in async_softint()
2836 if (!(async->async_inflow_source & IN_FLOW_STREAMS)) { in async_softint()
2844 if (async->async_inflow_source & IN_FLOW_STREAMS) { in async_softint()
2858 ttycommon_qfull(&async->async_ttycommon, q); in async_softint()
2865 if (RING_ERR(async, S_ERRORS)) { in async_softint()
2866 RING_UNMARK(async); in async_softint()
2867 c = RING_GET(async); in async_softint()
2870 *bp->b_wptr++ = RING_GET(async); in async_softint()
2891 ASYSETSOFT(async->async_common); /* finish cc chars */ in async_softint()
2896 if ((RING_CNT(async) < (RINGSIZE/4)) && in async_softint()
2897 (async->async_inflow_source & IN_FLOW_RINGBUFF)) { in async_softint()
2907 if (async->async_break > 0) { in async_softint()
2908 nb = async->async_break; in async_softint()
2909 async->async_break = 0; in async_softint()
2910 if (async->async_flags & ASYNC_ISOPEN) { in async_softint()
2919 if (async->async_ocnt <= 0 && (async->async_flags & ASYNC_BUSY)) { in async_softint()
2923 async->async_ocnt); in async_softint()
2924 async->async_flags &= ~ASYNC_BUSY; in async_softint()
2926 if (async->async_xmitblk) in async_softint()
2927 freeb(async->async_xmitblk); in async_softint()
2928 async->async_xmitblk = NULL; in async_softint()
2929 async_start(async); in async_softint()
2935 if (!(async->async_flags & ASYNC_BUSY)) in async_softint()
2936 cv_broadcast(&async->async_flags_cv); in async_softint()
2946 if (async->async_hw_overrun) { in async_softint()
2947 if (async->async_flags & ASYNC_ISOPEN) { in async_softint()
2954 async->async_hw_overrun = 0; in async_softint()
2956 if (async->async_sw_overrun) { in async_softint()
2957 if (async->async_flags & ASYNC_ISOPEN) { in async_softint()
2965 async->async_sw_overrun = 0; in async_softint()
2983 struct asyncline *async = (struct asyncline *)arg; in async_restart() local
2984 struct asycom *asy = async->async_common; in async_restart()
2991 int instance = UNIT(async->async_dev); in async_restart()
3000 if ((async->async_flags & ASYNC_BREAK) && in async_restart()
3001 !(async->async_flags & ASYNC_OUT_SUSPEND)) { in async_restart()
3008 async->async_flags &= ~(ASYNC_DELAY|ASYNC_BREAK); in async_restart()
3009 cv_broadcast(&async->async_flags_cv); in async_restart()
3010 async_start(async); in async_restart()
3016 async_start(struct asyncline *async) in async_start() argument
3018 async_nstart(async, 0); in async_start()
3026 async_nstart(struct asyncline *async, int mode) in async_nstart() argument
3028 struct asycom *asy = async->async_common; in async_nstart()
3039 int instance = UNIT(async->async_dev); in async_nstart()
3056 if (async->async_flags & (ASYNC_BREAK|ASYNC_BUSY)) { in async_nstart()
3060 async->async_flags & ASYNC_BREAK ? "break" : "busy"); in async_nstart()
3076 if (async->async_flags & ASYNC_DELAY) { in async_nstart()
3082 if ((q = async->async_ttycommon.t_writeq) == NULL) { in async_nstart()
3113 async->async_flags |= ASYNC_BREAK; in async_nstart()
3114 (void) timeout(async_restart, (caddr_t)async, in async_nstart()
3125 (void) timeout(async_restart, (caddr_t)async, in async_nstart()
3127 async->async_flags |= ASYNC_DELAY; in async_nstart()
3138 async_ioctl(async, q, bp); in async_nstart()
3156 if (async->async_flags & (ASYNC_HW_OUT_FLW | ASYNC_SW_OUT_FLW | in async_nstart()
3162 async->async_xmitblk = bp; in async_nstart()
3173 if ((async->async_ttycommon.t_cflag & CSIZE) == CS5) { in async_nstart()
3199 async->async_optr = xmit_addr; in async_nstart()
3200 async->async_ocnt = cc; in async_nstart()
3202 async->async_flags |= ASYNC_PROGRESS; in async_nstart()
3205 instance, async->async_ocnt); in async_nstart()
3206 async->async_flags |= ASYNC_BUSY; in async_nstart()
3214 async_resume(struct asyncline *async) in async_resume() argument
3216 struct asycom *asy = async->async_common; in async_resume()
3223 instance = UNIT(async->async_dev); in async_resume()
3230 if (async->async_ocnt > 0 && in async_resume()
3231 !(async->async_flags & in async_resume()
3234 asy->asy_ioaddr + DAT, *async->async_optr++); in async_resume()
3235 async->async_ocnt--; in async_resume()
3236 async->async_flags |= ASYNC_PROGRESS; in async_resume()
3247 struct asyncline *async = arg; in async_hold_utbrk() local
3248 struct asycom *asy = async->async_common; in async_hold_utbrk()
3251 async->async_flags &= ~ASYNC_HOLD_UTBRK; in async_hold_utbrk()
3252 cv_broadcast(&async->async_flags_cv); in async_hold_utbrk()
3253 async->async_utbrktid = 0; in async_hold_utbrk()
3261 async_resume_utbrk(struct asyncline *async) in async_resume_utbrk() argument
3264 struct asycom *asy = async->async_common; in async_resume_utbrk()
3271 while (async->async_flags & ASYNC_HOLD_UTBRK) { in async_resume_utbrk()
3272 cv_wait(&async->async_flags_cv, &asy->asy_excl); in async_resume_utbrk()
3280 if (!(async->async_flags & ASYNC_BREAK)) { in async_resume_utbrk()
3285 async->async_flags &= ~ASYNC_OUT_SUSPEND; in async_resume_utbrk()
3286 cv_broadcast(&async->async_flags_cv); in async_resume_utbrk()
3287 if (async->async_ocnt > 0) { in async_resume_utbrk()
3288 async_resume(async); in async_resume_utbrk()
3291 async->async_flags &= ~ASYNC_BUSY; in async_resume_utbrk()
3293 if (async->async_xmitblk != NULL) { in async_resume_utbrk()
3294 freeb(async->async_xmitblk); in async_resume_utbrk()
3295 async->async_xmitblk = NULL; in async_resume_utbrk()
3297 async_start(async); in async_resume_utbrk()
3309 async_ioctl(struct asyncline *async, queue_t *wq, mblk_t *mp) in async_ioctl() argument
3311 struct asycom *asy = async->async_common; in async_ioctl()
3312 tty_common_t *tp = &async->async_ttycommon; in async_ioctl()
3321 int instance = UNIT(async->async_dev); in async_ioctl()
3333 freemsg(async->async_ttycommon.t_iocpending); in async_ioctl()
3334 async->async_ttycommon.t_iocpending = NULL; in async_ioctl()
3381 if (async->async_wbufcid) in async_ioctl()
3382 unbufcall(async->async_wbufcid); in async_ioctl()
3383 async->async_wbufcid = bufcall(datasize, BPRI_HI, in async_ioctl()
3385 (void *)(intptr_t)async->async_common->asy_unit); in async_ioctl()
3540 while (async->async_flags & ASYNC_BREAK) { in async_ioctl()
3541 cv_wait(&async->async_flags_cv, in async_ioctl()
3557 async->async_ttycommon.t_cflag); in async_ioctl()
3558 async->async_flags |= ASYNC_BREAK; in async_ioctl()
3581 (void) timeout(async_restart, (caddr_t)async, in async_ioctl()
3597 if (!(async->async_flags & ASYNC_OUT_SUSPEND)) { in async_ioctl()
3599 async->async_flags |= ASYNC_OUT_SUSPEND; in async_ioctl()
3600 async->async_flags |= ASYNC_HOLD_UTBRK; in async_ioctl()
3602 async->async_ttycommon.t_cflag); in async_ioctl()
3618 async->async_utbrktid = in async_ioctl()
3620 (caddr_t)async, in async_ioctl()
3627 if (async->async_flags & ASYNC_OUT_SUSPEND) in async_ioctl()
3628 async_resume_utbrk(async); in async_ioctl()
3749 struct asyncline *async; in asyrsrv() local
3751 async = (struct asyncline *)q->q_ptr; in asyrsrv()
3755 ASYSETSOFT(async->async_common); in asyrsrv()
3756 async->async_polltid = 0; in asyrsrv()
3766 #define ASYWPUTDO_NOT_SUSP(async, wput) \ argument
3767 !((wput) && ((async)->async_flags & ASYNC_DDI_SUSPENDED))
3783 struct asyncline *async; in asywputdo() local
3790 async = (struct asyncline *)q->q_ptr; in asywputdo()
3793 instance = UNIT(async->async_dev); in asywputdo()
3795 asy = async->async_common; in asywputdo()
3805 async->async_flags |= ASYNC_STOPPED; in asywputdo()
3812 if (async->async_flags & ASYNC_STOPPED) { in asywputdo()
3813 async->async_flags &= ~ASYNC_STOPPED; in asywputdo()
3814 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
3820 if (async->async_ocnt > 0) { in asywputdo()
3822 async_resume(async); in asywputdo()
3825 async_start(async); in asywputdo()
3850 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
3858 async_resume_utbrk(async); in asywputdo()
3879 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
3887 async_resume_utbrk(async); in asywputdo()
3897 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
3899 async_ioctl(async, q, mp); in asywputdo()
3916 if (async->async_flags & ASYNC_BUSY) { in asywputdo()
3921 async->async_ocnt = 0; in asywputdo()
3922 async->async_flags &= ~ASYNC_BUSY; in asywputdo()
3925 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
3942 if (async->async_xmitblk != NULL) { in asywputdo()
3943 freeb(async->async_xmitblk); in asywputdo()
3944 async->async_xmitblk = NULL; in asywputdo()
3950 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
3966 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
3968 async_start(async); in asywputdo()
3981 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
3983 async_start(async); in asywputdo()
3990 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
3992 if (!(async->async_inflow_source & IN_FLOW_USER)) { in asywputdo()
4009 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
4011 if (async->async_inflow_source & IN_FLOW_USER) { in asywputdo()
4030 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
4052 async->async_flags |= ASYNC_SERVICEIMM; in asywputdo()
4056 async->async_flags &= ~ASYNC_SERVICEIMM; in asywputdo()
4066 if (ASYWPUTDO_NOT_SUSP(async, wput)) { in asywputdo()
4096 struct asyncline *async; in async_reioctl() local
4103 async = asy->asy_priv; in async_reioctl()
4109 async->async_wbufcid = 0; in async_reioctl()
4110 if ((q = async->async_ttycommon.t_writeq) == NULL) { in async_reioctl()
4114 if ((mp = async->async_ttycommon.t_iocpending) != NULL) { in async_reioctl()
4116 async->async_ttycommon.t_iocpending = NULL; in async_reioctl()
4118 async_ioctl(async, q, mp); in async_reioctl()
4126 struct asyncline *async = (struct asyncline *)q->q_ptr; in async_iocdata() local
4131 int instance = UNIT(async->async_dev); in async_iocdata()
4134 asy = async->async_common; in async_iocdata()
4594 struct asyncline *async = asy->asy_priv; in async_flowcontrol_sw_input() local
4595 int instance = UNIT(async->async_dev); in async_flowcontrol_sw_input()
4600 if (!(async->async_ttycommon.t_iflag & IXOFF)) in async_flowcontrol_sw_input()
4608 async->async_inflow_source |= type; in async_flowcontrol_sw_input()
4617 if (async->async_inflow_source & (IN_FLOW_RINGBUFF | in async_flowcontrol_sw_input()
4619 async->async_flags |= ASYNC_SW_IN_FLOW | in async_flowcontrol_sw_input()
4622 "type = %x\n", instance, async->async_inflow_source); in async_flowcontrol_sw_input()
4625 async->async_inflow_source &= ~type; in async_flowcontrol_sw_input()
4626 if (async->async_inflow_source == 0) { in async_flowcontrol_sw_input()
4627 async->async_flags = (async->async_flags & in async_flowcontrol_sw_input()
4637 if (((async->async_flags & (ASYNC_SW_IN_NEEDED | ASYNC_BREAK | in async_flowcontrol_sw_input()
4644 async->async_flags = (async->async_flags & in async_flowcontrol_sw_input()
4647 async->async_flags & ASYNC_SW_IN_FLOW ? in async_flowcontrol_sw_input()
4648 async->async_stopc : async->async_startc); in async_flowcontrol_sw_input()
4668 struct asyncline *async = asy->asy_priv; in async_flowcontrol_sw_output() local
4669 int instance = UNIT(async->async_dev); in async_flowcontrol_sw_output()
4673 if (!(async->async_ttycommon.t_iflag & IXON)) in async_flowcontrol_sw_output()
4678 async->async_flags |= ASYNC_SW_OUT_FLW; in async_flowcontrol_sw_output()
4679 async->async_flags &= ~ASYNC_OUT_FLW_RESUME; in async_flowcontrol_sw_output()
4684 async->async_flags &= ~ASYNC_SW_OUT_FLW; in async_flowcontrol_sw_output()
4685 if (!(async->async_flags & ASYNC_HW_OUT_FLW)) in async_flowcontrol_sw_output()
4686 async->async_flags |= ASYNC_OUT_FLW_RESUME; in async_flowcontrol_sw_output()
4715 struct asyncline *async = asy->asy_priv; in async_flowcontrol_hw_input() local
4716 int instance = UNIT(async->async_dev); in async_flowcontrol_hw_input()
4720 if (!(async->async_ttycommon.t_cflag & CRTSXOFF)) in async_flowcontrol_hw_input()
4725 async->async_inflow_source |= type; in async_flowcontrol_hw_input()
4726 if (async->async_inflow_source & (IN_FLOW_RINGBUFF | in async_flowcontrol_hw_input()
4728 async->async_flags |= ASYNC_HW_IN_FLOW; in async_flowcontrol_hw_input()
4730 "type = %x\n", instance, async->async_inflow_source); in async_flowcontrol_hw_input()
4733 async->async_inflow_source &= ~type; in async_flowcontrol_hw_input()
4734 if (async->async_inflow_source == 0) { in async_flowcontrol_hw_input()
4735 async->async_flags &= ~ASYNC_HW_IN_FLOW; in async_flowcontrol_hw_input()
4744 flag = (async->async_flags & ASYNC_HW_IN_FLOW) ? 0 : RTS; in async_flowcontrol_hw_input()
4768 struct asyncline *async = asy->asy_priv; in async_flowcontrol_hw_output() local
4769 int instance = UNIT(async->async_dev); in async_flowcontrol_hw_output()
4773 if (!(async->async_ttycommon.t_cflag & CRTSCTS)) in async_flowcontrol_hw_output()
4778 async->async_flags |= ASYNC_HW_OUT_FLW; in async_flowcontrol_hw_output()
4779 async->async_flags &= ~ASYNC_OUT_FLW_RESUME; in async_flowcontrol_hw_output()
4784 async->async_flags &= ~ASYNC_HW_OUT_FLW; in async_flowcontrol_hw_output()
4785 if (!(async->async_flags & ASYNC_SW_OUT_FLW)) in async_flowcontrol_hw_output()
4786 async->async_flags |= ASYNC_OUT_FLW_RESUME; in async_flowcontrol_hw_output()