diff options
Diffstat (limited to 'sys/i386/isa/rc.c')
-rw-r--r-- | sys/i386/isa/rc.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/i386/isa/rc.c b/sys/i386/isa/rc.c index 22c82c2..fc35bd5 100644 --- a/sys/i386/isa/rc.c +++ b/sys/i386/isa/rc.c @@ -172,6 +172,8 @@ static int rc_rcsrt[16] = { TTY_BI|TTY_PE|TTY_FE|TTY_OE }; +static struct intrhand *rc_ih; + /* Static prototypes */ static ointhand2_t rcintr; static void rc_hwreset __P((int, int, unsigned int)); @@ -268,7 +270,8 @@ rcattach(dvp) rcb->rcb_probed = RC_ATTACHED; if (!rc_started) { cdevsw_add(&rc_cdevsw); - register_swi(SWI_TTY, rcpoll); + rc_ih = sinthand_add("tty:rc", &tty_ithd, rcpoll, NULL, + SWI_TTY, 0); rc_wakeup((void *)NULL); rc_started = 1; } @@ -362,7 +365,7 @@ rcintr(unit) optr++; rc_scheduled_event++; if (val != 0 && val == rc->rc_hotchar) - setsofttty(); + sched_swi(rc_ih, SWI_NOSWITCH); } } else { /* Store also status data */ @@ -393,7 +396,7 @@ rcintr(unit) && (rc->rc_tp->t_iflag & INPCK)))) val = 0; else if (val != 0 && val == rc->rc_hotchar) - setsofttty(); + sched_swi(rc_ih, SWI_NOSWITCH); optr[0] = val; optr[INPUT_FLAGS_SHIFT] = iack; optr++; @@ -440,7 +443,7 @@ rcintr(unit) if ((iack & MCR_CDchg) && !(rc->rc_flags & RC_MODCHG)) { rc_scheduled_event += LOTS_OF_EVENTS; rc->rc_flags |= RC_MODCHG; - setsofttty(); + sched_swi(rc_ih, SWI_NOSWITCH); } goto more_intrs; } @@ -481,7 +484,7 @@ rcintr(unit) if (!(rc->rc_flags & RC_DOXXFER)) { rc_scheduled_event += LOTS_OF_EVENTS; rc->rc_flags |= RC_DOXXFER; - setsofttty(); + sched_swi(rc_ih, SWI_NOSWITCH); } } } |