diff options
| author | tsutsui <tsutsui@NetBSD.org> | 2009-07-03 14:00:41 +0000 |
|---|---|---|
| committer | tsutsui <tsutsui@NetBSD.org> | 2009-07-03 14:00:41 +0000 |
| commit | e5de2deeb212c7f8fd3429c1c46698f4d71ac3ca (patch) | |
| tree | 99b3782e2c0ae51cd22fd2278934f458ab9452a8 /sys/arch/atari/dev | |
| parent | e8940e0b5d3a2ae7d2acefe4761e5fa00efada95 (diff) | |
Replace one traditional MD si_callback() with MI softint(9).
Diffstat (limited to 'sys/arch/atari/dev')
| -rw-r--r-- | sys/arch/atari/dev/kbd.c | 25 | ||||
| -rw-r--r-- | sys/arch/atari/dev/kbdvar.h | 3 |
2 files changed, 11 insertions, 17 deletions
diff --git a/sys/arch/atari/dev/kbd.c b/sys/arch/atari/dev/kbd.c index b8031c10efc..14ac2e4915e 100644 --- a/sys/arch/atari/dev/kbd.c +++ b/sys/arch/atari/dev/kbd.c @@ -1,4 +1,4 @@ -/* $NetBSD: kbd.c,v 1.38 2009/07/03 13:49:39 tsutsui Exp $ */ +/* $NetBSD: kbd.c,v 1.39 2009/07/03 14:00:41 tsutsui Exp $ */ /* * Copyright (c) 1995 Leo Weppelman @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kbd.c,v 1.38 2009/07/03 13:49:39 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kbd.c,v 1.39 2009/07/03 14:00:41 tsutsui Exp $"); #include "mouse.h" #include "ite.h" @@ -102,7 +102,6 @@ uint8_t kbd_modifier; /* Modifier mask */ static uint8_t kbd_ring[KBD_RING_SIZE]; static volatile u_int kbd_rbput = 0; /* 'put' index */ static u_int kbd_rbget = 0; /* 'get' index */ -static uint8_t kbd_soft = 0; /* 1: Softint has been scheduled*/ static struct kbd_softc kbd_softc; @@ -117,7 +116,7 @@ dev_type_kqfilter(kbdkqfilter); /* Interrupt handler */ void kbdintr(int); -static void kbdsoft(void *, void *); +static void kbdsoft(void *); static void kbdattach(struct device *, struct device *, void *); static int kbdmatch(struct device *, struct cfdata *, void *); #if NITE>0 @@ -220,6 +219,8 @@ kbdattach(struct device *pdp, struct device *dp, void *auxp) printf("\n"); + kbd_softc.k_sicookie = softint_establish(SOFTINT_SERIAL, kbdsoft, NULL); + #if NWSKBD>0 if (dp != NULL) { /* @@ -413,22 +414,15 @@ kbdintr(int sr) /* * Activate software-level to handle possible input. */ - if (got_char) { - if (!BASEPRI(sr)) { - if (!kbd_soft++) - add_sicallback(kbdsoft, 0, 0); - } else { - spl1(); - kbdsoft(NULL, NULL); - } - } + if (got_char) + softint_schedule(kbd_softc.k_sicookie); } /* * Keyboard soft interrupt handler */ -void -kbdsoft(void *junk1, void *junk2) +static void +kbdsoft(void *junk1) { int s; uint8_t code; @@ -436,7 +430,6 @@ kbdsoft(void *junk1, void *junk2) struct firm_event *fe; int put, get, n; - kbd_soft = 0; get = kbd_rbget; for (;;) { diff --git a/sys/arch/atari/dev/kbdvar.h b/sys/arch/atari/dev/kbdvar.h index 701c4e3d81b..1bafe8da2ce 100644 --- a/sys/arch/atari/dev/kbdvar.h +++ b/sys/arch/atari/dev/kbdvar.h @@ -1,4 +1,4 @@ -/* $NetBSD: kbdvar.h,v 1.7 2009/07/03 13:49:39 tsutsui Exp $ */ +/* $NetBSD: kbdvar.h,v 1.8 2009/07/03 14:00:41 tsutsui Exp $ */ /* * Copyright (c) 1996 Leo Weppelman. @@ -55,6 +55,7 @@ struct kbd_softc { struct device *k_wskbddev; /* pointer to wskbd for sending strokes */ int k_pollingmode; /* polling mode on? whatever it isss... */ #endif + void *k_sicookie; /* softint(9) cookie */ }; /* |
