Change to includes. No more ../h
[unix-history] / usr / src / sys / vax / uba / rk.c
index 7b923e8..627db02 100644 (file)
@@ -1,6 +1,4 @@
-#define        RKDEBUG
-#define RKBDEBUG
-/*     rk.c    4.43    82/08/13        */
+/*     rk.c    6.3     84/08/29        */
 
 #include "rk.h"
 #if NHK > 0
 
 #include "rk.h"
 #if NHK > 0
@@ -20,24 +18,26 @@ int rkbdebug;
  * TODO:
  *     Learn why we lose an interrupt sometime when spinning drives down
  */
  * TODO:
  *     Learn why we lose an interrupt sometime when spinning drives down
  */
-#include "../h/param.h"
-#include "../h/systm.h"
-#include "../h/buf.h"
-#include "../h/conf.h"
-#include "../h/dir.h"
-#include "../h/user.h"
-#include "../h/pte.h"
-#include "../h/map.h"
-#include "../h/vm.h"
-#include "../h/ubareg.h"
-#include "../h/ubavar.h"
-#include "../h/dk.h"
-#include "../h/cpu.h"
-#include "../h/cmap.h"
-#include "../h/dkbad.h"
-#include "../h/uio.h"
-
-#include "../h/rkreg.h"
+#include "../machine/pte.h"
+
+#include "param.h"
+#include "systm.h"
+#include "buf.h"
+#include "conf.h"
+#include "dir.h"
+#include "user.h"
+#include "map.h"
+#include "vm.h"
+#include "dk.h"
+#include "cmap.h"
+#include "dkbad.h"
+#include "uio.h"
+#include "kernel.h"
+
+#include "../vax/cpu.h"
+#include "ubareg.h"
+#include "ubavar.h"
+#include "rkreg.h"
 
 struct rk_softc {
        int     sc_softas;
 
 struct rk_softc {
        int     sc_softas;
@@ -83,10 +83,8 @@ struct       uba_driver hkdriver =
  { rkprobe, rkslave, rkattach, rkdgo, rkstd, "rk", rkdinfo, "hk", rkminfo, 1 };
 struct buf rkutab[NRK];
 short  rkcyl[NRK];
  { rkprobe, rkslave, rkattach, rkdgo, rkstd, "rk", rkdinfo, "hk", rkminfo, 1 };
 struct buf rkutab[NRK];
 short  rkcyl[NRK];
-#ifndef NOBADSECT
 struct dkbad rkbad[NRK];
 struct buf brkbuf[NRK];
 struct dkbad rkbad[NRK];
 struct buf brkbuf[NRK];
-#endif
 
 struct rkst {
        short   nsect;
 
 struct rkst {
        short   nsect;
@@ -168,6 +166,17 @@ rkattach(ui)
        ui->ui_flags = 0;
 }
  
        ui->ui_flags = 0;
 }
  
+rkopen(dev)
+       dev_t dev;
+{
+       register int unit = minor(dev) >> 3;
+       register struct uba_device *ui;
+
+       if (unit >= NRK || (ui = rkdinfo[unit]) == 0 || ui->ui_alive == 0)
+               return (ENXIO);
+       return (0);
+}
+
 rkstrategy(bp)
        register struct buf *bp;
 {
 rkstrategy(bp)
        register struct buf *bp;
 {
@@ -234,14 +243,11 @@ rkustart(ui)
        rkwait(rkaddr);
        if ((rkaddr->rkds & RKDS_VV) == 0 || ui->ui_flags == 0) {
                /* SHOULD WARN SYSTEM THAT THIS HAPPENED */
        rkwait(rkaddr);
        if ((rkaddr->rkds & RKDS_VV) == 0 || ui->ui_flags == 0) {
                /* SHOULD WARN SYSTEM THAT THIS HAPPENED */
-#ifndef NOBADSECT
                struct rkst *st = &rkst[ui->ui_type];
                struct buf *bbp = &brkbuf[ui->ui_unit];
                struct rkst *st = &rkst[ui->ui_type];
                struct buf *bbp = &brkbuf[ui->ui_unit];
-#endif
 
                rkaddr->rkcs1 = rktypes[ui->ui_type]|RK_PACK|RK_GO;
                ui->ui_flags = 1;
 
                rkaddr->rkcs1 = rktypes[ui->ui_type]|RK_PACK|RK_GO;
                ui->ui_flags = 1;
-#ifndef NOBADSECT
                bbp->b_flags = B_READ|B_BUSY;
                bbp->b_dev = bp->b_dev;
                bbp->b_bcount = 512;
                bbp->b_flags = B_READ|B_BUSY;
                bbp->b_dev = bp->b_dev;
                bbp->b_bcount = 512;
@@ -251,7 +257,6 @@ rkustart(ui)
                dp->b_actf = bbp;
                bbp->av_forw = bp;
                bp = bbp;
                dp->b_actf = bbp;
                bbp->av_forw = bp;
                bp = bbp;
-#endif
                rkwait(rkaddr);
        }
        if (dp->b_active)
                rkwait(rkaddr);
        }
        if (dp->b_active)
@@ -374,7 +379,6 @@ rkintr(rk11)
        int unit;
        struct rk_softc *sc = &rk_softc[um->um_ctlr];
        int as = (rkaddr->rkatt >> 8) | sc->sc_softas;
        int unit;
        struct rk_softc *sc = &rk_softc[um->um_ctlr];
        int as = (rkaddr->rkatt >> 8) | sc->sc_softas;
-       int needie = 1;
 
        sc->sc_wticks = 0;
        sc->sc_softas = 0;
 
        sc->sc_wticks = 0;
        sc->sc_softas = 0;
@@ -384,11 +388,9 @@ rkintr(rk11)
                bp = dp->b_actf;
                ui = rkdinfo[dkunit(bp)];
                dk_busy &= ~(1 << ui->ui_dk);
                bp = dp->b_actf;
                ui = rkdinfo[dkunit(bp)];
                dk_busy &= ~(1 << ui->ui_dk);
-#ifndef NOBADSECT
                if (bp->b_flags&B_BAD)
                        if (rkecc(ui, CONT))
                                return;
                if (bp->b_flags&B_BAD)
                        if (rkecc(ui, CONT))
                                return;
-#endif
                if (rkaddr->rkcs1 & RK_CERR) {
                        int recal;
                        u_short ds = rkaddr->rkds;
                if (rkaddr->rkcs1 & RK_CERR) {
                        int recal;
                        u_short ds = rkaddr->rkds;
@@ -414,11 +416,9 @@ hard:
                                bp->b_flags |= B_ERROR;
                                sc->sc_recal = 0;
                        } else if (er & RKER_BSE) {
                                bp->b_flags |= B_ERROR;
                                sc->sc_recal = 0;
                        } else if (er & RKER_BSE) {
-#ifndef NOBADSECT
                                if (rkecc(ui, BSE))
                                        return;
                                else
                                if (rkecc(ui, BSE))
                                        return;
                                else
-#endif
                                        goto hard;
                        } else {
                                if ((er & (RKER_DCK|RKER_ECH)) == RKER_DCK) {
                                        goto hard;
                        } else {
                                if ((er & (RKER_DCK|RKER_ECH)) == RKER_DCK) {
@@ -502,7 +502,7 @@ retry:
                }
        if (um->um_tab.b_actf && um->um_tab.b_active == 0)
                rkstart(um);
                }
        if (um->um_tab.b_actf && um->um_tab.b_active == 0)
                rkstart(um);
-       if (((needie = rkaddr->rkcs1) & RK_IE) == 0)
+       if (((rkaddr->rkcs1) & RK_IE) == 0)
                rkaddr->rkcs1 = RK_IE;
 }
 
                rkaddr->rkcs1 = RK_IE;
 }
 
@@ -521,20 +521,19 @@ rkread(dev, uio)
        register int unit = minor(dev) >> 3;
 
        if (unit >= NRK)
        register int unit = minor(dev) >> 3;
 
        if (unit >= NRK)
-               u.u_error = ENXIO;
-       else
-               physio(rkstrategy, &rrkbuf[unit], dev, B_READ, minphys, uio);
+               return (ENXIO);
+       return (physio(rkstrategy, &rrkbuf[unit], dev, B_READ, minphys, uio));
 }
 
 }
 
-rkwrite(dev)
+rkwrite(dev, uio)
        dev_t dev;
        dev_t dev;
+       struct uio *uio;
 {
        register int unit = minor(dev) >> 3;
 
        if (unit >= NRK)
 {
        register int unit = minor(dev) >> 3;
 
        if (unit >= NRK)
-               u.u_error = ENXIO;
-       else
-               physio(rkstrategy, &rrkbuf[unit], dev, B_WRITE, minphys, 0);
+               return (ENXIO);
+       return (physio(rkstrategy, &rrkbuf[unit], dev, B_WRITE, minphys, uio));
 }
 
 rkecc(ui, flag)
 }
 
 rkecc(ui, flag)
@@ -549,11 +548,9 @@ rkecc(ui, flag)
        int reg, npf, o, cmd, ubaddr;
        int bn, cn, tn, sn;
 
        int reg, npf, o, cmd, ubaddr;
        int bn, cn, tn, sn;
 
-#ifndef NOBADSECT
        if (flag == CONT)
                npf = bp->b_error;
        else
        if (flag == CONT)
                npf = bp->b_error;
        else
-#endif
                npf = btop((rk->rkwc * sizeof(short)) + bp->b_bcount);
        reg = btop(um->um_ubinfo&0x3ffff) + npf;
        o = (int)bp->b_un.b_addr & PGOFSET;
                npf = btop((rk->rkwc * sizeof(short)) + bp->b_bcount);
        reg = btop(um->um_ubinfo&0x3ffff) + npf;
        o = (int)bp->b_un.b_addr & PGOFSET;
@@ -598,7 +595,6 @@ rkecc(ui, flag)
                break;
                }
 
                break;
                }
 
-#ifndef NOBADSECT
        case BSE:
 #ifdef RKBDEBUG
                if (rkbdebug)
        case BSE:
 #ifdef RKBDEBUG
                if (rkbdebug)
@@ -627,12 +623,9 @@ rkecc(ui, flag)
 #endif
                bp->b_flags &= ~B_BAD;
                rk->rkwc = -((bp->b_bcount - (int)ptob(npf)) / sizeof (short));
 #endif
                bp->b_flags &= ~B_BAD;
                rk->rkwc = -((bp->b_bcount - (int)ptob(npf)) / sizeof (short));
-               if (rk->rkwc == 0) {
-                       um->um_tab.b_active = 0;
+               if (rk->rkwc == 0)
                        return (0);
                        return (0);
-               }
                break;
                break;
-#endif
        }
        rk->rkcs1 = RK_CCLR;
        rk->rkcs2 = ui->ui_slave;
        }
        rk->rkcs1 = RK_CCLR;
        rk->rkcs2 = ui->ui_slave;
@@ -669,7 +662,7 @@ rkreset(uban)
                rk_softc[um->um_ctlr].sc_wticks = 0;
                if (um->um_ubinfo) {
                        printf("<%d>", (um->um_ubinfo>>28)&0xf);
                rk_softc[um->um_ctlr].sc_wticks = 0;
                if (um->um_ubinfo) {
                        printf("<%d>", (um->um_ubinfo>>28)&0xf);
-                       ubadone(um);
+                       um->um_ubinfo = 0;
                }
                for (unit = 0; unit < NRK; unit++) {
                        if ((ui = rkdinfo[unit]) == 0)
                }
                for (unit = 0; unit < NRK; unit++) {
                        if ((ui = rkdinfo[unit]) == 0)
@@ -781,4 +774,17 @@ rkdump(dev)
        }
        return (0);
 }
        }
        return (0);
 }
+rksize(dev)
+       dev_t dev;
+{
+       int unit = minor(dev) >> 3;
+       struct uba_device *ui;
+       struct rkst *st;
+
+       if (unit >= NRK || (ui = rkdinfo[unit]) == 0 || ui->ui_alive == 0)
+               return (-1);
+       st = &rkst[ui->ui_type];
+       return (st->sizes[minor(dev) & 07].nblocks);
+}
 #endif
 #endif