l_write returns a value; pass it on
[unix-history] / usr / src / sys / vax / uba / vp.c
index 8cafa49..692ddad 100644 (file)
@@ -1,4 +1,4 @@
-/*     vp.c    4.9     81/04/02        */
+/*     vp.c    4.20    82/10/10        */
 
 #include "vp.h"
 #if NVP > 0
 
 #include "vp.h"
 #if NVP > 0
 #include "../h/systm.h"
 #include "../h/map.h"
 #include "../h/pte.h"
 #include "../h/systm.h"
 #include "../h/map.h"
 #include "../h/pte.h"
-#include "../h/ubavar.h"
-#include "../h/ubareg.h"
 #include "../h/vcmd.h"
 #include "../h/vcmd.h"
+#include "../h/uio.h"
+
+#include "../vaxuba/ubavar.h"
+#include "../vaxuba/ubareg.h"
 
 unsigned minvpph();
 
 
 unsigned minvpph();
 
@@ -83,19 +85,24 @@ vpprobe(reg)
        register int br, cvec;          /* value-result */
        register struct vpdevice *vpaddr = (struct vpdevice *)(reg-010);
 
        register int br, cvec;          /* value-result */
        register struct vpdevice *vpaddr = (struct vpdevice *)(reg-010);
 
+#ifdef lint
+       br = 0; cvec = br; br = cvec;
+       vpintr(0);
+#endif
        vpaddr->prcsr = VP_IENABLE|VP_DTCINTR;
        vpaddr->pbaddr = 0;
        vpaddr->pbxaddr = 0;
        vpaddr->prbcr = 1;
        DELAY(10000);
        vpaddr->prcsr = 0;
        vpaddr->prcsr = VP_IENABLE|VP_DTCINTR;
        vpaddr->pbaddr = 0;
        vpaddr->pbxaddr = 0;
        vpaddr->prbcr = 1;
        DELAY(10000);
        vpaddr->prcsr = 0;
-#ifdef ERNIE
+#if ERNIE || CAD || UCBVAX
        /* UNTIL REWIRED, GET INTERRUPT AT 200 BUT WANT 174 */
        if (cvec == 0200) {
                printf("vp reset vec from 200 to 174\n");
                cvec = 0174;
        }
 #endif
        /* UNTIL REWIRED, GET INTERRUPT AT 200 BUT WANT 174 */
        if (cvec == 0200) {
                printf("vp reset vec from 200 to 174\n");
                cvec = 0174;
        }
 #endif
+       return (sizeof (struct vpdevice));
 }
 
 /*ARGSUSED*/
 }
 
 /*ARGSUSED*/
@@ -165,9 +172,9 @@ brkout:
        ubarelse(ui->ui_ubanum, &sc->sc_ubinfo);
        sc->sc_state &= ~VPSC_BUSY;
        sc->sc_bp = 0;
        ubarelse(ui->ui_ubanum, &sc->sc_ubinfo);
        sc->sc_state &= ~VPSC_BUSY;
        sc->sc_bp = 0;
-       iodone(bp);
        if (e)
        if (e)
-               u.u_error = EIO;
+               bp->b_flags |= B_ERROR;
+       iodone(bp);
        wakeup((caddr_t)sc);
 }
 
        wakeup((caddr_t)sc);
 }
 
@@ -183,11 +190,15 @@ minvpph(bp)
 }
 
 /*ARGSUSED*/
 }
 
 /*ARGSUSED*/
-vpwrite(dev)
+vpwrite(dev, uio)
        dev_t dev;
        dev_t dev;
+       struct uio *uio;
 {
 
 {
 
-       physio(vpstrategy, &rvpbuf[VPUNIT(dev)], dev, B_WRITE, minvpph);
+       if (VPUNIT(dev) >= NVP)
+               return (ENXIO);
+       return (physio(vpstrategy, &rvpbuf[VPUNIT(dev)], dev, B_WRITE,
+                   minvpph, uio));
 }
 
 vpwait(dev)
 }
 
 vpwait(dev)
@@ -204,7 +215,7 @@ vpwait(dev)
                        break;
                sleep((caddr_t)sc, VPPRI);
        }
                        break;
                sleep((caddr_t)sc, VPPRI);
        }
-       /* I wish i could tell whether an error indicated an npr timeout */
+       /* I WISH I COULD TELL WHETHER AN ERROR INDICATED AN NPR TIMEOUT */
        return (e & VP_ERROR);
 }
 
        return (e & VP_ERROR);
 }
 
@@ -335,4 +346,9 @@ vpreset(uban)
                vpstart(sc->sc_bp->b_dev);
        }
 }
                vpstart(sc->sc_bp->b_dev);
        }
 }
+
+vpselect()
+{
+       return (1);
+}
 #endif
 #endif