make bio and disk drivers not do spl0 so can call from panic without trap 2's
authorBill Joy <root@ucbvax.Berkeley.EDU>
Mon, 18 Jan 1982 12:13:01 +0000 (04:13 -0800)
committerBill Joy <root@ucbvax.Berkeley.EDU>
Mon, 18 Jan 1982 12:13:01 +0000 (04:13 -0800)
SCCS-vsn: sys/kern/kern_physio.c 4.25
SCCS-vsn: sys/kern/vfs_bio.c 4.25
SCCS-vsn: sys/kern/vfs_cluster.c 4.25
SCCS-vsn: sys/vax/mba/hp.c 4.43
SCCS-vsn: sys/vax/uba/rk.c 4.38
SCCS-vsn: sys/vax/uba/uda.c 4.2
SCCS-vsn: sys/vax/uba/up.c 4.41

usr/src/sys/kern/kern_physio.c
usr/src/sys/kern/vfs_bio.c
usr/src/sys/kern/vfs_cluster.c
usr/src/sys/vax/mba/hp.c
usr/src/sys/vax/uba/rk.c
usr/src/sys/vax/uba/uda.c
usr/src/sys/vax/uba/up.c

index c153fac..e5d3a5f 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_physio.c   4.24    82/01/17        */
+/*     kern_physio.c   4.25    82/01/17        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -419,9 +419,10 @@ struct buf *
 geteblk()
 {
        register struct buf *bp, *dp;
 geteblk()
 {
        register struct buf *bp, *dp;
+       int s;
 
 loop:
 
 loop:
-       (void) spl6();
+       s = spl6();
        for (dp = &bfreelist[BQUEUES-1]; dp > bfreelist; dp--)
                if (dp->av_forw != dp)
                        break;
        for (dp = &bfreelist[BQUEUES-1]; dp > bfreelist; dp--)
                if (dp->av_forw != dp)
                        break;
@@ -430,7 +431,7 @@ loop:
                sleep((caddr_t)dp, PRIBIO+1);
                goto loop;
        }
                sleep((caddr_t)dp, PRIBIO+1);
                goto loop;
        }
-       (void) spl0();
+       splx(s);
        bp = dp->av_forw;
        notavail(bp);
        if (bp->b_flags & B_DELWRI) {
        bp = dp->av_forw;
        notavail(bp);
        if (bp->b_flags & B_DELWRI) {
@@ -459,11 +460,12 @@ loop:
 iowait(bp)
 register struct buf *bp;
 {
 iowait(bp)
 register struct buf *bp;
 {
+       int s;
 
 
-       (void) spl6();
+       s = spl6();
        while ((bp->b_flags&B_DONE)==0)
                sleep((caddr_t)bp, PRIBIO);
        while ((bp->b_flags&B_DONE)==0)
                sleep((caddr_t)bp, PRIBIO);
-       (void) spl0();
+       splx(s);
        geterror(bp);
 }
 
        geterror(bp);
 }
 
@@ -565,15 +567,16 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
        register int c;
        int p2dp;
        register struct pte *dpte, *vpte;
        register int c;
        int p2dp;
        register struct pte *dpte, *vpte;
+       int s;
 
 
-       (void) spl6();
+       s = spl6();
        while (bswlist.av_forw == NULL) {
                bswlist.b_flags |= B_WANTED;
                sleep((caddr_t)&bswlist, PSWP+1);
        }
        bp = bswlist.av_forw;
        bswlist.av_forw = bp->av_forw;
        while (bswlist.av_forw == NULL) {
                bswlist.b_flags |= B_WANTED;
                sleep((caddr_t)&bswlist, PSWP+1);
        }
        bp = bswlist.av_forw;
        bswlist.av_forw = bp->av_forw;
-       (void) spl0();
+       splx(s);
 
        bp->b_flags = B_BUSY | B_PHYS | rdflg | flag;
        if ((bp->b_flags & (B_DIRTY|B_PGIN)) == 0)
 
        bp->b_flags = B_BUSY | B_PHYS | rdflg | flag;
        if ((bp->b_flags & (B_DIRTY|B_PGIN)) == 0)
@@ -612,10 +615,10 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
                                panic("big push");
                        return;
                }
                                panic("big push");
                        return;
                }
-               (void) spl6();
+               s = spl6();
                while((bp->b_flags&B_DONE)==0)
                        sleep((caddr_t)bp, PSWP);
                while((bp->b_flags&B_DONE)==0)
                        sleep((caddr_t)bp, PSWP);
-               (void) spl0();
+               splx(s);
                bp->b_un.b_addr += c;
                bp->b_flags &= ~B_DONE;
                if (bp->b_flags & B_ERROR) {
                bp->b_un.b_addr += c;
                bp->b_flags &= ~B_DONE;
                if (bp->b_flags & B_ERROR) {
@@ -626,7 +629,7 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
                nbytes -= c;
                dblkno += btoc(c);
        }
                nbytes -= c;
                dblkno += btoc(c);
        }
-       (void) spl6();
+       s = spl6();
        bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_PAGET|B_UAREA|B_DIRTY);
        bp->av_forw = bswlist.av_forw;
        bswlist.av_forw = bp;
        bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_PAGET|B_UAREA|B_DIRTY);
        bp->av_forw = bswlist.av_forw;
        bswlist.av_forw = bp;
@@ -635,7 +638,7 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
                wakeup((caddr_t)&bswlist);
                wakeup((caddr_t)&proc[2]);
        }
                wakeup((caddr_t)&bswlist);
                wakeup((caddr_t)&proc[2]);
        }
-       (void) spl0();
+       splx(s);
 }
 
 /*
 }
 
 /*
@@ -676,9 +679,10 @@ dev_t dev;
 {
        register struct buf *bp;
        register struct buf *flist;
 {
        register struct buf *bp;
        register struct buf *flist;
+       int s;
 
 loop:
 
 loop:
-       (void) spl6();
+       s = spl6();
        for (flist = bfreelist; flist < &bfreelist[BQUEUES]; flist++)
        for (bp = flist->av_forw; bp != flist; bp = bp->av_forw) {
                if (bp->b_flags&B_DELWRI && (dev == NODEV||dev==bp->b_dev)) {
        for (flist = bfreelist; flist < &bfreelist[BQUEUES]; flist++)
        for (bp = flist->av_forw; bp != flist; bp = bp->av_forw) {
                if (bp->b_flags&B_DELWRI && (dev == NODEV||dev==bp->b_dev)) {
@@ -688,7 +692,7 @@ loop:
                        goto loop;
                }
        }
                        goto loop;
                }
        }
-       (void) spl0();
+       splx(s);
 }
 
 /*
 }
 
 /*
@@ -712,12 +716,13 @@ unsigned (*mincnt)();
 {
        register int c;
        char *a;
 {
        register int c;
        char *a;
+       int s;
 
        if (useracc(u.u_base,u.u_count,rw==B_READ?B_WRITE:B_READ) == NULL) {
                u.u_error = EFAULT;
                return;
        }
 
        if (useracc(u.u_base,u.u_count,rw==B_READ?B_WRITE:B_READ) == NULL) {
                u.u_error = EFAULT;
                return;
        }
-       (void) spl6();
+       s = spl6();
        while (bp->b_flags&B_BUSY) {
                bp->b_flags |= B_WANTED;
                sleep((caddr_t)bp, PRIBIO+1);
        while (bp->b_flags&B_BUSY) {
                bp->b_flags |= B_WANTED;
                sleep((caddr_t)bp, PRIBIO+1);
@@ -742,7 +747,7 @@ unsigned (*mincnt)();
                u.u_procp->p_flag &= ~SPHYSIO;
                if (bp->b_flags&B_WANTED)
                        wakeup((caddr_t)bp);
                u.u_procp->p_flag &= ~SPHYSIO;
                if (bp->b_flags&B_WANTED)
                        wakeup((caddr_t)bp);
-               (void) spl0();
+               splx(s);
                bp->b_un.b_addr += c;
                u.u_count -= c;
                u.u_offset += c;
                bp->b_un.b_addr += c;
                u.u_count -= c;
                u.u_offset += c;
index 2041841..798643d 100644 (file)
@@ -1,4 +1,4 @@
-/*     vfs_bio.c       4.24    82/01/17        */
+/*     vfs_bio.c       4.25    82/01/17        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -419,9 +419,10 @@ struct buf *
 geteblk()
 {
        register struct buf *bp, *dp;
 geteblk()
 {
        register struct buf *bp, *dp;
+       int s;
 
 loop:
 
 loop:
-       (void) spl6();
+       s = spl6();
        for (dp = &bfreelist[BQUEUES-1]; dp > bfreelist; dp--)
                if (dp->av_forw != dp)
                        break;
        for (dp = &bfreelist[BQUEUES-1]; dp > bfreelist; dp--)
                if (dp->av_forw != dp)
                        break;
@@ -430,7 +431,7 @@ loop:
                sleep((caddr_t)dp, PRIBIO+1);
                goto loop;
        }
                sleep((caddr_t)dp, PRIBIO+1);
                goto loop;
        }
-       (void) spl0();
+       splx(s);
        bp = dp->av_forw;
        notavail(bp);
        if (bp->b_flags & B_DELWRI) {
        bp = dp->av_forw;
        notavail(bp);
        if (bp->b_flags & B_DELWRI) {
@@ -459,11 +460,12 @@ loop:
 iowait(bp)
 register struct buf *bp;
 {
 iowait(bp)
 register struct buf *bp;
 {
+       int s;
 
 
-       (void) spl6();
+       s = spl6();
        while ((bp->b_flags&B_DONE)==0)
                sleep((caddr_t)bp, PRIBIO);
        while ((bp->b_flags&B_DONE)==0)
                sleep((caddr_t)bp, PRIBIO);
-       (void) spl0();
+       splx(s);
        geterror(bp);
 }
 
        geterror(bp);
 }
 
@@ -565,15 +567,16 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
        register int c;
        int p2dp;
        register struct pte *dpte, *vpte;
        register int c;
        int p2dp;
        register struct pte *dpte, *vpte;
+       int s;
 
 
-       (void) spl6();
+       s = spl6();
        while (bswlist.av_forw == NULL) {
                bswlist.b_flags |= B_WANTED;
                sleep((caddr_t)&bswlist, PSWP+1);
        }
        bp = bswlist.av_forw;
        bswlist.av_forw = bp->av_forw;
        while (bswlist.av_forw == NULL) {
                bswlist.b_flags |= B_WANTED;
                sleep((caddr_t)&bswlist, PSWP+1);
        }
        bp = bswlist.av_forw;
        bswlist.av_forw = bp->av_forw;
-       (void) spl0();
+       splx(s);
 
        bp->b_flags = B_BUSY | B_PHYS | rdflg | flag;
        if ((bp->b_flags & (B_DIRTY|B_PGIN)) == 0)
 
        bp->b_flags = B_BUSY | B_PHYS | rdflg | flag;
        if ((bp->b_flags & (B_DIRTY|B_PGIN)) == 0)
@@ -612,10 +615,10 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
                                panic("big push");
                        return;
                }
                                panic("big push");
                        return;
                }
-               (void) spl6();
+               s = spl6();
                while((bp->b_flags&B_DONE)==0)
                        sleep((caddr_t)bp, PSWP);
                while((bp->b_flags&B_DONE)==0)
                        sleep((caddr_t)bp, PSWP);
-               (void) spl0();
+               splx(s);
                bp->b_un.b_addr += c;
                bp->b_flags &= ~B_DONE;
                if (bp->b_flags & B_ERROR) {
                bp->b_un.b_addr += c;
                bp->b_flags &= ~B_DONE;
                if (bp->b_flags & B_ERROR) {
@@ -626,7 +629,7 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
                nbytes -= c;
                dblkno += btoc(c);
        }
                nbytes -= c;
                dblkno += btoc(c);
        }
-       (void) spl6();
+       s = spl6();
        bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_PAGET|B_UAREA|B_DIRTY);
        bp->av_forw = bswlist.av_forw;
        bswlist.av_forw = bp;
        bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_PAGET|B_UAREA|B_DIRTY);
        bp->av_forw = bswlist.av_forw;
        bswlist.av_forw = bp;
@@ -635,7 +638,7 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
                wakeup((caddr_t)&bswlist);
                wakeup((caddr_t)&proc[2]);
        }
                wakeup((caddr_t)&bswlist);
                wakeup((caddr_t)&proc[2]);
        }
-       (void) spl0();
+       splx(s);
 }
 
 /*
 }
 
 /*
@@ -676,9 +679,10 @@ dev_t dev;
 {
        register struct buf *bp;
        register struct buf *flist;
 {
        register struct buf *bp;
        register struct buf *flist;
+       int s;
 
 loop:
 
 loop:
-       (void) spl6();
+       s = spl6();
        for (flist = bfreelist; flist < &bfreelist[BQUEUES]; flist++)
        for (bp = flist->av_forw; bp != flist; bp = bp->av_forw) {
                if (bp->b_flags&B_DELWRI && (dev == NODEV||dev==bp->b_dev)) {
        for (flist = bfreelist; flist < &bfreelist[BQUEUES]; flist++)
        for (bp = flist->av_forw; bp != flist; bp = bp->av_forw) {
                if (bp->b_flags&B_DELWRI && (dev == NODEV||dev==bp->b_dev)) {
@@ -688,7 +692,7 @@ loop:
                        goto loop;
                }
        }
                        goto loop;
                }
        }
-       (void) spl0();
+       splx(s);
 }
 
 /*
 }
 
 /*
@@ -712,12 +716,13 @@ unsigned (*mincnt)();
 {
        register int c;
        char *a;
 {
        register int c;
        char *a;
+       int s;
 
        if (useracc(u.u_base,u.u_count,rw==B_READ?B_WRITE:B_READ) == NULL) {
                u.u_error = EFAULT;
                return;
        }
 
        if (useracc(u.u_base,u.u_count,rw==B_READ?B_WRITE:B_READ) == NULL) {
                u.u_error = EFAULT;
                return;
        }
-       (void) spl6();
+       s = spl6();
        while (bp->b_flags&B_BUSY) {
                bp->b_flags |= B_WANTED;
                sleep((caddr_t)bp, PRIBIO+1);
        while (bp->b_flags&B_BUSY) {
                bp->b_flags |= B_WANTED;
                sleep((caddr_t)bp, PRIBIO+1);
@@ -742,7 +747,7 @@ unsigned (*mincnt)();
                u.u_procp->p_flag &= ~SPHYSIO;
                if (bp->b_flags&B_WANTED)
                        wakeup((caddr_t)bp);
                u.u_procp->p_flag &= ~SPHYSIO;
                if (bp->b_flags&B_WANTED)
                        wakeup((caddr_t)bp);
-               (void) spl0();
+               splx(s);
                bp->b_un.b_addr += c;
                u.u_count -= c;
                u.u_offset += c;
                bp->b_un.b_addr += c;
                u.u_count -= c;
                u.u_offset += c;
index 9214351..b1a251b 100644 (file)
@@ -1,4 +1,4 @@
-/*     vfs_cluster.c   4.24    82/01/17        */
+/*     vfs_cluster.c   4.25    82/01/17        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -419,9 +419,10 @@ struct buf *
 geteblk()
 {
        register struct buf *bp, *dp;
 geteblk()
 {
        register struct buf *bp, *dp;
+       int s;
 
 loop:
 
 loop:
-       (void) spl6();
+       s = spl6();
        for (dp = &bfreelist[BQUEUES-1]; dp > bfreelist; dp--)
                if (dp->av_forw != dp)
                        break;
        for (dp = &bfreelist[BQUEUES-1]; dp > bfreelist; dp--)
                if (dp->av_forw != dp)
                        break;
@@ -430,7 +431,7 @@ loop:
                sleep((caddr_t)dp, PRIBIO+1);
                goto loop;
        }
                sleep((caddr_t)dp, PRIBIO+1);
                goto loop;
        }
-       (void) spl0();
+       splx(s);
        bp = dp->av_forw;
        notavail(bp);
        if (bp->b_flags & B_DELWRI) {
        bp = dp->av_forw;
        notavail(bp);
        if (bp->b_flags & B_DELWRI) {
@@ -459,11 +460,12 @@ loop:
 iowait(bp)
 register struct buf *bp;
 {
 iowait(bp)
 register struct buf *bp;
 {
+       int s;
 
 
-       (void) spl6();
+       s = spl6();
        while ((bp->b_flags&B_DONE)==0)
                sleep((caddr_t)bp, PRIBIO);
        while ((bp->b_flags&B_DONE)==0)
                sleep((caddr_t)bp, PRIBIO);
-       (void) spl0();
+       splx(s);
        geterror(bp);
 }
 
        geterror(bp);
 }
 
@@ -565,15 +567,16 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
        register int c;
        int p2dp;
        register struct pte *dpte, *vpte;
        register int c;
        int p2dp;
        register struct pte *dpte, *vpte;
+       int s;
 
 
-       (void) spl6();
+       s = spl6();
        while (bswlist.av_forw == NULL) {
                bswlist.b_flags |= B_WANTED;
                sleep((caddr_t)&bswlist, PSWP+1);
        }
        bp = bswlist.av_forw;
        bswlist.av_forw = bp->av_forw;
        while (bswlist.av_forw == NULL) {
                bswlist.b_flags |= B_WANTED;
                sleep((caddr_t)&bswlist, PSWP+1);
        }
        bp = bswlist.av_forw;
        bswlist.av_forw = bp->av_forw;
-       (void) spl0();
+       splx(s);
 
        bp->b_flags = B_BUSY | B_PHYS | rdflg | flag;
        if ((bp->b_flags & (B_DIRTY|B_PGIN)) == 0)
 
        bp->b_flags = B_BUSY | B_PHYS | rdflg | flag;
        if ((bp->b_flags & (B_DIRTY|B_PGIN)) == 0)
@@ -612,10 +615,10 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
                                panic("big push");
                        return;
                }
                                panic("big push");
                        return;
                }
-               (void) spl6();
+               s = spl6();
                while((bp->b_flags&B_DONE)==0)
                        sleep((caddr_t)bp, PSWP);
                while((bp->b_flags&B_DONE)==0)
                        sleep((caddr_t)bp, PSWP);
-               (void) spl0();
+               splx(s);
                bp->b_un.b_addr += c;
                bp->b_flags &= ~B_DONE;
                if (bp->b_flags & B_ERROR) {
                bp->b_un.b_addr += c;
                bp->b_flags &= ~B_DONE;
                if (bp->b_flags & B_ERROR) {
@@ -626,7 +629,7 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
                nbytes -= c;
                dblkno += btoc(c);
        }
                nbytes -= c;
                dblkno += btoc(c);
        }
-       (void) spl6();
+       s = spl6();
        bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_PAGET|B_UAREA|B_DIRTY);
        bp->av_forw = bswlist.av_forw;
        bswlist.av_forw = bp;
        bp->b_flags &= ~(B_BUSY|B_WANTED|B_PHYS|B_PAGET|B_UAREA|B_DIRTY);
        bp->av_forw = bswlist.av_forw;
        bswlist.av_forw = bp;
@@ -635,7 +638,7 @@ swap(p, dblkno, addr, nbytes, rdflg, flag, dev, pfcent)
                wakeup((caddr_t)&bswlist);
                wakeup((caddr_t)&proc[2]);
        }
                wakeup((caddr_t)&bswlist);
                wakeup((caddr_t)&proc[2]);
        }
-       (void) spl0();
+       splx(s);
 }
 
 /*
 }
 
 /*
@@ -676,9 +679,10 @@ dev_t dev;
 {
        register struct buf *bp;
        register struct buf *flist;
 {
        register struct buf *bp;
        register struct buf *flist;
+       int s;
 
 loop:
 
 loop:
-       (void) spl6();
+       s = spl6();
        for (flist = bfreelist; flist < &bfreelist[BQUEUES]; flist++)
        for (bp = flist->av_forw; bp != flist; bp = bp->av_forw) {
                if (bp->b_flags&B_DELWRI && (dev == NODEV||dev==bp->b_dev)) {
        for (flist = bfreelist; flist < &bfreelist[BQUEUES]; flist++)
        for (bp = flist->av_forw; bp != flist; bp = bp->av_forw) {
                if (bp->b_flags&B_DELWRI && (dev == NODEV||dev==bp->b_dev)) {
@@ -688,7 +692,7 @@ loop:
                        goto loop;
                }
        }
                        goto loop;
                }
        }
-       (void) spl0();
+       splx(s);
 }
 
 /*
 }
 
 /*
@@ -712,12 +716,13 @@ unsigned (*mincnt)();
 {
        register int c;
        char *a;
 {
        register int c;
        char *a;
+       int s;
 
        if (useracc(u.u_base,u.u_count,rw==B_READ?B_WRITE:B_READ) == NULL) {
                u.u_error = EFAULT;
                return;
        }
 
        if (useracc(u.u_base,u.u_count,rw==B_READ?B_WRITE:B_READ) == NULL) {
                u.u_error = EFAULT;
                return;
        }
-       (void) spl6();
+       s = spl6();
        while (bp->b_flags&B_BUSY) {
                bp->b_flags |= B_WANTED;
                sleep((caddr_t)bp, PRIBIO+1);
        while (bp->b_flags&B_BUSY) {
                bp->b_flags |= B_WANTED;
                sleep((caddr_t)bp, PRIBIO+1);
@@ -742,7 +747,7 @@ unsigned (*mincnt)();
                u.u_procp->p_flag &= ~SPHYSIO;
                if (bp->b_flags&B_WANTED)
                        wakeup((caddr_t)bp);
                u.u_procp->p_flag &= ~SPHYSIO;
                if (bp->b_flags&B_WANTED)
                        wakeup((caddr_t)bp);
-               (void) spl0();
+               splx(s);
                bp->b_un.b_addr += c;
                u.u_count -= c;
                u.u_offset += c;
                bp->b_un.b_addr += c;
                u.u_count -= c;
                u.u_offset += c;
index 34fc1c4..4c54ca3 100644 (file)
@@ -1,4 +1,4 @@
-/*     hp.c    4.42    81/11/18        */
+/*     hp.c    4.43    82/01/17        */
 
 #ifdef HPDEBUG
 int    hpdebug;
 
 #ifdef HPDEBUG
 int    hpdebug;
@@ -172,6 +172,7 @@ hpstrategy(bp)
        register int unit;
        long sz, bn;
        int xunit = minor(bp->b_dev) & 07;
        register int unit;
        long sz, bn;
        int xunit = minor(bp->b_dev) & 07;
+       int s;
 
        sz = bp->b_bcount;
        sz = (sz+511) >> 9;
 
        sz = bp->b_bcount;
        sz = (sz+511) >> 9;
@@ -186,11 +187,11 @@ hpstrategy(bp)
            (bn = dkblock(bp))+sz > st->sizes[xunit].nblocks)
                goto bad;
        bp->b_cylin = bn/st->nspc + st->sizes[xunit].cyloff;
            (bn = dkblock(bp))+sz > st->sizes[xunit].nblocks)
                goto bad;
        bp->b_cylin = bn/st->nspc + st->sizes[xunit].cyloff;
-       (void) spl5();
+       s = spl5();
        disksort(&mi->mi_tab, bp);
        if (mi->mi_tab.b_active == 0)
                mbustart(mi);
        disksort(&mi->mi_tab, bp);
        if (mi->mi_tab.b_active == 0)
                mbustart(mi);
-       (void) spl0();
+       splx(s);
        return;
 
 bad:
        return;
 
 bad:
index 6d99aab..8e7f221 100644 (file)
@@ -1,4 +1,4 @@
-/*     rk.c    4.37    81/11/18        */
+/*     rk.c    4.38    82/01/17        */
 
 #include "rk.h"
 #if NHK > 0
 
 #include "rk.h"
 #if NHK > 0
@@ -174,6 +174,7 @@ rkstrategy(bp)
        register struct buf *dp;
        int xunit = minor(bp->b_dev) & 07;
        long bn, sz;
        register struct buf *dp;
        int xunit = minor(bp->b_dev) & 07;
        long bn, sz;
+       int s;
 
        sz = (bp->b_bcount+511) >> 9;
        unit = dkunit(bp);
 
        sz = (bp->b_bcount+511) >> 9;
        unit = dkunit(bp);
@@ -187,7 +188,7 @@ rkstrategy(bp)
            (bn = dkblock(bp))+sz > st->sizes[xunit].nblocks)
                goto bad;
        bp->b_cylin = bn/st->nspc + st->sizes[xunit].cyloff;
            (bn = dkblock(bp))+sz > st->sizes[xunit].nblocks)
                goto bad;
        bp->b_cylin = bn/st->nspc + st->sizes[xunit].cyloff;
-       (void) spl5();
+       s = spl5();
        dp = &rkutab[ui->ui_unit];
        disksort(dp, bp);
        if (dp->b_active == 0) {
        dp = &rkutab[ui->ui_unit];
        disksort(dp, bp);
        if (dp->b_active == 0) {
@@ -196,7 +197,7 @@ rkstrategy(bp)
                if (bp->b_actf && bp->b_active == 0)
                        (void) rkstart(ui->ui_mi);
        }
                if (bp->b_actf && bp->b_active == 0)
                        (void) rkstart(ui->ui_mi);
        }
-       (void) spl0();
+       splx(s);
        return;
 
 bad:
        return;
 
 bad:
index dd52e05..9c696cf 100644 (file)
@@ -1,4 +1,4 @@
-/*     uda.c   4.1     81/11/04        */
+/*     uda.c   4.2     82/01/17        */
 
 #include "ra.h"
 #if NUDA > 0
 
 #include "ra.h"
 #if NUDA > 0
@@ -154,6 +154,7 @@ udopen(dev, flag)
        register int unit;
        register struct uba_device *ui;
        register struct uda_softc *sc;
        register int unit;
        register struct uba_device *ui;
        register struct uda_softc *sc;
+       int s;
 
        unit = minor(dev) >> 3;
        if (unit >= NRA || (ui = uddinfo[unit]) == 0 || ui->ui_alive == 0) {
 
        unit = minor(dev) >> 3;
        if (unit >= NRA || (ui = uddinfo[unit]) == 0 || ui->ui_alive == 0) {
@@ -161,7 +162,7 @@ udopen(dev, flag)
                return;
        }
        sc = &uda_softc[ui->ui_ctlr];
                return;
        }
        sc = &uda_softc[ui->ui_ctlr];
-       (void) spl5();
+       s = spl5();
        if (sc->sc_state != S_RUN) {
                if (sc->sc_state == S_IDLE)
                        udinit(ui->ui_ctlr);
        if (sc->sc_state != S_RUN) {
                if (sc->sc_state == S_IDLE)
                        udinit(ui->ui_ctlr);
@@ -171,7 +172,7 @@ udopen(dev, flag)
                        return;
                }
        }
                        return;
                }
        }
-       (void) spl0();
+       splx(s);
        /* SHOULD PROBABLY FORCE AN ONLINE ATTEMPT
           TO SEE IF DISK IS REALLY THERE */
 }
        /* SHOULD PROBABLY FORCE AN ONLINE ATTEMPT
           TO SEE IF DISK IS REALLY THERE */
 }
@@ -229,6 +230,7 @@ udstrategy(bp)
        register int unit;
        int xunit = minor(bp->b_dev) & 07;
        daddr_t sz, maxsz;
        register int unit;
        int xunit = minor(bp->b_dev) & 07;
        daddr_t sz, maxsz;
+       int s;
 
        sz = (bp->b_bcount+511) >> 9;
        unit = dkunit(bp);
 
        sz = (bp->b_bcount+511) >> 9;
        unit = dkunit(bp);
@@ -243,7 +245,7 @@ udstrategy(bp)
        if (bp->b_blkno < 0 || bp->b_blkno+sz > maxsz ||
            ra_sizes[xunit].blkoff >= radsize[unit])
                goto bad;
        if (bp->b_blkno < 0 || bp->b_blkno+sz > maxsz ||
            ra_sizes[xunit].blkoff >= radsize[unit])
                goto bad;
-       (void) spl5();
+       s = spl5();
        /*
         * Link the buffer onto the drive queue
         */
        /*
         * Link the buffer onto the drive queue
         */
@@ -278,7 +280,7 @@ udstrategy(bp)
 #endif
                (void) udstart(um);
        }
 #endif
                (void) udstart(um);
        }
-       (void) spl0();
+       splx(s);
        return;
 
 bad:
        return;
 
 bad:
index 8f750b9..7cc423d 100644 (file)
@@ -1,4 +1,4 @@
-/*     up.c    4.40    81/11/18        */
+/*     up.c    4.41    82/01/17        */
 
 #include "up.h"
 #if NSC > 0
 
 #include "up.h"
 #if NSC > 0
@@ -188,6 +188,7 @@ upstrategy(bp)
        register struct buf *dp;
        int xunit = minor(bp->b_dev) & 07;
        long bn, sz;
        register struct buf *dp;
        int xunit = minor(bp->b_dev) & 07;
        long bn, sz;
+       int s;
 
        sz = (bp->b_bcount+511) >> 9;
        unit = dkunit(bp);
 
        sz = (bp->b_bcount+511) >> 9;
        unit = dkunit(bp);
@@ -201,7 +202,7 @@ upstrategy(bp)
            (bn = dkblock(bp))+sz > st->sizes[xunit].nblocks)
                goto bad;
        bp->b_cylin = bn/st->nspc + st->sizes[xunit].cyloff;
            (bn = dkblock(bp))+sz > st->sizes[xunit].nblocks)
                goto bad;
        bp->b_cylin = bn/st->nspc + st->sizes[xunit].cyloff;
-       (void) spl5();
+       s = spl5();
        dp = &uputab[ui->ui_unit];
        disksort(dp, bp);
        if (dp->b_active == 0) {
        dp = &uputab[ui->ui_unit];
        disksort(dp, bp);
        if (dp->b_active == 0) {
@@ -210,7 +211,7 @@ upstrategy(bp)
                if (bp->b_actf && bp->b_active == 0)
                        (void) upstart(ui->ui_mi);
        }
                if (bp->b_actf && bp->b_active == 0)
                        (void) upstart(ui->ui_mi);
        }
-       (void) spl0();
+       splx(s);
        return;
 
 bad:
        return;
 
 bad: