l_write returns a value; pass it on
[unix-history] / usr / src / sys / vax / uba / vp.c
index 77668b3..692ddad 100644 (file)
@@ -1,4 +1,4 @@
-/*     vp.c    4.13    82/05/19        */
+/*     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();
 
@@ -93,13 +95,14 @@ vpprobe(reg)
        vpaddr->prbcr = 1;
        DELAY(10000);
        vpaddr->prcsr = 0;
        vpaddr->prbcr = 1;
        DELAY(10000);
        vpaddr->prcsr = 0;
-#if OVPR || CAD
+#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*/
@@ -169,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);
 }
 
@@ -187,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)
@@ -208,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);
 }