From: Matthew Dillon Date: Fri, 10 Jun 2005 23:29:32 +0000 (+0000) Subject: spl->critical section conversion. X-Git-Tag: v2.0.1~7053 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/0563a9742ded161beb58a73340faf377c6c3ff71 spl->critical section conversion. --- diff --git a/sys/dev/powermng/i386/intpm/intpm.c b/sys/dev/powermng/i386/intpm/intpm.c index f3aa2b5a81..791742e49b 100644 --- a/sys/dev/powermng/i386/intpm/intpm.c +++ b/sys/dev/powermng/i386/intpm/intpm.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/pci/intpm.c,v 1.16.2.1 2001/12/23 08:17:47 pirzyk Exp $ - * $DragonFly: src/sys/dev/powermng/i386/intpm/intpm.c,v 1.7 2005/05/24 20:59:03 dillon Exp $ + * $DragonFly: src/sys/dev/powermng/i386/intpm/intpm.c,v 1.8 2005/06/10 23:29:31 dillon Exp $ */ #include @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -180,8 +181,8 @@ static int intsmb_callback(device_t dev, int index, caddr_t data) { int error = 0; - intrmask_t s; - s=splnet(); + + crit_enter(); switch (index) { case SMB_REQUEST_BUS: break; @@ -190,13 +191,12 @@ intsmb_callback(device_t dev, int index, caddr_t data) default: error = EINVAL; } - splx(s); + crit_exit(); return (error); } /*counterpart of smbtx_smb_free*/ static int intsmb_free(device_t dev){ - intrmask_t s; struct intsmb_softc *sc = (struct intsmb_softc *)device_get_softc(dev); if((bus_space_read_1(sc->st,sc->sh,PIIX4_SMBHSTSTS)& PIIX4_SMBHSTSTAT_BUSY) @@ -206,7 +206,7 @@ intsmb_free(device_t dev){ #endif || sc->isbusy) return EBUSY; - s=splhigh(); + crit_enter(); sc->isbusy=1; /*Disable Intrrupt in slave part*/ #ifndef ENABLE_ALART @@ -219,7 +219,7 @@ intsmb_free(device_t dev){ PIIX4_SMBHSTSTAT_BUSC| PIIX4_SMBHSTSTAT_FAIL) ); - splx(s); + crit_exit(); return 0; } @@ -378,7 +378,6 @@ intsmb_stop_poll(device_t dev){ static int intsmb_stop(device_t dev){ int error; - intrmask_t s; struct intsmb_softc *sc = (struct intsmb_softc *)device_get_softc(dev); if(cold){ /*So that it can use device during probing device on SMBus.*/ @@ -405,12 +404,12 @@ intsmb_stop(device_t dev){ } } /*Timeout Procedure*/ - s=splhigh(); + crit_enter(); sc->isbusy=0; /*Re-enable supressed intrrupt from slave part*/ bus_space_write_1(sc->st,sc->sh, PIIX4_SMBSLVCNT,PIIX4_SMBSLVCNT_ALTEN); - splx(s); + crit_exit(); return EIO; } diff --git a/sys/dev/powermng/ichsmb/ichsmb.c b/sys/dev/powermng/ichsmb/ichsmb.c index 9bd71fbace..94e5bd2fba 100644 --- a/sys/dev/powermng/ichsmb/ichsmb.c +++ b/sys/dev/powermng/ichsmb/ichsmb.c @@ -37,7 +37,7 @@ * Author: Archie Cobbs * * $FreeBSD: src/sys/dev/ichsmb/ichsmb.c,v 1.1.2.1 2000/10/09 00:52:43 archie Exp $ - * $DragonFly: src/sys/dev/powermng/ichsmb/ichsmb.c,v 1.5 2005/02/17 13:59:36 joerg Exp $ + * $DragonFly: src/sys/dev/powermng/ichsmb/ichsmb.c,v 1.6 2005/06/10 23:29:32 dillon Exp $ */ /* @@ -51,6 +51,7 @@ #include #include #include +#include #include #include @@ -156,7 +157,6 @@ ichsmb_quick(device_t dev, u_char slave, int how) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x how=%d\n", slave, how); KASSERT(sc->ich_cmd == -1, @@ -164,7 +164,7 @@ ichsmb_quick(device_t dev, u_char slave, int how) switch (how) { case SMB_QREAD: case SMB_QWRITE: - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_QUICK; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | (how == SMB_QREAD ? @@ -172,7 +172,7 @@ ichsmb_quick(device_t dev, u_char slave, int how) bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT, ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd); smb_error = ichsmb_wait(sc); - splx(s); + crit_exit(); break; default: smb_error = SMB_ENOTSUPP; @@ -186,12 +186,11 @@ ichsmb_sendb(device_t dev, u_char slave, char byte) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x byte=0x%02x\n", slave, (u_char)byte); KASSERT(sc->ich_cmd == -1, ("%s: ich_cmd=%d\n", __func__ , sc->ich_cmd)); - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BYTE; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | ICH_XMIT_SLVA_WRITE); @@ -199,7 +198,7 @@ ichsmb_sendb(device_t dev, u_char slave, char byte) bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT, ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd); smb_error = ichsmb_wait(sc); - splx(s); + crit_exit(); DBG("smb_error=%d\n", smb_error); return (smb_error); } @@ -209,12 +208,11 @@ ichsmb_recvb(device_t dev, u_char slave, char *byte) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x\n", slave); KASSERT(sc->ich_cmd == -1, ("%s: ich_cmd=%d\n", __func__ , sc->ich_cmd)); - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BYTE; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | ICH_XMIT_SLVA_READ); @@ -222,7 +220,7 @@ ichsmb_recvb(device_t dev, u_char slave, char *byte) ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd); if ((smb_error = ichsmb_wait(sc)) == SMB_ENOERR) *byte = bus_space_read_1(sc->io_bst, sc->io_bsh, ICH_D0); - splx(s); + crit_exit(); DBG("smb_error=%d byte=0x%02x\n", smb_error, (u_char)*byte); return (smb_error); } @@ -232,13 +230,12 @@ ichsmb_writeb(device_t dev, u_char slave, char cmd, char byte) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x cmd=0x%02x byte=0x%02x\n", slave, (u_char)cmd, (u_char)byte); KASSERT(sc->ich_cmd == -1, ("%s: ich_cmd=%d\n", __func__ , sc->ich_cmd)); - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BYTE_DATA; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | ICH_XMIT_SLVA_WRITE); @@ -247,7 +244,7 @@ ichsmb_writeb(device_t dev, u_char slave, char cmd, char byte) bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT, ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd); smb_error = ichsmb_wait(sc); - splx(s); + crit_exit(); DBG("smb_error=%d\n", smb_error); return (smb_error); } @@ -257,13 +254,12 @@ ichsmb_writew(device_t dev, u_char slave, char cmd, short word) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x cmd=0x%02x word=0x%04x\n", slave, (u_char)cmd, (u_int16_t)word); KASSERT(sc->ich_cmd == -1, ("%s: ich_cmd=%d\n", __func__ , sc->ich_cmd)); - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_WORD_DATA; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | ICH_XMIT_SLVA_WRITE); @@ -273,7 +269,7 @@ ichsmb_writew(device_t dev, u_char slave, char cmd, short word) bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT, ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd); smb_error = ichsmb_wait(sc); - splx(s); + crit_exit(); DBG("smb_error=%d\n", smb_error); return (smb_error); } @@ -283,12 +279,11 @@ ichsmb_readb(device_t dev, u_char slave, char cmd, char *byte) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x cmd=0x%02x\n", slave, (u_char)cmd); KASSERT(sc->ich_cmd == -1, ("%s: ich_cmd=%d\n", __func__ , sc->ich_cmd)); - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BYTE_DATA; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | ICH_XMIT_SLVA_READ); @@ -297,7 +292,7 @@ ichsmb_readb(device_t dev, u_char slave, char cmd, char *byte) ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd); if ((smb_error = ichsmb_wait(sc)) == SMB_ENOERR) *byte = bus_space_read_1(sc->io_bst, sc->io_bsh, ICH_D0); - splx(s); + crit_exit(); DBG("smb_error=%d byte=0x%02x\n", smb_error, (u_char)*byte); return (smb_error); } @@ -307,12 +302,11 @@ ichsmb_readw(device_t dev, u_char slave, char cmd, short *word) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x cmd=0x%02x\n", slave, (u_char)cmd); KASSERT(sc->ich_cmd == -1, ("%s: ich_cmd=%d\n", __func__ , sc->ich_cmd)); - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_WORD_DATA; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | ICH_XMIT_SLVA_READ); @@ -325,7 +319,7 @@ ichsmb_readw(device_t dev, u_char slave, char cmd, short *word) | (bus_space_read_1(sc->io_bst, sc->io_bsh, ICH_D1) << 8); } - splx(s); + crit_exit(); DBG("smb_error=%d word=0x%04x\n", smb_error, (u_int16_t)*word); return (smb_error); } @@ -335,13 +329,12 @@ ichsmb_pcall(device_t dev, u_char slave, char cmd, short sdata, short *rdata) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x cmd=0x%02x sdata=0x%04x\n", slave, (u_char)cmd, (u_int16_t)sdata); KASSERT(sc->ich_cmd == -1, ("%s: ich_cmd=%d\n", __func__ , sc->ich_cmd)); - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_PROC_CALL; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | ICH_XMIT_SLVA_WRITE); @@ -356,7 +349,7 @@ ichsmb_pcall(device_t dev, u_char slave, char cmd, short sdata, short *rdata) | (bus_space_read_1(sc->io_bst, sc->io_bsh, ICH_D1) << 8); } - splx(s); + crit_exit(); DBG("smb_error=%d rdata=0x%04x\n", smb_error, (u_int16_t)*rdata); return (smb_error); } @@ -366,7 +359,6 @@ ichsmb_bwrite(device_t dev, u_char slave, char cmd, u_char count, char *buf) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x cmd=0x%02x count=%d\n", slave, (u_char)cmd, count); #if ICHSMB_DEBUG @@ -393,7 +385,7 @@ ichsmb_bwrite(device_t dev, u_char slave, char cmd, u_char count, char *buf) sc->block_index = 1; sc->block_write = 1; - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BLOCK; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | ICH_XMIT_SLVA_WRITE); @@ -403,7 +395,7 @@ ichsmb_bwrite(device_t dev, u_char slave, char cmd, u_char count, char *buf) bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_CNT, ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd); smb_error = ichsmb_wait(sc); - splx(s); + crit_exit(); DBG("smb_error=%d\n", smb_error); return (smb_error); } @@ -413,7 +405,6 @@ ichsmb_bread(device_t dev, u_char slave, char cmd, u_char count, char *buf) { const sc_p sc = device_get_softc(dev); int smb_error; - int s; DBG("slave=0x%02x cmd=0x%02x count=%d\n", slave, (u_char)cmd, count); KASSERT(sc->ich_cmd == -1, @@ -425,7 +416,7 @@ ichsmb_bread(device_t dev, u_char slave, char cmd, u_char count, char *buf) sc->block_index = 0; sc->block_write = 0; - s = splhigh(); + crit_enter(); sc->ich_cmd = ICH_HST_CNT_SMB_CMD_BLOCK; bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_XMIT_SLVA, (slave << 1) | ICH_XMIT_SLVA_READ); @@ -435,7 +426,7 @@ ichsmb_bread(device_t dev, u_char slave, char cmd, u_char count, char *buf) ICH_HST_CNT_START | ICH_HST_CNT_INTREN | sc->ich_cmd); if ((smb_error = ichsmb_wait(sc)) == SMB_ENOERR) bcopy(sc->block_data, buf, sc->block_count); - splx(s); + crit_exit(); DBG("smb_error=%d\n", smb_error); #if ICHSMB_DEBUG #define DISP(ch) (((ch) < 0x20 || (ch) >= 0x7e) ? '.' : (ch)) @@ -496,9 +487,8 @@ ichsmb_device_intr(void *cookie) u_int8_t ok_bits; int cmd_index; int count; - int s; - s = splhigh(); + crit_enter(); for (count = 0; count < maxloops; count++) { /* Get and reset status bits */ @@ -610,7 +600,7 @@ finished: /* Clear status bits and try again */ bus_space_write_1(sc->io_bst, sc->io_bsh, ICH_HST_STA, status); } - splx(s); + crit_exit(); /* Too many loops? */ if (count == maxloops) { @@ -621,7 +611,7 @@ finished: } /* - * Wait for command completion. Assumes splhigh(). + * Wait for command completion. Assumes a critical section. * Returns an SMB_* error code. */ static int diff --git a/sys/emulation/linux/linux_misc.c b/sys/emulation/linux/linux_misc.c index 1d7cba05be..b91a480714 100644 --- a/sys/emulation/linux/linux_misc.c +++ b/sys/emulation/linux/linux_misc.c @@ -26,7 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.85.2.9 2002/09/24 08:11:41 mdodd Exp $ - * $DragonFly: src/sys/emulation/linux/linux_misc.c,v 1.23 2005/04/22 02:09:15 swildner Exp $ + * $DragonFly: src/sys/emulation/linux/linux_misc.c,v 1.24 2005/06/10 23:27:01 dillon Exp $ */ #include "opt_compat.h" @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -163,7 +164,6 @@ linux_alarm(struct linux_alarm_args *args) struct proc *p = td->td_proc; struct itimerval it, old_it; struct timeval tv; - int s; KKASSERT(p); @@ -179,7 +179,7 @@ linux_alarm(struct linux_alarm_args *args) it.it_value.tv_usec = 0; it.it_interval.tv_sec = 0; it.it_interval.tv_usec = 0; - s = splsoftclock(); + crit_enter(); old_it = p->p_realtimer; getmicrouptime(&tv); if (timevalisset(&old_it.it_value)) @@ -190,7 +190,7 @@ linux_alarm(struct linux_alarm_args *args) timevaladd(&it.it_value, &tv); } p->p_realtimer = it; - splx(s); + crit_exit(); if (timevalcmp(&old_it.it_value, &tv, >)) { timevalsub(&old_it.it_value, &tv); if (old_it.it_value.tv_usec != 0) diff --git a/sys/emulation/ndis/subr_ntoskrnl.c b/sys/emulation/ndis/subr_ntoskrnl.c index 0682c2c868..fe8600aaad 100644 --- a/sys/emulation/ndis/subr_ntoskrnl.c +++ b/sys/emulation/ndis/subr_ntoskrnl.c @@ -30,7 +30,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/compat/ndis/subr_ntoskrnl.c,v 1.40 2004/07/20 20:28:57 wpaul Exp $ - * $DragonFly: src/sys/emulation/ndis/subr_ntoskrnl.c,v 1.5 2004/11/17 18:59:21 dillon Exp $ + * $DragonFly: src/sys/emulation/ndis/subr_ntoskrnl.c,v 1.6 2005/06/10 23:27:02 dillon Exp $ */ #include @@ -1137,7 +1137,7 @@ ntoskrnl_munmaplockedpages(vaddr, buf) /* * The KeInitializeSpinLock(), KefAcquireSpinLockAtDpcLevel() * and KefReleaseSpinLockFromDpcLevel() appear to be analagous - * to splnet()/splx() in their use. We can't create a new mutex + * to crit_enter()/crit_exit() in their use. We can't create a new mutex * lock here because there is no complimentary KeFreeSpinLock() * function. Instead, we grab a mutex from the mutex pool. */