diff options
author | Aaron Campbell <aaron@cvs.openbsd.org> | 2000-10-16 02:25:23 +0000 |
---|---|---|
committer | Aaron Campbell <aaron@cvs.openbsd.org> | 2000-10-16 02:25:23 +0000 |
commit | c2496a10353156e6e4e5ef9bfcef2c6cdb2e1e61 (patch) | |
tree | 241cddf885bbed09b5123a39a098ca5c5414a2c8 | |
parent | f8bfad23033f826b345f8aa3fc8e6e8aa1155a5e (diff) |
Restore conversion to new timeouts (art@'s previous commit). They were
whacked by the initial commit for console mouse support. jbm must have been
working with an older revision of PCVT (argh, sorry, should have noticed
this long ago).
-rw-r--r-- | sys/arch/i386/isa/pcvt/pcvt_drv.c | 34 | ||||
-rw-r--r-- | sys/arch/i386/isa/pcvt/pcvt_kbd.c | 14 |
2 files changed, 20 insertions, 28 deletions
diff --git a/sys/arch/i386/isa/pcvt/pcvt_drv.c b/sys/arch/i386/isa/pcvt/pcvt_drv.c index d5bf32eb623..728da89bb66 100644 --- a/sys/arch/i386/isa/pcvt/pcvt_drv.c +++ b/sys/arch/i386/isa/pcvt/pcvt_drv.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pcvt_drv.c,v 1.35 2000/10/07 03:12:45 aaron Exp $ */ +/* $OpenBSD: pcvt_drv.c,v 1.36 2000/10/16 02:25:21 aaron Exp $ */ /* * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch. * @@ -97,6 +97,11 @@ void pccnpollc(Dev_t, int); int pcprobe(struct device *, void *, void *); void pcattach(struct device *, struct device *, void *); +#if PCVT_KBD_FIFO +struct timeout pcvt_to; +void pcvt_timeout(void *); +#endif + int pcprobe(struct device *parent, void *match, void *aux) { @@ -179,6 +184,10 @@ pcattach(struct device *parent, struct device *self, void *aux) async_update(); +#if PCVT_KBD_FIFO + timeout_set(&pcvt_to, pcvt_timeout, NULL); +#endif + sc->sc_ih = isa_intr_establish(ia->ia_ic, ia->ia_irq, IST_EDGE, IPL_TTY, pcintr, (void *)0, sc->sc_dev.dv_xname); @@ -397,16 +406,12 @@ u_char pcvt_kbd_fifo[PCVT_KBD_FIFO_SZ]; int pcvt_kbd_wptr = 0; int pcvt_kbd_rptr = 0; short pcvt_kbd_count= 0; -static u_char pcvt_timeout_scheduled; -static void +void pcvt_timeout(void *arg) { - int s; u_char *cp; - pcvt_timeout_scheduled = 0; - #if PCVT_SCREENSAVER pcvt_scrnsv_reset(); #endif /* PCVT_SCREENSAVER */ @@ -425,13 +430,6 @@ pcvt_timeout(void *arg) (*linesw[pcconsp->t_line].l_rint)(*cp++ & 0xff, pcconsp); } - - s = spltty(); - - if (!pcvt_kbd_count) - pcvt_timeout_scheduled = 0; - - splx(s); } return; @@ -484,12 +482,8 @@ pcintr(void *arg) } if (ret == 1) { /* got data from keyboard ? */ - if (!pcvt_timeout_scheduled) { /* if not already active .. */ - s = spltty(); - pcvt_timeout_scheduled = 1; /* flag active */ - timeout((TIMEOUT_FUNC_T)pcvt_timeout, (caddr_t) 0, 1); - splx(s); - } + if (!timeout_pending(&pcvt_to)) /* if not already active .. */ + timeout_add(&pcvt_to, 1); } return (ret); @@ -562,7 +556,7 @@ pcstart(register struct tty *tp) tp->t_state &= ~TS_BUSY; tp->t_state |= TS_TIMEOUT; - timeout(ttrstrt, tp, 1); + timeout_add(&tp->t_rstrt_to, 1); if (tp->t_outq.c_cc <= tp->t_lowat) { low: diff --git a/sys/arch/i386/isa/pcvt/pcvt_kbd.c b/sys/arch/i386/isa/pcvt/pcvt_kbd.c index 705928f2387..e3b7897a227 100644 --- a/sys/arch/i386/isa/pcvt/pcvt_kbd.c +++ b/sys/arch/i386/isa/pcvt/pcvt_kbd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pcvt_kbd.c,v 1.38 2000/10/11 21:24:28 aaron Exp $ */ +/* $OpenBSD: pcvt_kbd.c,v 1.39 2000/10/16 02:25:22 aaron Exp $ */ /* * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch. @@ -169,12 +169,11 @@ do_vgapage(int page) * get lost other times as well. */ -static int lost_intr_timeout_queued = 0; +struct timeout kbd_led_intr_to; static void check_for_lost_intr (void *arg) { - lost_intr_timeout_queued = 0; if (inb(CONTROLLER_CTRL) & STATUS_OUTPBF) { int opri = spltty(); (void)pcrint(); @@ -244,11 +243,7 @@ update_led(void) } #if PCVT_UPDLED_LOSES_INTR - if (lost_intr_timeout_queued) - untimeout(check_for_lost_intr, (void *)NULL); - - timeout(check_for_lost_intr, (void *)NULL, hz); - lost_intr_timeout_queued = 1; + timeout_add(&kbd_led_intr_to, hz); #endif /* PCVT_UPDLED_LOSES_INTR */ } bail: @@ -581,6 +576,9 @@ kbd_code_init(void) doreset(); ovlinit(0); keyboard_is_initialized = 1; +#if !PCVT_NO_LED_UPDATE && PCVT_UPDLED_LOSES_INTR + timeout_set(&kbd_led_intr_to, check_for_lost_intr, NULL); +#endif } /*---------------------------------------------------------------------------* |