Lines Matching defs:async
169 /* The async interrupt entry points */
175 static void async_ioctl(struct asyncline *async, queue_t *q, mblk_t *mp);
179 static void async_start(struct asyncline *async);
180 static void async_nstart(struct asyncline *async, int mode);
181 static void async_resume(struct asyncline *async);
198 static void async_resume_utbrk(struct asyncline *async);
199 static void async_dtr_free(struct asyncline *async);
417 struct asyncline *async = asy->asy_priv;
421 if (async->async_suspqf == NULL)
422 async->async_suspqf = mp;
424 async->async_suspqb->b_next = mp;
426 async->async_suspqb = mp;
432 struct asyncline *async = asy->asy_priv;
437 if ((mp = async->async_suspqf) != NULL) {
438 async->async_suspqf = mp->b_next;
441 async->async_suspqb = NULL;
449 struct asyncline *async = asy->asy_priv;
457 q = async->async_ttycommon.t_writeq;
463 async->async_flags &= ~ASYNC_DDI_SUSPENDED;
464 cv_broadcast(&async->async_flags_cv);
604 struct asyncline *async;
611 async = asy->asy_priv;
619 if (async->async_dtrtid != 0) {
620 (void) untimeout(async->async_dtrtid);
621 async->async_dtrtid = 0;
629 cv_destroy(&async->async_flags_cv);
649 ASSERT(async->async_ops >= 0);
650 while (async->async_ops > 0)
651 cv_wait(&async->async_ops_cv, &asy->asy_excl);
653 async->async_flags |= ASYNC_DDI_SUSPENDED;
656 while ((async->async_flags & (ASYNC_BREAK|ASYNC_DELAY))) {
657 if (cv_wait_sig(&async->async_flags_cv, &asy->asy_excl)
666 if (async->async_flags & ASYNC_OUT_SUSPEND)
667 async_resume_utbrk(async);
673 if (async->async_wbufcid != 0) {
674 bufcall_id_t bcid = async->async_wbufcid;
675 async->async_wbufcid = 0;
676 async->async_flags |= ASYNC_RESUME_BUFCALL;
761 struct asyncline *async;
775 async = asy->asy_priv;
787 if (async->async_flags & ASYNC_ISOPEN) {
790 if (async->async_ocnt > 0) {
791 async_resume(async);
794 if (async->async_xmitblk)
795 freeb(async->async_xmitblk);
796 async->async_xmitblk = NULL;
797 async_start(async);
807 if (async->async_flags & ASYNC_RESUME_BUFCALL) {
808 async->async_wbufcid = bufcall(async->async_wbufcds,
810 (void *)(intptr_t)async->async_common->asy_unit);
811 async->async_flags &= ~ASYNC_RESUME_BUFCALL;
884 * It appears that there was async hardware that on reset
1090 struct asyncline *async = asy->asy_priv;
1098 cv_destroy(&async->async_flags_cv);
1254 * Probably not an async chip.
1533 struct asyncline *async;
1536 async = asy->asy_priv;
1538 async->async_common = asy;
1539 cv_init(&async->async_flags_cv, NULL, CV_DRIVER, NULL);
1548 struct asyncline *async;
1559 async = asy->asy_priv;
1568 if (!(async->async_flags & ASYNC_ISOPEN)) {
1579 async->async_ttycommon.t_cflag = termiosp->c_cflag;
1588 async->async_ttycommon.t_cflag = asy->asy_cflag;
1590 async->async_ttycommon.t_iflag = 0;
1591 async->async_ttycommon.t_iocpending = NULL;
1592 async->async_ttycommon.t_size.ws_row = 0;
1593 async->async_ttycommon.t_size.ws_col = 0;
1594 async->async_ttycommon.t_size.ws_xpixel = 0;
1595 async->async_ttycommon.t_size.ws_ypixel = 0;
1596 async->async_dev = *dev;
1597 async->async_wbufcid = 0;
1599 async->async_startc = CSTART;
1600 async->async_stopc = CSTOP;
1603 if ((async->async_ttycommon.t_flags & TS_XCLUDE) &&
1608 } else if ((*dev & OUTLINE) && !(async->async_flags & ASYNC_OUT)) {
1615 async->async_flags |= ASYNC_OUT;
1618 while (async->async_flags & ASYNC_DTR_DELAY) {
1623 if (cv_wait_sig(&async->async_flags_cv,
1648 async->async_ttycommon.t_flags |= TS_SOFTCAR;
1651 async->async_ttycommon.t_flags &= ~TS_SOFTCAR;
1660 (async->async_ttycommon.t_flags & TS_SOFTCAR) ? "set" : "clear",
1664 async->async_flags |= ASYNC_CARR_ON;
1666 async->async_flags &= ~ASYNC_CARR_ON;
1674 !(async->async_ttycommon.t_cflag & CLOCAL)) {
1675 if ((!(async->async_flags & (ASYNC_CARR_ON|ASYNC_OUT)) &&
1676 !(async->async_ttycommon.t_flags & TS_SOFTCAR)) ||
1677 ((async->async_flags & ASYNC_OUT) &&
1679 async->async_flags |= ASYNC_WOPEN;
1680 if (cv_wait_sig(&async->async_flags_cv,
1682 async->async_flags &= ~ASYNC_WOPEN;
1686 async->async_flags &= ~ASYNC_WOPEN;
1689 } else if ((async->async_flags & ASYNC_OUT) && !(*dev & OUTLINE)) {
1694 async->async_ttycommon.t_readq = rq;
1695 async->async_ttycommon.t_writeq = WR(rq);
1696 rq->q_ptr = WR(rq)->q_ptr = (caddr_t)async;
1704 async->async_flags |= ASYNC_ISOPEN;
1705 async->async_polltid = 0;
1713 struct asyncline *async = arg;
1714 struct asycom *asy = async->async_common;
1724 if (!(async->async_flags & (ASYNC_BREAK|ASYNC_DELAY|ASYNC_PROGRESS))) {
1725 async->async_ocnt = 0;
1726 async->async_flags &= ~ASYNC_BUSY;
1727 async->async_timer = 0;
1728 bp = async->async_xmitblk;
1729 async->async_xmitblk = NULL;
1739 flushq(async->async_ttycommon.t_writeq, FLUSHALL);
1740 cv_broadcast(&async->async_flags_cv);
1742 async->async_flags &= ~ASYNC_PROGRESS;
1743 async->async_timer = timeout(async_progress_check, async,
1754 async_dtr_free(struct asyncline *async)
1756 struct asycom *asy = async->async_common;
1761 async->async_flags &= ~ASYNC_DTR_DELAY;
1762 async->async_dtrtid = 0;
1763 cv_broadcast(&async->async_flags_cv);
1774 struct asyncline *async;
1781 async = (struct asyncline *)q->q_ptr;
1782 ASSERT(async != NULL);
1784 instance = UNIT(async->async_dev);
1787 asy = async->async_common;
1790 async->async_flags |= ASYNC_CLOSING;
1809 if (async->async_flags & ASYNC_OUT_SUSPEND) {
1810 if (async->async_utbrktid != 0) {
1811 (void) untimeout(async->async_utbrktid);
1812 async->async_utbrktid = 0;
1819 async->async_flags &= ~ASYNC_OUT_SUSPEND;
1834 (async->async_flags & ASYNC_STOPPED)) {
1857 async->async_flags &= ~ASYNC_PROGRESS;
1858 async->async_timer = timeout(async_progress_check, async,
1861 while (async->async_ocnt > 0 ||
1862 async->async_ttycommon.t_writeq->q_first != NULL ||
1863 (async->async_flags & (ASYNC_BUSY|ASYNC_BREAK|ASYNC_DELAY))) {
1864 if (cv_wait_sig(&async->async_flags_cv, &asy->asy_excl) == 0)
1867 if (async->async_timer != 0) {
1868 (void) untimeout(async->async_timer);
1869 async->async_timer = 0;
1873 async->async_ocnt = 0;
1874 if (async->async_xmitblk != NULL)
1875 freeb(async->async_xmitblk);
1876 async->async_xmitblk = NULL;
1885 if ((async->async_ttycommon.t_cflag & HUPCL) ||
1886 (async->async_flags & ASYNC_WOPEN)) {
1890 async->async_ttycommon.t_cflag & HUPCL,
1891 async->async_ttycommon.t_cflag & ASYNC_WOPEN);
1892 async->async_flags |= ASYNC_DTR_DELAY;
1911 async->async_dtrtid =
1913 (caddr_t)async, drv_usectohz(asy_min_dtr_low));
1918 if ((async->async_flags & (ASYNC_WOPEN|ASYNC_ISOPEN)) == 0) {
1925 ttycommon_close(&async->async_ttycommon);
1930 if (async->async_wbufcid != 0) {
1931 unbufcall(async->async_wbufcid);
1932 async->async_wbufcid = 0;
1938 async->async_ttycommon.t_readq = NULL;
1939 async->async_ttycommon.t_writeq = NULL;
1944 async->async_flags &= (ASYNC_DTR_DELAY|ASY_RTS_DTR_OFF);
1945 cv_broadcast(&async->async_flags_cv);
1955 struct asyncline *async;
1958 async = asy->asy_priv;
1964 return ((async->async_ocnt > 0) ||
2014 * Program the ASY port. Most of the async operation is based on the values
2024 struct asyncline *async;
2036 async = asy->asy_priv;
2038 instance = UNIT(async->async_dev);
2043 baudrate = BAUDINDEX(async->async_ttycommon.t_cflag);
2045 async->async_ttycommon.t_cflag &= ~(CIBAUD);
2048 async->async_ttycommon.t_cflag |= CIBAUDEXT;
2049 async->async_ttycommon.t_cflag |=
2052 async->async_ttycommon.t_cflag &= ~CIBAUDEXT;
2053 async->async_ttycommon.t_cflag |=
2057 c_flag = async->async_ttycommon.t_cflag &
2076 if ((CRTSCTS & async->async_ttycommon.t_cflag) && !(flush_reg & CTS)) {
2084 async->async_flags &= ~ASYNC_HW_OUT_FLW;
2098 if (!(IXON & async->async_ttycommon.t_iflag))
2099 async->async_flags &= ~ASYNC_SW_OUT_FLW;
2186 async->async_ttycommon.t_cflag & CRTSCTS);
2188 if ((c_flag & CLOCAL) && !(async->async_ttycommon.t_cflag & CRTSCTS))
2207 struct asyncline *async = asy->asy_priv;
2211 baudrate = BAUDINDEX(async->async_ttycommon.t_cflag);
2234 struct asyncline *async;
2240 async = asy->asy_priv;
2242 if ((async == NULL) ||
2243 !(async->async_flags & (ASYNC_ISOPEN|ASYNC_WOPEN))) {
2301 if ((lsr & XHRE) && (async->async_flags & ASYNC_BUSY) &&
2302 (async->async_ocnt > 0))
2320 struct asyncline *async = asy->asy_priv;
2331 if (async->async_flags & (ASYNC_BREAK|ASYNC_OUT_SUSPEND))
2341 if (async->async_ocnt > 0 && fifo_len > 0 &&
2342 !(async->async_flags &
2344 while (fifo_len-- > 0 && async->async_ocnt-- > 0) {
2346 asy->asy_ioaddr + DAT, *async->async_optr++);
2348 async->async_flags |= ASYNC_PROGRESS;
2433 struct asyncline *async = asy->asy_priv;
2441 tp = &async->async_ttycommon;
2467 if ((c == async->async_stopc) &&
2472 } else if ((c == async->async_startc) &&
2480 (async->async_flags & ASYNC_SW_OUT_FLW)) {
2507 async->async_hw_overrun = 1;
2516 if (RING_POK(async, 2)) {
2517 RING_PUT(async, 0377);
2518 RING_PUT(async, c);
2520 async->async_sw_overrun = 1;
2522 if (RING_POK(async, 1))
2523 RING_PUT(async, c);
2525 async->async_sw_overrun = 1;
2534 async->async_break++;
2536 if (RING_POK(async, 1))
2537 RING_MARK(async, c, s);
2539 async->async_sw_overrun = 1;
2541 if (RING_POK(async, 1))
2542 RING_MARK(async, c, s);
2544 async->async_sw_overrun = 1;
2550 if ((RING_CNT(async) > (RINGSIZE * 3)/4) &&
2551 !(async->async_inflow_source & IN_FLOW_RINGBUFF)) {
2557 if ((async->async_flags & ASYNC_SERVICEIMM) || needsoft ||
2558 (RING_FRAC(async)) || (async->async_polltid == 0)) {
2572 struct asyncline *async = asy->asy_priv;
2573 int msr, t_cflag = async->async_ttycommon.t_cflag;
2575 int instance = UNIT(async->async_dev);
2584 "async%d_msint call #%d:\n"
2613 async->async_ext++;
2636 struct asyncline *async;
2653 async = (struct asyncline *)asy->asy_priv;
2669 cc = RING_CNT(async);
2683 struct asyncline *async = asy->asy_priv;
2691 int instance = UNIT(async->async_dev);
2693 DEBUGCONT1(ASY_DEBUG_PROCS, "async%d_softint\n", instance);
2705 tp = &async->async_ttycommon;
2707 if (async->async_flags & ASYNC_OUT_FLW_RESUME) {
2708 if (async->async_ocnt > 0) {
2710 async_resume(async);
2713 if (async->async_xmitblk)
2714 freeb(async->async_xmitblk);
2715 async->async_xmitblk = NULL;
2716 async_start(async);
2718 async->async_flags &= ~ASYNC_OUT_FLW_RESUME;
2721 if (async->async_ext) {
2722 async->async_ext = 0;
2725 "async%d_softint: asy_msr & DCD = %x, "
2731 if ((async->async_flags & ASYNC_CARR_ON) == 0) {
2733 "async%d_softint: set ASYNC_CARR_ON\n",
2735 async->async_flags |= ASYNC_CARR_ON;
2736 if (async->async_flags & ASYNC_ISOPEN) {
2743 cv_broadcast(&async->async_flags_cv);
2746 if ((async->async_flags & ASYNC_CARR_ON) &&
2752 "async%d_softint: carrier dropped, "
2767 if (async->async_flags & ASYNC_BUSY) {
2772 async->async_ocnt = 0;
2775 async->async_flags &= ~ASYNC_STOPPED;
2776 if (async->async_flags & ASYNC_ISOPEN) {
2782 "async%d_softint: "
2797 flushflag = (async->async_flags &
2803 bp = async->async_xmitblk;
2806 async->async_xmitblk = NULL;
2810 async->async_flags &= ~ASYNC_BUSY;
2821 async->async_flags &= ~ASYNC_CARR_ON;
2822 cv_broadcast(&async->async_flags_cv);
2824 } /* if (async->async_ext) */
2836 if (!(async->async_flags & ASYNC_ISOPEN)) {
2837 RING_INIT(async);
2840 if ((cc = RING_CNT(async)) == 0)
2846 if (!(async->async_inflow_source & IN_FLOW_STREAMS)) {
2854 if (async->async_inflow_source & IN_FLOW_STREAMS) {
2863 DEBUGCONT2(ASY_DEBUG_INPUT, "async%d_softint: %d char(s) in queue.\n",
2868 ttycommon_qfull(&async->async_ttycommon, q);
2875 if (RING_ERR(async, S_ERRORS)) {
2876 RING_UNMARK(async);
2877 c = RING_GET(async);
2880 *bp->b_wptr++ = RING_GET(async);
2907 if ((RING_CNT(async) < (RINGSIZE/4)) &&
2908 (async->async_inflow_source & IN_FLOW_RINGBUFF)) {
2918 if (async->async_break > 0) {
2919 nb = async->async_break;
2920 async->async_break = 0;
2921 if (async->async_flags & ASYNC_ISOPEN) {
2930 if (async->async_ocnt <= 0 && (async->async_flags & ASYNC_BUSY)) {
2932 "async%d_softint: Clearing ASYNC_BUSY. async_ocnt=%d\n",
2934 async->async_ocnt);
2935 async->async_flags &= ~ASYNC_BUSY;
2937 if (async->async_xmitblk)
2938 freeb(async->async_xmitblk);
2939 async->async_xmitblk = NULL;
2940 async_start(async);
2946 if (!(async->async_flags & ASYNC_BUSY))
2947 cv_broadcast(&async->async_flags_cv);
2957 if (async->async_hw_overrun) {
2958 if (async->async_flags & ASYNC_ISOPEN) {
2965 async->async_hw_overrun = 0;
2967 if (async->async_sw_overrun) {
2968 if (async->async_flags & ASYNC_ISOPEN) {
2976 async->async_sw_overrun = 0;
2985 DEBUGCONT1(ASY_DEBUG_PROCS, "async%d_softint: done\n", instance);
2994 struct asyncline *async = (struct asyncline *)arg;
2995 struct asycom *asy = async->async_common;
3002 int instance = UNIT(async->async_dev);
3004 DEBUGCONT1(ASY_DEBUG_PROCS, "async%d_restart\n", instance);
3011 if ((async->async_flags & ASYNC_BREAK) &&
3012 !(async->async_flags & ASYNC_OUT_SUSPEND)) {
3019 async->async_flags &= ~(ASYNC_DELAY|ASYNC_BREAK);
3020 cv_broadcast(&async->async_flags_cv);
3021 async_start(async);
3027 async_start(struct asyncline *async)
3029 async_nstart(async, 0);
3037 async_nstart(struct asyncline *async, int mode)
3039 struct asycom *asy = async->async_common;
3050 int instance = UNIT(async->async_dev);
3052 DEBUGCONT1(ASY_DEBUG_PROCS, "async%d_nstart\n", instance);
3067 if (async->async_flags & (ASYNC_BREAK|ASYNC_BUSY)) {
3069 "async%d_nstart: start %s.\n",
3071 async->async_flags & ASYNC_BREAK ? "break" : "busy");
3087 if (async->async_flags & ASYNC_DELAY) {
3089 "async%d_nstart: start ASYNC_DELAY.\n", instance);
3093 if ((q = async->async_ttycommon.t_writeq) == NULL) {
3095 "async%d_nstart: start writeq is null.\n", instance);
3124 async->async_flags |= ASYNC_BREAK;
3125 (void) timeout(async_restart, (caddr_t)async,
3136 (void) timeout(async_restart, (caddr_t)async,
3138 async->async_flags |= ASYNC_DELAY;
3149 async_ioctl(async, q, bp);
3167 if (async->async_flags & (ASYNC_HW_OUT_FLW | ASYNC_SW_OUT_FLW |
3173 async->async_xmitblk = bp;
3184 if ((async->async_ttycommon.t_cflag & CSIZE) == CS5) {
3210 async->async_optr = xmit_addr;
3211 async->async_ocnt = cc;
3213 async->async_flags |= ASYNC_PROGRESS;
3215 "async%d_nstart: Set ASYNC_BUSY. async_ocnt=%d\n",
3216 instance, async->async_ocnt);
3217 async->async_flags |= ASYNC_BUSY;
3225 async_resume(struct asyncline *async)
3227 struct asycom *asy = async->async_common;
3234 instance = UNIT(async->async_dev);
3235 DEBUGCONT1(ASY_DEBUG_PROCS, "async%d_resume\n", instance);
3241 if (async->async_ocnt > 0 &&
3242 !(async->async_flags &
3245 asy->asy_ioaddr + DAT, *async->async_optr++);
3246 async->async_ocnt--;
3247 async->async_flags |= ASYNC_PROGRESS;
3258 struct asyncline *async = arg;
3259 struct asycom *asy = async->async_common;
3262 async->async_flags &= ~ASYNC_HOLD_UTBRK;
3263 cv_broadcast(&async->async_flags_cv);
3264 async->async_utbrktid = 0;
3272 async_resume_utbrk(struct asyncline *async)
3275 struct asycom *asy = async->async_common;
3282 while (async->async_flags & ASYNC_HOLD_UTBRK) {
3283 cv_wait(&async->async_flags_cv, &asy->asy_excl);
3291 if (!(async->async_flags & ASYNC_BREAK)) {
3296 async->async_flags &= ~ASYNC_OUT_SUSPEND;
3297 cv_broadcast(&async->async_flags_cv);
3298 if (async->async_ocnt > 0) {
3299 async_resume(async);
3302 async->async_flags &= ~ASYNC_BUSY;
3304 if (async->async_xmitblk != NULL) {
3305 freeb(async->async_xmitblk);
3306 async->async_xmitblk = NULL;
3308 async_start(async);
3320 async_ioctl(struct asyncline *async, queue_t *wq, mblk_t *mp)
3322 struct asycom *asy = async->async_common;
3323 tty_common_t *tp = &async->async_ttycommon;
3332 int instance = UNIT(async->async_dev);
3334 DEBUGCONT1(ASY_DEBUG_PROCS, "async%d_ioctl\n", instance);
3344 freemsg(async->async_ttycommon.t_iocpending);
3345 async->async_ttycommon.t_iocpending = NULL;
3359 DEBUGCONT2(ASY_DEBUG_IOCTL, "async%d_ioctl: %s\n",
3392 if (async->async_wbufcid)
3393 unbufcall(async->async_wbufcid);
3394 async->async_wbufcid = bufcall(datasize, BPRI_HI,
3396 (void *)(intptr_t)async->async_common->asy_unit);
3551 while (async->async_flags & ASYNC_BREAK) {
3552 cv_wait(&async->async_flags_cv,
3568 async->async_ttycommon.t_cflag);
3569 async->async_flags |= ASYNC_BREAK;
3592 (void) timeout(async_restart, (caddr_t)async,
3596 "async%d_ioctl: wait for flush.\n",
3602 "async%d_ioctl: ldterm satisfied.\n",
3608 if (!(async->async_flags & ASYNC_OUT_SUSPEND)) {
3610 async->async_flags |= ASYNC_OUT_SUSPEND;
3611 async->async_flags |= ASYNC_HOLD_UTBRK;
3613 async->async_ttycommon.t_cflag);
3629 async->async_utbrktid =
3631 (caddr_t)async,
3638 if (async->async_flags & ASYNC_OUT_SUSPEND)
3639 async_resume_utbrk(async);
3647 DEBUGCONT1(ASY_DEBUG_IOCTL, "async%d_ioctl: "
3662 DEBUGCONT1(ASY_DEBUG_IOCTL, "async%d_ioctl: "
3680 DEBUGCONT1(ASY_DEBUG_IOCTL, "async%d_ioctl: "
3684 DEBUGCONT1(ASY_DEBUG_IOCTL, "async%d_ioctl: "
3755 DEBUGCONT1(ASY_DEBUG_PROCS, "async%d_ioctl: done\n", instance);
3762 struct asyncline *async;
3765 async = (struct asyncline *)q->q_ptr;
3766 asy = (struct asycom *)async->async_common;
3773 async->async_polltid = 0;
3783 #define ASYWPUTDO_NOT_SUSP(async, wput) \
3784 !((wput) && ((async)->async_flags & ASYNC_DDI_SUSPENDED))
3800 struct asyncline *async;
3807 async = (struct asyncline *)q->q_ptr;
3810 instance = UNIT(async->async_dev);
3812 asy = async->async_common;
3822 async->async_flags |= ASYNC_STOPPED;
3829 if (async->async_flags & ASYNC_STOPPED) {
3830 async->async_flags &= ~ASYNC_STOPPED;
3831 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
3837 if (async->async_ocnt > 0) {
3839 async_resume(async);
3842 async_start(async);
3862 "async%d_ioctl: flush request.\n",
3867 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
3875 async_resume_utbrk(async);
3896 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
3904 async_resume_utbrk(async);
3914 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
3916 async_ioctl(async, q, mp);
3933 if (async->async_flags & ASYNC_BUSY) {
3938 async->async_ocnt = 0;
3939 async->async_flags &= ~ASYNC_BUSY;
3942 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
3959 if (async->async_xmitblk != NULL) {
3960 freeb(async->async_xmitblk);
3961 async->async_xmitblk = NULL;
3967 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
3983 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
3985 async_start(async);
3998 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
4000 async_start(async);
4007 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
4009 if (!(async->async_inflow_source & IN_FLOW_USER)) {
4026 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
4028 if (async->async_inflow_source & IN_FLOW_USER) {
4047 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
4069 async->async_flags |= ASYNC_SERVICEIMM;
4073 async->async_flags &= ~ASYNC_SERVICEIMM;
4083 if (ASYWPUTDO_NOT_SUSP(async, wput)) {
4113 struct asyncline *async;
4120 async = asy->asy_priv;
4126 async->async_wbufcid = 0;
4127 if ((q = async->async_ttycommon.t_writeq) == NULL) {
4131 if ((mp = async->async_ttycommon.t_iocpending) != NULL) {
4133 async->async_ttycommon.t_iocpending = NULL;
4135 async_ioctl(async, q, mp);
4143 struct asyncline *async = (struct asyncline *)q->q_ptr;
4148 int instance = UNIT(async->async_dev);
4151 asy = async->async_common;
4163 DEBUGCONT2(ASY_DEBUG_MODEM, "async%d_iocdata: case %s\n",
4611 struct asyncline *async = asy->asy_priv;
4612 int instance = UNIT(async->async_dev);
4617 if (!(async->async_ttycommon.t_iflag & IXOFF))
4625 async->async_inflow_source |= type;
4634 if (async->async_inflow_source & (IN_FLOW_RINGBUFF |
4636 async->async_flags |= ASYNC_SW_IN_FLOW |
4638 DEBUGCONT2(ASY_DEBUG_SFLOW, "async%d: input sflow stop, "
4639 "type = %x\n", instance, async->async_inflow_source);
4642 async->async_inflow_source &= ~type;
4643 if (async->async_inflow_source == 0) {
4644 async->async_flags = (async->async_flags &
4646 DEBUGCONT1(ASY_DEBUG_SFLOW, "async%d: "
4654 if (((async->async_flags & (ASYNC_SW_IN_NEEDED | ASYNC_BREAK |
4661 async->async_flags = (async->async_flags &
4664 async->async_flags & ASYNC_SW_IN_FLOW ?
4665 async->async_stopc : async->async_startc);
4685 struct asyncline *async = asy->asy_priv;
4686 int instance = UNIT(async->async_dev);
4690 if (!(async->async_ttycommon.t_iflag & IXON))
4695 async->async_flags |= ASYNC_SW_OUT_FLW;
4696 async->async_flags &= ~ASYNC_OUT_FLW_RESUME;
4697 DEBUGCONT1(ASY_DEBUG_SFLOW, "async%d: output sflow stop\n",
4701 async->async_flags &= ~ASYNC_SW_OUT_FLW;
4702 if (!(async->async_flags & ASYNC_HW_OUT_FLW))
4703 async->async_flags |= ASYNC_OUT_FLW_RESUME;
4704 DEBUGCONT1(ASY_DEBUG_SFLOW, "async%d: output sflow start\n",
4732 struct asyncline *async = asy->asy_priv;
4733 int instance = UNIT(async->async_dev);
4737 if (!(async->async_ttycommon.t_cflag & CRTSXOFF))
4742 async->async_inflow_source |= type;
4743 if (async->async_inflow_source & (IN_FLOW_RINGBUFF |
4745 async->async_flags |= ASYNC_HW_IN_FLOW;
4746 DEBUGCONT2(ASY_DEBUG_HFLOW, "async%d: input hflow stop, "
4747 "type = %x\n", instance, async->async_inflow_source);
4750 async->async_inflow_source &= ~type;
4751 if (async->async_inflow_source == 0) {
4752 async->async_flags &= ~ASYNC_HW_IN_FLOW;
4753 DEBUGCONT1(ASY_DEBUG_HFLOW, "async%d: "
4761 flag = (async->async_flags & ASYNC_HW_IN_FLOW) ? 0 : RTS;
4785 struct asyncline *async = asy->asy_priv;
4786 int instance = UNIT(async->async_dev);
4790 if (!(async->async_ttycommon.t_cflag & CRTSCTS))
4795 async->async_flags |= ASYNC_HW_OUT_FLW;
4796 async->async_flags &= ~ASYNC_OUT_FLW_RESUME;
4797 DEBUGCONT1(ASY_DEBUG_HFLOW, "async%d: output hflow stop\n",
4801 async->async_flags &= ~ASYNC_HW_OUT_FLW;
4802 if (!(async->async_flags & ASYNC_SW_OUT_FLW))
4803 async->async_flags |= ASYNC_OUT_FLW_RESUME;
4804 DEBUGCONT1(ASY_DEBUG_HFLOW, "async%d: output hflow start\n",