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		*/
 };
 
 /*

Reply via email to