From: Bill Joy Date: Mon, 18 Oct 1982 03:52:32 +0000 (-0800) Subject: ioctl/open return errors, not u.u_error; remove ubarelses (it is X-Git-Tag: BSD-4_1c_2-Snapshot-Development~2196 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/7da157dafa8c2e22b732f1c4295e03ca741ac7a1?hp=f356c33628ee7227eb9c0f95d39af156aa6b7e14 ioctl/open return errors, not u.u_error; remove ubarelses (it is now done in uba.c); add open routines to some disk drivers SCCS-vsn: sys/vax/uba/ad.c 4.6 SCCS-vsn: sys/vax/uba/ct.c 4.11 SCCS-vsn: sys/vax/uba/dh.c 4.53 SCCS-vsn: sys/vax/uba/dmf.c 4.10 SCCS-vsn: sys/vax/uba/dn.c 4.9 SCCS-vsn: sys/vax/uba/dz.c 4.46 SCCS-vsn: sys/vax/uba/idc.c 4.7 SCCS-vsn: sys/vax/uba/lp.c 4.30 SCCS-vsn: sys/vax/uba/lpa.c 4.8 SCCS-vsn: sys/vax/uba/ps.c 4.7 SCCS-vsn: sys/vax/uba/rk.c 4.48 SCCS-vsn: sys/vax/uba/tm.c 4.56 SCCS-vsn: sys/vax/uba/ts.c 4.31 SCCS-vsn: sys/vax/uba/uba.c 4.51 SCCS-vsn: sys/vax/uba/uda.c 4.11 SCCS-vsn: sys/vax/uba/ut.c 4.20 SCCS-vsn: sys/vax/uba/vp.c 4.21 --- diff --git a/usr/src/sys/vax/uba/ad.c b/usr/src/sys/vax/uba/ad.c index 8153cf1d8b..9a0e7d1dea 100644 --- a/usr/src/sys/vax/uba/ad.c +++ b/usr/src/sys/vax/uba/ad.c @@ -1,4 +1,4 @@ -/* ad.c 4.5 82/10/10 */ +/* ad.c 4.6 82/10/17 */ #include "ad.h" #if NAD > 0 @@ -42,7 +42,7 @@ struct ad { adprobe(reg) caddr_t reg; { - register int br, cvec; + register int br, cvec; /* value-result */ register struct addevice *adaddr = (struct addevice *) reg; adaddr->ad_csr = AD_IENABLE | AD_START; @@ -51,9 +51,11 @@ adprobe(reg) return (sizeof (struct addevice)); } +/*ARGSUSED*/ adattach(ui) struct uba_device *ui; { + } adopen(dev) @@ -62,15 +64,14 @@ adopen(dev) register struct ad *adp; register struct uba_device *ui; - if(ADUNIT(dev) >= NAD || (adp = &ad[ADUNIT(dev)])->ad_open || - (ui = addinfo[ADUNIT(dev)]) == 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + if (ADUNIT(dev) >= NAD || (adp = &ad[ADUNIT(dev)])->ad_open || + (ui = addinfo[ADUNIT(dev)]) == 0 || ui->ui_alive == 0) + return (ENXIO); adp->ad_open = 1; adp->ad_icnt = 0; adp->ad_state = 0; adp->ad_uid = u.u_uid; + return (0); } adclose(dev) @@ -87,7 +88,7 @@ adioctl(dev, cmd, addr, flag) register caddr_t addr; { register struct addevice *adaddr = - (struct addevice *) addinfo[ADUNIT(dev)]->ui_addr; + (struct addevice *) addinfo[ADUNIT(dev)]->ui_addr; register struct uba_device *ui = addinfo[ADUNIT(dev)]; register struct ad *adp; register int i; @@ -105,21 +106,22 @@ adioctl(dev, cmd, addr, flag) spl6(); adaddr->ad_csr = adp->ad_chan; i = 1000; - while(i-- > 0 && (adaddr->ad_csr&037400) != adp->ad_chan) { + while (i-- > 0 && (adaddr->ad_csr&037400) != adp->ad_chan) { adp->ad_loop++; adaddr->ad_csr = adp->ad_chan; } adp->ad_state |= ADBUSY; adaddr->ad_csr |= AD_IENABLE|AD_START; - while(adp->ad_state&ADBUSY) + while (adp->ad_state&ADBUSY) sleep((caddr_t)adp, ADWAITPRI); spl0(); *(int *)data = adp->ad_softdata; break; default: - u.u_error = ENOTTY; /* Not a legal ioctl cmd. */ + return (ENOTTY); /* Not a legal ioctl cmd. */ } + return (0); } /*ARGSUSED*/ diff --git a/usr/src/sys/vax/uba/ct.c b/usr/src/sys/vax/uba/ct.c index da81b8c7b8..ac88887cdb 100644 --- a/usr/src/sys/vax/uba/ct.c +++ b/usr/src/sys/vax/uba/ct.c @@ -1,4 +1,4 @@ -/* ct.c 4.10 82/10/10 */ +/* ct.c 4.11 82/10/17 */ #include "ct.h" #if NCT > 0 @@ -75,12 +75,11 @@ ctopen(dev) register struct ctdevice *ctaddr; if (CTUNIT(dev) >= NCT || (ui = ctdinfo[CTUNIT(dev)]) == 0 || - ui->ui_alive == 0 || (sc = &ct_softc[CTUNIT(dev)])->sc_openf) { - u.u_error = ENXIO; - return; - } + ui->ui_alive == 0 || (sc = &ct_softc[CTUNIT(dev)])->sc_openf) + return (ENXIO); sc->sc_openf = 1; ctaddr->ctcsr |= IENABLE; + return (0); } ctclose(dev) diff --git a/usr/src/sys/vax/uba/dh.c b/usr/src/sys/vax/uba/dh.c index f4ae51a799..65e9e29fce 100644 --- a/usr/src/sys/vax/uba/dh.c +++ b/usr/src/sys/vax/uba/dh.c @@ -1,4 +1,4 @@ -/* dh.c 4.52 82/10/10 */ +/* dh.c 4.53 82/10/17 */ #include "dh.h" #if NDH > 0 @@ -237,15 +237,11 @@ dhopen(dev, flag) unit = minor(dev); dh = unit >> 4; - if (unit >= NDH*16 || (ui = dhinfo[dh])== 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + if (unit >= NDH*16 || (ui = dhinfo[dh])== 0 || ui->ui_alive == 0) + return (ENXIO); tp = &dh11[unit]; - if (tp->t_state&TS_XCLUDE && u.u_uid!=0) { - u.u_error = EBUSY; - return; - } + if (tp->t_state&TS_XCLUDE && u.u_uid!=0) + return (EBUSY); addr = (struct dhdevice *)ui->ui_addr; tp->t_addr = (caddr_t)addr; tp->t_oproc = dhstart; @@ -288,7 +284,7 @@ dhopen(dev, flag) * Wait for carrier, then process line discipline specific open. */ dmopen(dev); - (*linesw[tp->t_line].l_open)(dev, tp); + return ((*linesw[tp->t_line].l_open)(dev, tp)); } /* @@ -397,16 +393,20 @@ dhioctl(dev, cmd, data, flag) caddr_t data; { register struct tty *tp; - register unit = minor(dev); + register int unit = minor(dev); + int error; tp = &dh11[unit]; - cmd = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag); - if (cmd == 0) - return; - if (ttioctl(tp, cmd, data, flag)) { + error = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag); + if (error >= 0) + return (error); + error = ttioctl(tp, cmd, data, flag); + if (error >= 0) { if (cmd == TIOCSETP || cmd == TIOCSETN) dhparam(unit); - } else switch(cmd) { + return (error); + } + switch (cmd) { case TIOCSBRK: ((struct dhdevice *)(tp->t_addr))->dhbreak |= 1<<(unit&017); @@ -425,8 +425,9 @@ dhioctl(dev, cmd, data, flag) break; default: - u.u_error = ENOTTY; + return (ENOTTY); } + return (0); } /* @@ -649,7 +650,6 @@ dhreset(uban) if (dh_ubinfo[uban] == 0) return; - ubarelse(uban, &dh_ubinfo[uban]); dh_ubinfo[uban] = uballoc(uban, (caddr_t)cfree, 512+nclist*sizeof (struct cblock), 0); cbase[uban] = dh_ubinfo[uban]&0x3ffff; diff --git a/usr/src/sys/vax/uba/dmf.c b/usr/src/sys/vax/uba/dmf.c index 3cc7706f12..9280b57b85 100644 --- a/usr/src/sys/vax/uba/dmf.c +++ b/usr/src/sys/vax/uba/dmf.c @@ -1,4 +1,4 @@ -/* dmf.c 4.9 82/10/13 */ +/* dmf.c 4.10 82/10/17 */ #include "dmf.h" #if NDMF > 0 @@ -221,15 +221,11 @@ dmfopen(dev, flag) unit = minor(dev); dmf = unit >> 3; - if (unit >= NDMF*8 || (ui = dmfinfo[dmf])== 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + if (unit >= NDMF*8 || (ui = dmfinfo[dmf])== 0 || ui->ui_alive == 0) + return (ENXIO); tp = &dmf_tty[unit]; - if (tp->t_state&TS_XCLUDE && u.u_uid!=0) { - u.u_error = EBUSY; - return; - } + if (tp->t_state&TS_XCLUDE && u.u_uid!=0) + return (EBUSY); addr = (struct dmfdevice *)ui->ui_addr; tp->t_addr = (caddr_t)addr; tp->t_oproc = dmfstart; @@ -277,7 +273,7 @@ dmfopen(dev, flag) sleep((caddr_t)&tp->t_rawq, TTIPRI); } splx(s); - (*linesw[tp->t_line].l_open)(dev, tp); + return ((*linesw[tp->t_line].l_open)(dev, tp)); } /* @@ -408,15 +404,19 @@ dmfioctl(dev, cmd, data, flag) register int unit = minor(dev); register int dmf = unit >> 3; register struct device *dmfaddr; + int error; tp = &dmf_tty[unit]; - cmd = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag); - if (cmd == 0) - return; - if (ttioctl(tp, cmd, data, flag)) { + error = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag); + if (error >= 0) + return (error); + error = ttioctl(tp, cmd, data, flag); + if (error >= 0) { if (cmd == TIOCSETP || cmd == TIOCSETN) dmfparam(unit); - } else switch(cmd) { + return (error); + } + switch (cmd) { case TIOCSBRK: dmfmctl(dev, DMF_BRK, DMBIS); @@ -451,8 +451,9 @@ dmfioctl(dev, cmd, data, flag) break; default: - u.u_error = ENOTTY; + return (ENOTTY); } + return (0); } dmtodmf(bits) @@ -766,7 +767,6 @@ dmfreset(uban) #ifdef DMFDMA if (dmf_ubinfo[uban] == 0) return; - ubarelse(uban, &dmf_ubinfo[uban]); dmf_ubinfo[uban] = uballoc(uban, (caddr_t)cfree, nclist*sizeof (struct cblock), 0); cbase[uban] = dmf_ubinfo[uban]&0x3ffff; diff --git a/usr/src/sys/vax/uba/dn.c b/usr/src/sys/vax/uba/dn.c index d41a016add..21e1fa4227 100644 --- a/usr/src/sys/vax/uba/dn.c +++ b/usr/src/sys/vax/uba/dn.c @@ -1,4 +1,4 @@ -/* dn.c 4.8 82/10/10 */ +/* dn.c 4.9 82/10/17 */ #include "dn.h" #if NDN > 0 @@ -69,7 +69,9 @@ dnprobe(reg) dnattach(ui) struct uba_device *ui; -{} +{ + +} /*ARGSUSED*/ dnopen(dev, flag) @@ -81,23 +83,18 @@ dnopen(dev, flag) register short dialer; if ((unit = DNUNIT(dev)) >= NDN || (ui = dninfo[unit]) == 0 || - ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + ui->ui_alive == 0) + return (ENXIO); dialer = DNREG(dev); dp = (struct dndevice *)ui->ui_addr; - if (dp->dn_reg[dialer] & PWI) { - u.u_error = ENXIO; - return; - } + if (dp->dn_reg[dialer] & PWI) + return (ENXIO); dnreg = &(dp->dn_reg[dialer]); - if (*dnreg&(DLO|CRQ)) { - u.u_error = EBUSY; - return; - } + if (*dnreg&(DLO|CRQ)) + return (EBUSY); dp->dn_reg[0] |= MENABLE; *dnreg = IENABLE|MENABLE|CRQ; + return (0); } /*ARGSUSED*/ diff --git a/usr/src/sys/vax/uba/dz.c b/usr/src/sys/vax/uba/dz.c index 0e3c18df33..5f7ff84353 100644 --- a/usr/src/sys/vax/uba/dz.c +++ b/usr/src/sys/vax/uba/dz.c @@ -1,4 +1,4 @@ -/* dz.c 4.45 82/10/13 */ +/* dz.c 4.46 82/10/17 */ #include "dz.h" #if NDZ > 0 @@ -208,10 +208,8 @@ dzopen(dev, flag) register int unit; unit = minor(dev); - if (unit >= dz_cnt || dzpdma[unit].p_addr == 0) { - u.u_error = ENXIO; - return; - } + if (unit >= dz_cnt || dzpdma[unit].p_addr == 0) + return (ENXIO); tp = &dz_tty[unit]; tp->t_addr = (caddr_t)&dzpdma[unit]; tp->t_oproc = dzstart; @@ -222,10 +220,8 @@ dzopen(dev, flag) tp->t_flags = IFLAGS; /* tp->t_state |= TS_HUPCLS; */ dzparam(unit); - } else if (tp->t_state&TS_XCLUDE && u.u_uid != 0) { - u.u_error = EBUSY; - return; - } + } else if (tp->t_state&TS_XCLUDE && u.u_uid != 0) + return (EBUSY); (void) dzmctl(dev, DZ_ON, DMSET); (void) spl5(); while ((tp->t_state & TS_CARR_ON) == 0) { @@ -233,7 +229,7 @@ dzopen(dev, flag) sleep((caddr_t)&tp->t_rawq, TTIPRI); } (void) spl0(); - (*linesw[tp->t_line].l_open)(dev, tp); + return ((*linesw[tp->t_line].l_open)(dev, tp)); } /*ARGSUSED*/ @@ -363,15 +359,19 @@ dzioctl(dev, cmd, data, flag) register int unit = minor(dev); register int dz = unit >> 3; register struct device *dzaddr; + int error; tp = &dz_tty[unit]; - cmd = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag); - if (cmd == 0) - return; - if (ttioctl(tp, cmd, data, flag)) { + error = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag); + if (error >= 0) + return (error); + error = ttioctl(tp, cmd, data, flag); + if (error >= 0) { if (cmd == TIOCSETP || cmd == TIOCSETN) dzparam(unit); - } else switch(cmd) { + return (error); + } + switch (cmd) { case TIOCSBRK: dzaddr = ((struct pdma *)(tp->t_addr))->p_addr; @@ -414,8 +414,9 @@ dzioctl(dev, cmd, data, flag) break; default: - u.u_error = ENOTTY; + return (ENOTTY); } + return (0); } dmtodz(bits) diff --git a/usr/src/sys/vax/uba/idc.c b/usr/src/sys/vax/uba/idc.c index b9457de3e7..f12ce256b7 100644 --- a/usr/src/sys/vax/uba/idc.c +++ b/usr/src/sys/vax/uba/idc.c @@ -1,11 +1,11 @@ -/* idc.c 4.6 82/10/10 */ +/* idc.c 4.7 82/10/17 */ #include "rb.h" #if NIDC > 0 -int idcdebug = 0; -#define printd if(idcdebug)printf -int idctrb[1000]; -int *trp = idctrb; +int idcdebug = 0; +#define printd if(idcdebug)printf +int idctrb[1000]; +int *trp = idctrb; #define trace(a,b) {*trp++ = (int)a; *trp++ = (int)b; if(trp>&idctrb[998])trp=idctrb;} /* * IDC (RB730) disk driver @@ -183,6 +183,17 @@ idcattach(ui) idccyl[ui->ui_unit].dar_dar = -1; ui->ui_flags = 0; } + +idcopen(dev) + dev_t dev; +{ + register int unit = minor(dev) >> 3; + register struct uba_device *ui; + + if (unit >= NRB || (ui = idcdinfo[unit]) == 0 || ui->ui_alive == 0) + return (ENXIO); + return (0); +} idcstrategy(bp) register struct buf *bp; diff --git a/usr/src/sys/vax/uba/lp.c b/usr/src/sys/vax/uba/lp.c index 83cb280e2b..6f1959897c 100644 --- a/usr/src/sys/vax/uba/lp.c +++ b/usr/src/sys/vax/uba/lp.c @@ -1,4 +1,4 @@ -/* lp.c 4.29 82/10/10 */ +/* lp.c 4.30 82/10/17 */ #include "lp.h" #if NLP > 0 @@ -16,8 +16,6 @@ #include "../h/systm.h" #include "../h/map.h" #include "../h/pte.h" -#include "../h/ioctl.h" -#include "../h/tty.h" #include "../vaxuba/ubavar.h" @@ -111,15 +109,11 @@ lpopen(dev, flag) if ((unit = LPUNIT(dev)) >= NLP || (sc = &lp_softc[unit])->sc_state&OPEN || - (ui = lpinfo[unit]) == 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + (ui = lpinfo[unit]) == 0 || ui->ui_alive == 0) + return (ENXIO); lpaddr = (struct lpdevice *)ui->ui_addr; - if (lpaddr->lpsr&ERROR) { - u.u_error = EIO; - return; - } + if (lpaddr->lpsr&ERROR) + return (EIO); sc->sc_state |= OPEN; sc->sc_inbuf = geteblk(512); sc->sc_flags = minor(dev) & 07; @@ -130,6 +124,7 @@ lpopen(dev, flag) } (void) spl0(); lpcanon(dev, '\f'); + return (0); } /*ARGSUSED*/ diff --git a/usr/src/sys/vax/uba/lpa.c b/usr/src/sys/vax/uba/lpa.c index a402bb99c8..9b1ecb5a22 100644 --- a/usr/src/sys/vax/uba/lpa.c +++ b/usr/src/sys/vax/uba/lpa.c @@ -1,4 +1,4 @@ -/* lpa.c 4.7 82/10/10 */ +/* lpa.c 4.8 82/10/17 */ #include "lpa.h" #if NLPA > 0 @@ -199,10 +199,8 @@ lpaopen(dev, flag) TRACER("OPEN\n"); if (unit >= NLPA || sc->sc_flag & OPEN || ui == 0 || - ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + ui->ui_alive == 0) + return (ENXIO); (void) spl7(); lpaaddr->lcim = RESET; lpaaddr->lcim = 0; @@ -219,6 +217,7 @@ TRACER("OPEN\n"); sc->sc_ubufn = -1; /* THIS SHOULD EVENTUALLY SPECIFY "REAL-TIME" */ u.u_procp->p_nice = NICE; + return (0); } lpaclose(dev, flag) @@ -375,19 +374,8 @@ lpaioctl(dev, cmd, data, flag) } *iocb; TRACER("IOCTL IN\n"); - if (cmd != TIOCSETP) { -TRACER("NOT TIOCSETP\n"); - /* not valid */ - u.u_error = ENXIO; - return; - } -#ifndef NOMCODE - if ((sc->sc_flag & DMDT) == 0) { -TRACER("NO DMDT\n"); - u.u_error = ENXIO; - return; - } -#endif + if (cmd != TIOCSETP || (sc->sc_flag & DMDT) == 0) + return (ENXIO); iocb = (struct iocb *)data; p = (short *) sc->sc_buffer->b_un.b_addr; /* CLOCK START */ *p++ = CLOCK | CLOCKA; /* mode */ @@ -412,17 +400,15 @@ TRACER("CLOCK STARTED\n"); *p++ |= sc->sc_nbuf++ << 8; /* into high portion of word */ /* buffer addresses */ if (useracc(sc->sc_ubuffer.b_un.b_addr = (caddr_t) iocb->baddr, - sc->sc_ubuffer.b_bcount = sc->sc_count * sc->sc_nbuf * 2, - (i = (sc->sc_device)? B_READ : B_WRITE) ) == NULL) { + sc->sc_ubuffer.b_bcount = sc->sc_count * sc->sc_nbuf * 2, + (i = (sc->sc_device)? B_READ : B_WRITE) ) == NULL) { TRACER("USER BUFFER FAULT\n"); - u.u_error = EFAULT; - return; + return (EFAULT); } sc->sc_ubuffer.b_flags = B_PHYS | B_BUSY | i; sc->sc_ubuffer.b_proc = u.u_procp; u.u_procp->p_flag |= SPHYSIO; vslock(sc->sc_ubuffer.b_un.b_addr, sc->sc_ubuffer.b_bcount); -/* sc->sc_ubabuf = ubasetup(ui->ui_ubanum, &sc->sc_ubuffer, UBA_NEEDBDP);*/ sc->sc_ubabuf = ubasetup(ui->ui_ubanum, &sc->sc_ubuffer, 0); v = sc->sc_ubabuf; for (i = 0; i < sc->sc_nbuf; i++) { @@ -448,6 +434,7 @@ TRACER("USER BUFFER FAULT\n"); sc->sc_lbufnx = 0; sc->sc_flag |= STTY; TRACER("IOCTL OUT\n"); + return (0); } lparead(dev, uio) diff --git a/usr/src/sys/vax/uba/ps.c b/usr/src/sys/vax/uba/ps.c index b45866c99e..01b52a4b09 100644 --- a/usr/src/sys/vax/uba/ps.c +++ b/usr/src/sys/vax/uba/ps.c @@ -1,4 +1,4 @@ -/* ps.c 4.6 82/10/10 */ +/* ps.c 4.7 82/10/17 */ /* * Evans and Sutherland Picture System 2 driver @@ -117,8 +117,8 @@ psprobe(reg) psattach(ui) register struct uba_device *ui; { -} +} psopen(dev) dev_t dev; @@ -127,11 +127,9 @@ psopen(dev) register struct uba_device *ui; register int unit = PSUNIT(dev); - if(unit >= NPS || (psp = &ps[minor(dev)])->ps_open || - (ui = psdinfo[unit]) == 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + if (unit >= NPS || (psp = &ps[minor(dev)])->ps_open || + (ui = psdinfo[unit]) == 0 || ui->ui_alive == 0) + return (ENXIO); psp->ps_open = 1; psp->ps_uid = u.u_uid; psp->ps_strayintr = 0; @@ -145,6 +143,7 @@ psopen(dev) psp->ps_clock.ticked = 0; psp->ps_refresh.icnt = psp->ps_map.icnt = psp->ps_clock.icnt = 0; maptouser(ui->ui_addr); + return (0); } psclose(dev) @@ -193,53 +192,39 @@ psioctl(dev, cmd, data, flag) case PSIOAUTOREFRESH: n = fuword(waddr++); - if(n == -1) - u.u_error = EFAULT; - else if(n < 0 || n > MAXAUTOREFRESH) - u.u_error = EINVAL; - else { - for(i = 0; i < n; i++) - if((arg = fuword(waddr++)) == -1) { - u.u_error = EFAULT; - break; - } - else - psp->ps_refresh.sraddrs[i] = arg; - if(!u.u_error) { - psp->ps_refresh.state = AUTO_RF; - psp->ps_refresh.nsraddrs = n; - psp->ps_refresh.srcntr = 0; - psp->ps_refresh.mode = WAITING_MAP; - } + if (n == -1) + return (EFAULT); + if (n < 0 || n > MAXAUTOREFRESH) + return (EINVAL); + for (i = 0; i < n; i++) { + if ((arg = fuword(waddr++)) == -1) + return (EFAULT); + psp->ps_refresh.sraddrs[i] = arg; } + psp->ps_refresh.state = AUTO_RF; + psp->ps_refresh.nsraddrs = n; + psp->ps_refresh.srcntr = 0; + psp->ps_refresh.mode = WAITING_MAP; break; case PSIOAUTOMAP: n = fuword(waddr++); - if(n == -1) - u.u_error = EFAULT; - else if(n < 0 || n > MAXAUTOMAP) - u.u_error = EINVAL; - else { - for(i = 0; i < n; i++) - if((arg = fuword(waddr++)) == -1) { - u.u_error = EFAULT; - break; - } - else - psp->ps_map.maddrs[i] = arg; - if(!u.u_error) - if((arg = fuword(waddr++)) == -1) - u.u_error = EFAULT; - else - psp->ps_map.outputstart = arg; - if(!u.u_error) { - psp->ps_map.state = AUTO_MAP; - psp->ps_map.nmaddrs = n; - psp->ps_map.mcntr = 0; - psp->ps_map.mode = WAITING_START; - } + if (n == -1) + return (EFAULT); + if (n < 0 || n > MAXAUTOMAP) + return (EINVAL); + for (i = 0; i < n; i++) { + if ((arg = fuword(waddr++)) == -1) + return (EFAULT); + psp->ps_map.maddrs[i] = arg; } + if ((arg = fuword(waddr++)) == -1) + return (EFAULT); + psp->ps_map.outputstart = arg; + psp->ps_map.state = AUTO_MAP; + psp->ps_map.nmaddrs = n; + psp->ps_map.mcntr = 0; + psp->ps_map.mode = WAITING_START; break; case PSIOSINGLEREFRESH: @@ -251,21 +236,18 @@ psioctl(dev, cmd, data, flag) break; case PSIODOUBLEBUFFER: - if((arg = fuword(waddr++)) == -1) - u.u_error = EFAULT; - else { - psp->ps_dbuffer.dbaddrs[0] = arg; - if((arg = fuword(waddr++)) == -1) - u.u_error = EFAULT; - else if(arg <= 0 || arg > MAXDBSIZE) - u.u_error = EINVAL; - else { - psp->ps_dbuffer.dbsize = arg; - psp->ps_dbuffer.dbaddrs[1] = - psp->ps_dbuffer.dbaddrs[0]+arg; - psp->ps_dbuffer.state = ON_DB; - psp->ps_dbuffer.rbuffer = 0; - } + if ((arg = fuword(waddr++)) == -1) + return (EFAULT); + psp->ps_dbuffer.dbaddrs[0] = arg; + if ((arg = fuword(waddr++)) == -1) + return (EFAULT); + if (arg <= 0 || arg > MAXDBSIZE) + return (EINVAL); + psp->ps_dbuffer.dbsize = arg; + psp->ps_dbuffer.dbaddrs[1] = + psp->ps_dbuffer.dbaddrs[0]+arg; + psp->ps_dbuffer.state = ON_DB; + psp->ps_dbuffer.rbuffer = 0; } break; @@ -274,37 +256,40 @@ psioctl(dev, cmd, data, flag) break; case PSIOWAITREFRESH: - if(psp->ps_refresh.mode != RUNNING_RF) /* not running */ - return; /* dont wait */ + if (psp->ps_refresh.mode != RUNNING_RF) /* not running */ + return (0); /* dont wait */ + /* fall into ... */ case PSSIOTOPREFRESH: - if(cmd == PSSTOPREFRESH) + if (cmd == PSSTOPREFRESH) psp->ps_refresh.stop = 1; spl5(); psp->ps_refresh.waiting = 1; - while(psp->ps_refresh.waiting) + while (psp->ps_refresh.waiting) sleep(&psp->ps_refresh.waiting, PSPRI); spl0(); break; case PSIOWAITMAP: - if(psp->ps_map.mode != RUNNING_MAP) /* not running */ - return; /* dont wait */ + if (psp->ps_map.mode != RUNNING_MAP) /* not running */ + return (0); /* dont wait */ + /* fall into ... */ case PSIOSTOPMAP: - if(cmd == PSSTOPMAP) + if (cmd == PSSTOPMAP) psp->ps_map.stop = 1; spl5(); psp->ps_map.waiting = 1; - while(psp->ps_map.waiting) + while (psp->ps_map.waiting) sleep(&psp->ps_map.waiting, PSPRI); spl0(); break; default: - u.u_error = ENOTTY; /* Not a legal ioctl cmd. */ + return (ENOTTY); break; } + return (0); } #define SAVEPSADDR() {register short int i, x;x=spl6();i=psaddr->ps_addr;\ @@ -322,13 +307,13 @@ psclockintr(dev) register struct ps *psp = &ps[PSUNIT(dev)]; int savepsaddr; - if(!psp->ps_open) + if (!psp->ps_open) return; psp->ps_clock.icnt++; SAVEPSADDR(); #ifndef EXTERNAL_SYNC - if(psp->ps_refresh.state == AUTO_RF) { - if(psp->ps_refresh.mode == SYNCING_RF) { + if (psp->ps_refresh.state == AUTO_RF) { + if (psp->ps_refresh.mode == SYNCING_RF) { psrfnext(psp, psaddr); } else { psp->ps_clock.ticked++; @@ -353,7 +338,7 @@ pssystemintr(dev) short int request; register int savepsaddr, x; - if(!psp->ps_open) + if (!psp->ps_open) return; SAVEPSADDR(); PSWAIT(); @@ -366,24 +351,24 @@ pssystemintr(dev) PSWAIT(); psaddr->ps_data = request&(~(HALT_REQ|MOSTOP_REQ)); /* acknowledge */ - if(request & (MOSTOP_REQ|HALT_REQ)) { /* Map stopped */ + if (request & (MOSTOP_REQ|HALT_REQ)) { /* Map stopped */ psp->ps_map.icnt++; psmapstop(psaddr); /* kill it dead */ - if(psp->ps_map.waiting) { + if (psp->ps_map.waiting) { psp->ps_map.waiting = 0; wakeup(&psp->ps_map.waiting); - if(psp->ps_map.stop) { + if (psp->ps_map.stop) { psp->ps_map.stop = 0; goto tryrf; } } - if(psp->ps_map.state == AUTO_MAP) - if(!psmapnext(psp, psaddr)) { + if (psp->ps_map.state == AUTO_MAP) + if (!psmapnext(psp, psaddr)) { psp->ps_map.mcntr = 0; /* prepare for next round */ pssetmapbounds(psp, psaddr); - if(psp->ps_refresh.mode == WAITING_MAP) { - if(psp->ps_dbuffer.state == ON_DB) + if (psp->ps_refresh.mode == WAITING_MAP) { + if (psp->ps_dbuffer.state == ON_DB) /* fill other db */ psdbswitch(psp, psaddr); else @@ -394,22 +379,22 @@ pssystemintr(dev) } } tryrf: - if(request & RFSTOP_REQ) { /* Refresh stopped */ + if (request & RFSTOP_REQ) { /* Refresh stopped */ psp->ps_refresh.icnt++; psrfstop(psaddr, psp); - if(psp->ps_refresh.waiting) { + if (psp->ps_refresh.waiting) { psp->ps_refresh.waiting = 0; wakeup(&psp->ps_refresh.waiting); - if(psp->ps_refresh.stop) { + if (psp->ps_refresh.stop) { psp->ps_refresh.stop = 0; goto tryhit; } } - if(psp->ps_refresh.state == AUTO_RF) - if(!psrfnext(psp, psaddr)) { /* at end of refresh cycle */ - if(psp->ps_map.state == AUTO_MAP && + if (psp->ps_refresh.state == AUTO_RF) + if (!psrfnext(psp, psaddr)) { /* at end of refresh cycle */ + if (psp->ps_map.state == AUTO_MAP && psp->ps_map.mode==WAITING_RF) { - if(psp->ps_dbuffer.state == ON_DB) + if (psp->ps_dbuffer.state == ON_DB) psdbswitch(psp, psaddr); else psmapnext(psp, psaddr); @@ -418,7 +403,7 @@ tryrf: #ifdef EXTERNAL_SYNC x = spl6(); #endif - if(!psp->ps_clock.ticked || + if (!psp->ps_clock.ticked || !psrfnext(psp, psaddr)) { psp->ps_refresh.mode = SYNCING_RF; } @@ -430,10 +415,10 @@ tryrf: } } tryhit: - if(request & HIT_REQ) { /* Hit request */ + if (request & HIT_REQ) { /* Hit request */ psp->ps_hit.icnt++; } - if(request == 0) + if (request == 0) psp->ps_strayintr++; RESTORPSADDR(); } @@ -443,10 +428,10 @@ psrfnext(psp, psaddr) register struct psdevice *psaddr; { - if(psp->ps_refresh.srcntr < psp->ps_refresh.nsraddrs) + if (psp->ps_refresh.srcntr < psp->ps_refresh.nsraddrs) psrfstart(psp->ps_refresh.sraddrs[psp->ps_refresh.srcntr++], psp, psaddr); - else if(psp->ps_refresh.srcntr == psp->ps_refresh.nsraddrs + else if (psp->ps_refresh.srcntr == psp->ps_refresh.nsraddrs && psp->ps_dbuffer.state == ON_DB) { psrfstart(psp->ps_dbuffer.dbaddrs[psp->ps_dbuffer.rbuffer], psp, psaddr); @@ -500,7 +485,7 @@ psmapnext(psp, psaddr) register struct psdevice *psaddr; { - if(psp->ps_map.mcntr < psp->ps_map.nmaddrs) + if (psp->ps_map.mcntr < psp->ps_map.nmaddrs) psmapstart(psp->ps_map.maddrs[psp->ps_map.mcntr++], psp, psaddr); else return(0); @@ -516,7 +501,7 @@ pssetmapbounds(psp, psaddr) PSWAIT(); psaddr->ps_addr = MAOL; PSWAIT(); - if(psp->ps_dbuffer.state == ON_DB) { + if (psp->ps_dbuffer.state == ON_DB) { psaddr->ps_data = (start = psp->ps_dbuffer.dbaddrs[!psp->ps_dbuffer.rbuffer]) +psp->ps_dbuffer.dbsize-2; /* 2 for a refresh halt command */ PSWAIT(); @@ -590,10 +575,10 @@ psextsync(PC, PS) { register int savepsaddr; #ifdef EXTERNAL_SYNC - for(psp = ps, n = 0; n < NPS; psp++, n++) { - if(!psp->ps_open) + for (psp = ps, n = 0; n < NPS; psp++, n++) { + if (!psp->ps_open) continue; - if(psp->ps_refresh.mode == SYNCING_RF) { + if (psp->ps_refresh.mode == SYNCING_RF) { psaddr = (struct psdevice *) psdinfo[n]->ui_addr; SAVEPSADDR(); psrfnext(psp, psaddr); diff --git a/usr/src/sys/vax/uba/rk.c b/usr/src/sys/vax/uba/rk.c index bd8e9e0347..0425cce0a9 100644 --- a/usr/src/sys/vax/uba/rk.c +++ b/usr/src/sys/vax/uba/rk.c @@ -1,4 +1,4 @@ -/* rk.c 4.47 82/10/10 */ +/* rk.c 4.48 82/10/17 */ #include "rk.h" #if NHK > 0 @@ -166,6 +166,17 @@ rkattach(ui) 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; { diff --git a/usr/src/sys/vax/uba/tm.c b/usr/src/sys/vax/uba/tm.c index 8f03148e64..ef92cb4f1c 100644 --- a/usr/src/sys/vax/uba/tm.c +++ b/usr/src/sys/vax/uba/tm.c @@ -1,4 +1,4 @@ -/* tm.c 4.55 82/10/10 */ +/* tm.c 4.56 82/10/17 */ #include "te.h" #include "ts.h" @@ -196,10 +196,8 @@ tmopen(dev, flag) teunit = TEUNIT(dev); if (teunit>=NTE || (sc = &te_softc[teunit])->sc_openf || - (ui = tedinfo[teunit]) == 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + (ui = tedinfo[teunit]) == 0 || ui->ui_alive == 0) + return (ENXIO); olddens = sc->sc_dens; dens = TM_IE | TM_GO | (ui->ui_slave << 8); if ((minor(dev) & T_1600BPI) == 0) @@ -214,19 +212,16 @@ get: sc->sc_dens = olddens; if ((sc->sc_erreg&(TMER_SELR|TMER_TUR)) != (TMER_SELR|TMER_TUR)) { uprintf("te%d: not online\n", teunit); - u.u_error = EIO; - return; + return (EIO); } if ((flag&FWRITE) && (sc->sc_erreg&TMER_WRL)) { uprintf("te%d: no write ring\n", teunit); - u.u_error = EIO; - return; + return (EIO); } if ((sc->sc_erreg&TMER_BOT) == 0 && (flag&FWRITE) && dens != sc->sc_dens) { uprintf("te%d: can't change density in mid-tape\n", teunit); - u.u_error = EIO; - return; + return (EIO); } sc->sc_openf = 1; sc->sc_blkno = (daddr_t)0; @@ -240,6 +235,7 @@ get: timeout(tmtimer, (caddr_t)dev, 5*hz); } splx(s); + return (0); } /* @@ -848,7 +844,7 @@ tmioctl(dev, cmd, data, flag) case MTIOCTOP: /* tape operation */ mtop = (struct mtop *)data; - switch(mtop->mt_op) { + switch (mtop->mt_op) { case MTWEOF: callcount = mtop->mt_count; @@ -871,25 +867,20 @@ tmioctl(dev, cmd, data, flag) 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) { tmcommand(dev, tmops[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_erreg&TMER_BOT) break; } - geterror(bp); - return; + geterror(bp); /* XXX */ + return (u.u_error); /* XXX */ case MTIOCGET: mtget = (struct mtget *)data; @@ -897,11 +888,12 @@ tmioctl(dev, cmd, data, flag) mtget->mt_erreg = sc->sc_erreg; mtget->mt_resid = sc->sc_resid; mtget->mt_type = MT_ISTM; - return; + break; default: - u.u_error = ENXIO; + return (ENXIO); } + return (0); } #define DBSIZE 20 diff --git a/usr/src/sys/vax/uba/ts.c b/usr/src/sys/vax/uba/ts.c index 03159bfc1f..4dea8200d2 100644 --- a/usr/src/sys/vax/uba/ts.c +++ b/usr/src/sys/vax/uba/ts.c @@ -1,4 +1,4 @@ -/* ts.c 4.30 82/10/10 */ +/* ts.c 4.31 82/10/17 */ #include "ts.h" #if NTS > 0 @@ -171,29 +171,24 @@ tsopen(dev, flag) tsunit = TSUNIT(dev); if (tsunit>=NTS || (sc = &ts_softc[tsunit])->sc_openf || - (ui = tsdinfo[tsunit]) == 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } - if (tsinit(tsunit)) { - u.u_error = ENXIO; - return; - } + (ui = tsdinfo[tsunit]) == 0 || ui->ui_alive == 0) + return (ENXIO); + if (tsinit(tsunit)) + return (ENXIO); tscommand(dev, TS_SENSE, 1); if ((sc->sc_sts.s_xs0&TS_ONL) == 0) { uprintf("ts%d: not online\n", tsunit); - u.u_error = EIO; - return; + return (EIO); } if ((flag&(FREAD|FWRITE)) == FWRITE && (sc->sc_sts.s_xs0&TS_WLK)) { uprintf("ts%d: no write ring\n", tsunit); - u.u_error = EIO; - return; + return (EIO); } sc->sc_openf = 1; sc->sc_blkno = (daddr_t)0; sc->sc_nxrec = INF; sc->sc_lastiow = 0; + return (0); } /* @@ -793,7 +788,7 @@ tsioctl(dev, cmd, data, flag) case MTIOCTOP: /* tape operation */ mtop = (struct mtop *)data; - switch(mtop->mt_op) { + switch (mtop->mt_op) { case MTWEOF: callcount = mtop->mt_count; @@ -812,25 +807,20 @@ tsioctl(dev, cmd, data, flag) 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) { tscommand(dev, tsops[mtop->mt_op], fcount); if ((mtop->mt_op == MTFSR || mtop->mt_op == MTBSR) && bp->b_resid) { - u.u_error = EIO; - break; - } + return (EIO); if ((bp->b_flags&B_ERROR) || sc->sc_sts.s_xs0&TS_BOT) break; } - geterror(bp); - return; + geterror(bp); /* XXX */ + return (u.u_error); /* XXX */ case MTIOCGET: mtget = (struct mtget *)data; @@ -838,11 +828,12 @@ tsioctl(dev, cmd, data, flag) mtget->mt_erreg = sc->sc_sts.s_xs0; mtget->mt_resid = sc->sc_resid; mtget->mt_type = MT_ISTS; - return; + break; default: - u.u_error = ENXIO; + return (ENXIO); } + return (0); } #define DBSIZE 20 diff --git a/usr/src/sys/vax/uba/uba.c b/usr/src/sys/vax/uba/uba.c index b923f3fcac..9f66c11d28 100644 --- a/usr/src/sys/vax/uba/uba.c +++ b/usr/src/sys/vax/uba/uba.c @@ -1,4 +1,4 @@ -/* uba.c 4.50 82/10/10 */ +/* uba.c 4.51 82/10/17 */ #include "../h/param.h" #include "../h/systm.h" diff --git a/usr/src/sys/vax/uba/uda.c b/usr/src/sys/vax/uba/uda.c index 378d651d32..9a0d29878f 100644 --- a/usr/src/sys/vax/uba/uda.c +++ b/usr/src/sys/vax/uba/uda.c @@ -1,4 +1,4 @@ -/* uda.c 4.10 82/10/10 */ +/* uda.c 4.11 82/10/17 */ #include "ra.h" #if NUDA > 0 @@ -168,10 +168,8 @@ udopen(dev, flag) flag = flag; #endif unit = minor(dev) >> 3; - if (unit >= NRA || (ui = uddinfo[unit]) == 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + if (unit >= NRA || (ui = uddinfo[unit]) == 0 || ui->ui_alive == 0) + return (ENXIO); sc = &uda_softc[ui->ui_ctlr]; s = spl5(); if (sc->sc_state != S_RUN) { @@ -179,14 +177,13 @@ udopen(dev, flag) udinit(ui->ui_ctlr); /* wait for initialization to complete */ sleep((caddr_t)ui->ui_mi, 0); - if (sc->sc_state != S_RUN) { - u.u_error = EIO; - return; - } + if (sc->sc_state != S_RUN) + return (EIO); } splx(s); /* SHOULD PROBABLY FORCE AN ONLINE ATTEMPT TO SEE IF DISK IS REALLY THERE */ + return (0); } /* @@ -839,7 +836,7 @@ udreset(uban) } for (bp = udwtab[d].av_forw; bp != &udwtab[d]; bp = nbp) { nbp = bp->av_forw; - ubarelse(uban, (int *)&bp->b_ubinfo); + bp->b_ubinfo = 0; /* * Link the buffer onto the drive queue */ diff --git a/usr/src/sys/vax/uba/ut.c b/usr/src/sys/vax/uba/ut.c index f089024459..2c74d91566 100644 --- a/usr/src/sys/vax/uba/ut.c +++ b/usr/src/sys/vax/uba/ut.c @@ -1,4 +1,4 @@ -/* ut.c 4.19 82/10/10 */ +/* ut.c 4.20 82/10/17 */ #include "tj.h" #if NUT > 0 @@ -127,13 +127,12 @@ utopen(dev, flag) register int s; if (tjunit >= NTJ || (sc = &tj_softc[tjunit])->sc_openf || - (ui = tjdinfo[tjunit]) == 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + (ui = tjdinfo[tjunit]) == 0 || ui->ui_alive == 0) + return (ENXIO); olddens = sc->sc_dens; - dens = sc->sc_dens = utdens[(minor(dev)&(T_1600BPI|T_6250BPI))>>3]| - PDP11FMT|(ui->ui_slave&07); + dens = sc->sc_dens = + utdens[(minor(dev)&(T_1600BPI|T_6250BPI))>>3]| + PDP11FMT|(ui->ui_slave&07); get: utcommand(dev, UT_SENSE, 1); if (sc->sc_dsreg&UTDS_PIP) { @@ -143,19 +142,16 @@ get: sc->sc_dens = olddens; if ((sc->sc_dsreg&UTDS_MOL) == 0) { uprintf("tj%d: not online\n", tjunit); - u.u_error = EIO; - return; + return (EIO); } if ((flag&FWRITE) && (sc->sc_dsreg&UTDS_WRL)) { uprintf("tj%d: no write ring\n", tjunit); - u.u_error = EIO; - return; + return (EIO); } if ((sc->sc_dsreg&UTDS_BOT) == 0 && (flag&FWRITE) && dens != sc->sc_dens) { uprintf("tj%d: can't change density in mid-tape\n", tjunit); - u.u_error = EIO; - return; + return (EIO); } sc->sc_openf = 1; sc->sc_blkno = (daddr_t)0; @@ -173,6 +169,7 @@ get: timeout(uttimer, (caddr_t)dev, 5*hz); } splx(s); + return (0); } utclose(dev, flag) @@ -732,26 +729,21 @@ utioctl(dev, cmd, data, flag) 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) { utcommand(dev, utops[mtop->mt_op], fcount); /* note this depends on the mtop values */ if ((mtop->mt_op >= MTFSF || mtop->mt_op <= MTBSR) && bp->b_resid) { - u.u_error = EIO; - break; - } + return (EIO); if ((bp->b_flags&B_ERROR) || (sc->sc_dsreg&UTDS_BOT)) break; } - geterror(bp); - return; + geterror(bp); /* XXX */ + return (u.u_error); /* XXX */ case MTIOCGET: mtget = (struct mtget *)data; @@ -759,11 +751,12 @@ utioctl(dev, cmd, data, flag) mtget->mt_erreg = sc->sc_erreg; mtget->mt_resid = sc->sc_resid; mtget->mt_type = MT_ISUT; - return; + break; default: - u.u_error = ENXIO; + return (ENXIO); } + return (0); } utreset(uban) diff --git a/usr/src/sys/vax/uba/vp.c b/usr/src/sys/vax/uba/vp.c index 692ddadf05..2968556a56 100644 --- a/usr/src/sys/vax/uba/vp.c +++ b/usr/src/sys/vax/uba/vp.c @@ -1,4 +1,4 @@ -/* vp.c 4.20 82/10/10 */ +/* vp.c 4.21 82/10/17 */ #include "vp.h" #if NVP > 0 @@ -123,10 +123,8 @@ vpopen(dev) if (VPUNIT(dev) >= NVP || ((sc = &vp_softc[minor(dev)])->sc_state&VPSC_OPEN) || - (ui = vpdinfo[VPUNIT(dev)]) == 0 || ui->ui_alive == 0) { - u.u_error = ENXIO; - return; - } + (ui = vpdinfo[VPUNIT(dev)]) == 0 || ui->ui_alive == 0) + return (ENXIO); vpaddr = (struct vpdevice *)ui->ui_addr; sc->sc_state = VPSC_OPEN|VPSC_PRINT | VP_CLRCOM|VP_RESET; sc->sc_count = 0; @@ -136,12 +134,12 @@ vpopen(dev) (void) spl4(); if (vpwait(dev)) { vpclose(dev); - u.u_error = EIO; - return; + return (EIO); } vpstart(dev); (void) spl0(); } + return (0); } vpstrategy(bp) @@ -260,21 +258,18 @@ vpioctl(dev, cmd, addr, flag) case VGETSTATE: (void) suword(addr, sc->sc_state); - return; + break; case VSETSTATE: m = fuword(addr); - if (m == -1) { - u.u_error = EFAULT; - return; - } + if (m == -1) + return (EFAULT); sc->sc_state = (sc->sc_state & ~VPSC_MODE) | (m&(VPSC_MODE|VPSC_CMNDS)); break; default: - u.u_error = ENOTTY; - return; + return (ENOTTY); } (void) spl4(); (void) vpwait(dev); @@ -288,6 +283,7 @@ vpioctl(dev, cmd, addr, flag) vpstart(dev); } (void) spl0(); + return (0); } vptimo(dev) @@ -338,10 +334,7 @@ vpreset(uban) vpaddr->prcsr = VP_IENABLE|VP_DTCINTR; if ((sc->sc_state & VPSC_BUSY) == 0) continue; - if (sc->sc_ubinfo) { - printf("<%d>", (sc->sc_ubinfo>>28)&0xf); - ubarelse(ui->ui_ubanum, &sc->sc_ubinfo); - } + sc->sc_ubinfo = 0; sc->sc_count = sc->sc_bp->b_bcount; vpstart(sc->sc_bp->b_dev); }