Module Name:    src
Committed By:   nonaka
Date:           Sat Dec 12 13:12:49 UTC 2009

Modified Files:
        src/sys/arch/zaurus/dev: zapm.c

Log Message:
Use mutex(9).


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/zaurus/dev/zapm.c

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/zaurus/dev/zapm.c
diff -u src/sys/arch/zaurus/dev/zapm.c:1.7 src/sys/arch/zaurus/dev/zapm.c:1.8
--- src/sys/arch/zaurus/dev/zapm.c:1.7	Sat Dec 12 11:38:45 2009
+++ src/sys/arch/zaurus/dev/zapm.c	Sat Dec 12 13:12:49 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: zapm.c,v 1.7 2009/12/12 11:38:45 nonaka Exp $	*/
+/*	$NetBSD: zapm.c,v 1.8 2009/12/12 13:12:49 nonaka Exp $	*/
 /*	$OpenBSD: zaurus_apm.c,v 1.13 2006/12/12 23:14:28 dim Exp $	*/
 
 /*
@@ -18,7 +18,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: zapm.c,v 1.7 2009/12/12 11:38:45 nonaka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: zapm.c,v 1.8 2009/12/12 13:12:49 nonaka Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -49,6 +49,7 @@
 struct zapm_softc {
 	device_t sc_dev;
 	void *sc_apmdev;
+	kmutex_t sc_mtx;
 
 	struct callout sc_cyclic_poll;
 	struct callout sc_discharge_poll;
@@ -143,6 +144,7 @@
 	callout_setfunc(&sc->sc_cyclic_poll, zapm_cyclic, sc);
 	callout_init(&sc->sc_discharge_poll, 0);
 	callout_setfunc(&sc->sc_discharge_poll, zapm_poll, sc);
+	mutex_init(&sc->sc_mtx, MUTEX_DEFAULT, IPL_NONE);
 
 	if (ZAURUS_ISC3000) {
 		sc->sc_ac_detect_pin = GPIO_AC_IN_C3000;
@@ -781,9 +783,9 @@
 	int bc_lock;
 	int charging;
 	int volt;
-	int s;
 
-	s = splhigh();
+	if (!mutex_tryenter(&sc->sc_mtx))
+		return;
 
 	ac_state = zapm_get_ac_state(sc);
 	bc_lock = zapm_get_battery_compartment_state(sc);
@@ -875,5 +877,5 @@
 		    (void *)zapm_battery_state(volt));
 	}
 
-	splx(s);
+	mutex_exit(&sc->sc_mtx);
 }

Reply via email to