open/ioctl routine return errors; hpopen!!!
authorBill Joy <root@ucbvax.Berkeley.EDU>
Mon, 18 Oct 1982 03:55:00 +0000 (19:55 -0800)
committerBill Joy <root@ucbvax.Berkeley.EDU>
Mon, 18 Oct 1982 03:55:00 +0000 (19:55 -0800)
SCCS-vsn: sys/vax/mba/hp.c 4.56
SCCS-vsn: sys/vax/mba/ht.c 4.30
SCCS-vsn: sys/vax/mba/mt.c 4.11

usr/src/sys/vax/mba/hp.c
usr/src/sys/vax/mba/ht.c
usr/src/sys/vax/mba/mt.c

index ceecab5..4d08e34 100644 (file)
@@ -1,4 +1,4 @@
-/*     hp.c    4.55    82/10/10        */
+/*     hp.c    4.56    82/10/17        */
 
 #ifdef HPDEBUG
 int    hpdebug;
 
 #ifdef HPDEBUG
 int    hpdebug;
@@ -340,6 +340,17 @@ hpattach(mi, slave)
        }
 }
 
        }
 }
 
+hpopen(dev)
+       dev_t dev;
+{
+       register int unit = minor(dev) >> 3;
+       register struct mba_device *mi;
+
+       if (unit >= NHP || (mi = hpinfo[unit]) == 0 || mi->mi_alive == 0)
+               return (ENXIO);
+       return (0);
+}
+
 hpstrategy(bp)
        register struct buf *bp;
 {
 hpstrategy(bp)
        register struct buf *bp;
 {
@@ -658,10 +669,10 @@ hpioctl(dev, cmd, data, flag)
 
        case DKIOCHDR:  /* do header read/write */
                hphdr[minor(dev)>>3] = 1;
 
        case DKIOCHDR:  /* do header read/write */
                hphdr[minor(dev)>>3] = 1;
-               return;
+               return (0);
 
        default:
 
        default:
-               u.u_error = ENXIO;
+               return (ENXIO);
        }
 }
 
        }
 }
 
index 0e09ee7..d0f3f67 100644 (file)
@@ -1,4 +1,4 @@
-/*     ht.c    4.29    82/10/10        */
+/*     ht.c    4.30    82/10/17        */
 
 #include "tu.h"
 #if NHT > 0
 
 #include "tu.h"
 #if NHT > 0
@@ -112,10 +112,8 @@ htopen(dev, flag)
 
        tuunit = TUUNIT(dev);
        if (tuunit >= NTU || (sc = &tu_softc[tuunit])->sc_openf ||
 
        tuunit = TUUNIT(dev);
        if (tuunit >= NTU || (sc = &tu_softc[tuunit])->sc_openf ||
-           (mi = htinfo[HTUNIT(dev)]) == 0 || mi->mi_alive == 0) {
-               u.u_error = ENXIO;
-               return;
-       }
+           (mi = htinfo[HTUNIT(dev)]) == 0 || mi->mi_alive == 0)
+               return (ENXIO);
        olddens = sc->sc_dens;
        dens = sc->sc_dens =
            ((minor(dev)&H_1600BPI)?HTTC_1600BPI:HTTC_800BPI)|
        olddens = sc->sc_dens;
        dens = sc->sc_dens =
            ((minor(dev)&H_1600BPI)?HTTC_1600BPI:HTTC_800BPI)|
@@ -124,25 +122,23 @@ htopen(dev, flag)
        sc->sc_dens = olddens;
        if ((sc->sc_dsreg & HTDS_MOL) == 0) {
                uprintf("tu%d: not online\n", tuunit);
        sc->sc_dens = olddens;
        if ((sc->sc_dsreg & HTDS_MOL) == 0) {
                uprintf("tu%d: not online\n", tuunit);
-               u.u_error = EIO;
-               return;
+               return (EIO);
        }
        if ((flag&FWRITE) && (sc->sc_dsreg&HTDS_WRL)) {
                uprintf("tu%d: no write ring\n", tuunit);
        }
        if ((flag&FWRITE) && (sc->sc_dsreg&HTDS_WRL)) {
                uprintf("tu%d: no write ring\n", tuunit);
-               u.u_error = EIO;
-               return;
+               return (EIO);
        }
        if ((sc->sc_dsreg & HTDS_BOT) == 0 && (flag&FWRITE) &&
            dens != sc->sc_dens) {
                uprintf("tu%d: can't change density in mid-tape\n", tuunit);
        }
        if ((sc->sc_dsreg & HTDS_BOT) == 0 && (flag&FWRITE) &&
            dens != sc->sc_dens) {
                uprintf("tu%d: can't change density in mid-tape\n", tuunit);
-               u.u_error = EIO;
-               return;
+               return (EIO);
        }
        sc->sc_openf = 1;
        sc->sc_blkno = (daddr_t)0;
        sc->sc_nxrec = INF;
        sc->sc_flags = 0;
        sc->sc_dens = dens;
        }
        sc->sc_openf = 1;
        sc->sc_blkno = (daddr_t)0;
        sc->sc_nxrec = INF;
        sc->sc_flags = 0;
        sc->sc_dens = dens;
+       return (0);
 }
 
 htclose(dev, flag)
 }
 
 htclose(dev, flag)
@@ -496,25 +492,20 @@ htioctl(dev, cmd, data, flag)
                        break;
 
                default:
                        break;
 
                default:
-                       u.u_error = ENXIO;
-                       return;
-               }
-               if (callcount <= 0 || fcount <= 0) {
-                       u.u_error = ENXIO;
-                       return;
+                       return (ENXIO);
                }
                }
+               if (callcount <= 0 || fcount <= 0)
+                       return (EINVAL);
                while (--callcount >= 0) {
                        htcommand(dev, htops[mtop->mt_op], fcount);
                        if ((mtop->mt_op == MTFSR || mtop->mt_op == MTBSR) &&
                while (--callcount >= 0) {
                        htcommand(dev, htops[mtop->mt_op], fcount);
                        if ((mtop->mt_op == MTFSR || mtop->mt_op == MTBSR) &&
-                           bp->b_resid) {
-                               u.u_error = EIO;
-                               break;
-                       }
+                           bp->b_resid)
+                               return (EIO);
                        if ((bp->b_flags&B_ERROR) || sc->sc_dsreg&HTDS_BOT)
                                break;
                }
                        if ((bp->b_flags&B_ERROR) || sc->sc_dsreg&HTDS_BOT)
                                break;
                }
-               geterror(bp);
-               return;
+               geterror(bp);           /* XXX */
+               return (u.u_error);     /* XXX */
 
        case MTIOCGET:
                mtget = (struct mtget *)data;
 
        case MTIOCGET:
                mtget = (struct mtget *)data;
@@ -522,11 +513,12 @@ htioctl(dev, cmd, data, flag)
                mtget->mt_erreg = sc->sc_erreg;
                mtget->mt_resid = sc->sc_resid;
                mtget->mt_type = MT_ISHT;
                mtget->mt_erreg = sc->sc_erreg;
                mtget->mt_resid = sc->sc_resid;
                mtget->mt_type = MT_ISHT;
-               return;
+               break;
 
        default:
 
        default:
-               u.u_error = ENXIO;
+               return (ENXIO);
        }
        }
+       return (0);
 }
 
 #define        DBSIZE  20
 }
 
 #define        DBSIZE  20
index d046732..8d504e4 100644 (file)
@@ -1,4 +1,4 @@
-/*     mt.c    4.10    82/10/10        */
+/*     mt.c    4.11    82/10/17        */
 
 #include "mu.h"
 #if NMT > 0
 
 #include "mu.h"
 #if NMT > 0
@@ -119,35 +119,31 @@ mtopen(dev, flag)
 
        muunit = MUUNIT(dev);
        if (muunit >= NMU || (sc = &mu_softc[muunit])->sc_openf ||
 
        muunit = MUUNIT(dev);
        if (muunit >= NMU || (sc = &mu_softc[muunit])->sc_openf ||
-           (mi = mtinfo[MTUNIT(dev)]) == 0 || mi->mi_alive == 0) {
-               u.u_error = ENXIO;
-               return;
-       }
+           (mi = mtinfo[MTUNIT(dev)]) == 0 || mi->mi_alive == 0)
+               return (ENXIO);
        olddens = sc->sc_dens;
        dens = sc->sc_dens = (minor(dev)&H_6250BPI) ? MT_GCR : 0;
        mtcommand(dev, MT_SENSE, 1);
        sc->sc_dens = olddens;
        if ((sc->sc_dsreg & MTDS_ONL) == 0) {
                uprintf("mu%d: not online\n", muunit);
        olddens = sc->sc_dens;
        dens = sc->sc_dens = (minor(dev)&H_6250BPI) ? MT_GCR : 0;
        mtcommand(dev, MT_SENSE, 1);
        sc->sc_dens = olddens;
        if ((sc->sc_dsreg & MTDS_ONL) == 0) {
                uprintf("mu%d: not online\n", muunit);
-               u.u_error = EIO;
-               return;
+               return (EIO);
        }
        if ((flag&FWRITE) && (sc->sc_dsreg&MTDS_FPT)) {
                uprintf("mu%d: no write ring\n", muunit);
        }
        if ((flag&FWRITE) && (sc->sc_dsreg&MTDS_FPT)) {
                uprintf("mu%d: no write ring\n", muunit);
-               u.u_error = EIO;
-               return;
+               return (EIO);
        }
        if ((sc->sc_dsreg & MTDS_BOT) == 0 && (flag&FWRITE) &&
            dens != sc->sc_dens) {
                uprintf("mu%d: can't change density in mid-tape\n", muunit);
        }
        if ((sc->sc_dsreg & MTDS_BOT) == 0 && (flag&FWRITE) &&
            dens != sc->sc_dens) {
                uprintf("mu%d: can't change density in mid-tape\n", muunit);
-               u.u_error = EIO;
-               return;
+               return (EIO);
        }
        sc->sc_openf = 1;
        sc->sc_blkno = (daddr_t)0;
        sc->sc_nxrec = INF;
        sc->sc_flags = 0;
        sc->sc_dens = dens;
        }
        sc->sc_openf = 1;
        sc->sc_blkno = (daddr_t)0;
        sc->sc_nxrec = INF;
        sc->sc_flags = 0;
        sc->sc_dens = dens;
+       return (0);
 }
 
 mtclose(dev, flag)
 }
 
 mtclose(dev, flag)
@@ -542,13 +538,10 @@ mtioctl(dev, cmd, data, flag)
                        break;
 
                default:
                        break;
 
                default:
-                       u.u_error = ENXIO;
-                       return;
-               }
-               if (callcount <= 0 || fcount <= 0) {
-                       u.u_error = ENXIO;
-                       return;
+                       return (ENXIO);
                }
                }
+               if (callcount <= 0 || fcount <= 0)
+                       return (EINVAL);
                op = mtops[mtop->mt_op];
                if (op == MT_WTM)
                        op |= sc->sc_dens;
                op = mtops[mtop->mt_op];
                if (op == MT_WTM)
                        op |= sc->sc_dens;
@@ -561,15 +554,13 @@ mtioctl(dev, cmd, data, flag)
                                fcount -= n;
                        } while (fcount);
                        if ((mtop->mt_op == MTFSR || mtop->mt_op == MTBSR) &&
                                fcount -= n;
                        } while (fcount);
                        if ((mtop->mt_op == MTFSR || mtop->mt_op == MTBSR) &&
-                           bp->b_resid) {
-                               u.u_error = EIO;
-                               break;
-                       }
+                           bp->b_resid)
+                               return (EIO);
                        if (bp->b_flags&B_ERROR)
                                break;
                }
                        if (bp->b_flags&B_ERROR)
                                break;
                }
-               geterror(bp);
-               return;
+               geterror(bp);           /* XXX */
+               return (u.u_error);     /* XXX */
 
        case MTIOCGET:
                mtget = (struct mtget *)data;
 
        case MTIOCGET:
                mtget = (struct mtget *)data;
@@ -578,11 +569,12 @@ mtioctl(dev, cmd, data, flag)
                mtcommand(dev, MT_SENSE, 1);    /* update drive status */
                mtget->mt_dsreg = sc->sc_dsreg;
                mtget->mt_type = MT_ISMT;
                mtcommand(dev, MT_SENSE, 1);    /* update drive status */
                mtget->mt_dsreg = sc->sc_dsreg;
                mtget->mt_type = MT_ISMT;
-               return;
+               break;
 
        default:
 
        default:
-               u.u_error = ENXIO;
+               return (ENXIO);
        }
        }
+       return (0);
 }
 
 #define        DBSIZE  20
 }
 
 #define        DBSIZE  20