+ for (s=0; s<NDL; s++) {
+ int i;
+
+ uuc = &uu_ctlr[s];
+ um = uuminfo[s];
+ if (uuc->uu_flag)
+ uuc->uu_flag++;
+ if (uuc->uu_flag <= 40)
+ continue;
+ printf("uu%d: read stalled\n", s);
+ printf("%X %X %X %X %X %X %X %X\n", uuc->uu_rbptr, uuc->uu_rcnt,
+ uuc->uu_wbptr, uuc->uu_wcnt, uuc->uu_state, uuc->uu_flag,
+ uuc->uu_addr, uuc->uu_count);
+ uuc->uu_flag = 0;
+ uuaddr = (struct uudevice *)um->um_addr;
+ uutab = &um->um_tab;
+ i = uuaddr->rdb; /* dummy */
+ uuaddr->rcs = UUCS_INTR; /* in case we were flushing */
+ uuaddr->tcs = UUCS_INTR;
+ uuc->uu_state = UUS_IDLE;
+ if (!uutab->b_active) {
+ wakeup((caddr_t)uuc);
+ continue;
+ }
+ if (++uutab->b_errcnt <= 1) {
+ uustart(um);
+ continue;
+ }
+ if (bp = uutab->b_actf) {
+ bp->b_flags |= B_ERROR;
+ if ((bp->b_flags&B_READ) == 0)
+ uu_vee(&pcnt[UNIT(bp->b_dev)]);
+ iodone(bp);
+ }