summaryrefslogtreecommitdiff
path: root/sys/arch/atari/dev
diff options
context:
space:
mode:
authortsutsui <tsutsui@NetBSD.org>2009-07-03 14:00:41 +0000
committertsutsui <tsutsui@NetBSD.org>2009-07-03 14:00:41 +0000
commite5de2deeb212c7f8fd3429c1c46698f4d71ac3ca (patch)
tree99b3782e2c0ae51cd22fd2278934f458ab9452a8 /sys/arch/atari/dev
parente8940e0b5d3a2ae7d2acefe4761e5fa00efada95 (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.c25
-rw-r--r--sys/arch/atari/dev/kbdvar.h3
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 */
};
/*