Module Name: src
Committed By: tsutsui
Date: Fri Jul 3 14:00:41 UTC 2009
Modified Files:
src/sys/arch/atari/dev: kbd.c kbdvar.h
Log Message:
Replace one traditional MD si_callback() with MI softint(9).
To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/sys/arch/atari/dev/kbd.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/atari/dev/kbdvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/atari/dev/kbd.c
diff -u src/sys/arch/atari/dev/kbd.c:1.38 src/sys/arch/atari/dev/kbd.c:1.39
--- src/sys/arch/atari/dev/kbd.c:1.38 Fri Jul 3 13:49:39 2009
+++ src/sys/arch/atari/dev/kbd.c Fri Jul 3 14:00:41 2009
@@ -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 @@
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 @@
/* 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 @@
printf("\n");
+ kbd_softc.k_sicookie = softint_establish(SOFTINT_SERIAL, kbdsoft, NULL);
+
#if NWSKBD>0
if (dp != NULL) {
/*
@@ -413,22 +414,15 @@
/*
* 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 @@
struct firm_event *fe;
int put, get, n;
- kbd_soft = 0;
get = kbd_rbget;
for (;;) {
Index: src/sys/arch/atari/dev/kbdvar.h
diff -u src/sys/arch/atari/dev/kbdvar.h:1.7 src/sys/arch/atari/dev/kbdvar.h:1.8
--- src/sys/arch/atari/dev/kbdvar.h:1.7 Fri Jul 3 13:49:39 2009
+++ src/sys/arch/atari/dev/kbdvar.h Fri Jul 3 14:00:41 2009
@@ -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 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 */
};
/*