summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f356c33)
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
17 files changed:
#include "ad.h"
#if NAD > 0
#include "ad.h"
#if NAD > 0
adprobe(reg)
caddr_t reg;
{
adprobe(reg)
caddr_t reg;
{
+ register int br, cvec; /* value-result */
register struct addevice *adaddr = (struct addevice *) reg;
adaddr->ad_csr = AD_IENABLE | AD_START;
register struct addevice *adaddr = (struct addevice *) reg;
adaddr->ad_csr = AD_IENABLE | AD_START;
return (sizeof (struct addevice));
}
return (sizeof (struct addevice));
}
adattach(ui)
struct uba_device *ui;
{
adattach(ui)
struct uba_device *ui;
{
register struct ad *adp;
register struct uba_device *ui;
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;
adp->ad_open = 1;
adp->ad_icnt = 0;
adp->ad_state = 0;
adp->ad_uid = u.u_uid;
register caddr_t addr;
{
register struct addevice *adaddr =
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;
register struct uba_device *ui = addinfo[ADUNIT(dev)];
register struct ad *adp;
register int i;
spl6();
adaddr->ad_csr = adp->ad_chan;
i = 1000;
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;
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:
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. */
-/* ct.c 4.10 82/10/10 */
+/* ct.c 4.11 82/10/17 */
#include "ct.h"
#if NCT > 0
#include "ct.h"
#if NCT > 0
register struct ctdevice *ctaddr;
if (CTUNIT(dev) >= NCT || (ui = ctdinfo[CTUNIT(dev)]) == 0 ||
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;
sc->sc_openf = 1;
ctaddr->ctcsr |= IENABLE;
-/* dh.c 4.52 82/10/10 */
+/* dh.c 4.53 82/10/17 */
#include "dh.h"
#if NDH > 0
#include "dh.h"
#if NDH > 0
unit = minor(dev);
dh = unit >> 4;
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);
- 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;
addr = (struct dhdevice *)ui->ui_addr;
tp->t_addr = (caddr_t)addr;
tp->t_oproc = dhstart;
* Wait for carrier, then process line discipline specific open.
*/
dmopen(dev);
* 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));
caddr_t data;
{
register struct tty *tp;
caddr_t data;
{
register struct tty *tp;
- register unit = minor(dev);
+ register int unit = minor(dev);
+ int error;
- 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);
if (cmd == TIOCSETP || cmd == TIOCSETN)
dhparam(unit);
+ return (error);
+ }
+ switch (cmd) {
case TIOCSBRK:
((struct dhdevice *)(tp->t_addr))->dhbreak |= 1<<(unit&017);
case TIOCSBRK:
((struct dhdevice *)(tp->t_addr))->dhbreak |= 1<<(unit&017);
if (dh_ubinfo[uban] == 0)
return;
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;
dh_ubinfo[uban] = uballoc(uban, (caddr_t)cfree,
512+nclist*sizeof (struct cblock), 0);
cbase[uban] = dh_ubinfo[uban]&0x3ffff;
-/* dmf.c 4.9 82/10/13 */
+/* dmf.c 4.10 82/10/17 */
#include "dmf.h"
#if NDMF > 0
#include "dmf.h"
#if NDMF > 0
unit = minor(dev);
dmf = unit >> 3;
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);
- 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;
addr = (struct dmfdevice *)ui->ui_addr;
tp->t_addr = (caddr_t)addr;
tp->t_oproc = dmfstart;
sleep((caddr_t)&tp->t_rawq, TTIPRI);
}
splx(s);
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));
register int unit = minor(dev);
register int dmf = unit >> 3;
register struct device *dmfaddr;
register int unit = minor(dev);
register int dmf = unit >> 3;
register struct device *dmfaddr;
- 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);
if (cmd == TIOCSETP || cmd == TIOCSETN)
dmfparam(unit);
+ return (error);
+ }
+ switch (cmd) {
case TIOCSBRK:
dmfmctl(dev, DMF_BRK, DMBIS);
case TIOCSBRK:
dmfmctl(dev, DMF_BRK, DMBIS);
#ifdef DMFDMA
if (dmf_ubinfo[uban] == 0)
return;
#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;
dmf_ubinfo[uban] = uballoc(uban, (caddr_t)cfree,
nclist*sizeof (struct cblock), 0);
cbase[uban] = dmf_ubinfo[uban]&0x3ffff;
#include "dn.h"
#if NDN > 0
#include "dn.h"
#if NDN > 0
dnattach(ui)
struct uba_device *ui;
dnattach(ui)
struct uba_device *ui;
/*ARGSUSED*/
dnopen(dev, flag)
/*ARGSUSED*/
dnopen(dev, flag)
register short dialer;
if ((unit = DNUNIT(dev)) >= NDN || (ui = dninfo[unit]) == 0 ||
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;
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]);
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;
dp->dn_reg[0] |= MENABLE;
*dnreg = IENABLE|MENABLE|CRQ;
-/* dz.c 4.45 82/10/13 */
+/* dz.c 4.46 82/10/17 */
#include "dz.h"
#if NDZ > 0
#include "dz.h"
#if NDZ > 0
register int unit;
unit = minor(dev);
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;
tp = &dz_tty[unit];
tp->t_addr = (caddr_t)&dzpdma[unit];
tp->t_oproc = dzstart;
tp->t_flags = IFLAGS;
/* tp->t_state |= TS_HUPCLS; */
dzparam(unit);
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) {
(void) dzmctl(dev, DZ_ON, DMSET);
(void) spl5();
while ((tp->t_state & TS_CARR_ON) == 0) {
sleep((caddr_t)&tp->t_rawq, TTIPRI);
}
(void) spl0();
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));
register int unit = minor(dev);
register int dz = unit >> 3;
register struct device *dzaddr;
register int unit = minor(dev);
register int dz = unit >> 3;
register struct device *dzaddr;
- 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);
if (cmd == TIOCSETP || cmd == TIOCSETN)
dzparam(unit);
+ return (error);
+ }
+ switch (cmd) {
case TIOCSBRK:
dzaddr = ((struct pdma *)(tp->t_addr))->p_addr;
case TIOCSBRK:
dzaddr = ((struct pdma *)(tp->t_addr))->p_addr;
-/* idc.c 4.6 82/10/10 */
+/* idc.c 4.7 82/10/17 */
#include "rb.h"
#if NIDC > 0
#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
#define trace(a,b) {*trp++ = (int)a; *trp++ = (int)b; if(trp>&idctrb[998])trp=idctrb;}
/*
* IDC (RB730) disk driver
idccyl[ui->ui_unit].dar_dar = -1;
ui->ui_flags = 0;
}
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;
idcstrategy(bp)
register struct buf *bp;
-/* lp.c 4.29 82/10/10 */
+/* lp.c 4.30 82/10/17 */
#include "lp.h"
#if NLP > 0
#include "lp.h"
#if NLP > 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/ioctl.h"
-#include "../h/tty.h"
#include "../vaxuba/ubavar.h"
#include "../vaxuba/ubavar.h"
if ((unit = LPUNIT(dev)) >= NLP ||
(sc = &lp_softc[unit])->sc_state&OPEN ||
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;
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;
sc->sc_state |= OPEN;
sc->sc_inbuf = geteblk(512);
sc->sc_flags = minor(dev) & 07;
}
(void) spl0();
lpcanon(dev, '\f');
}
(void) spl0();
lpcanon(dev, '\f');
-/* lpa.c 4.7 82/10/10 */
+/* lpa.c 4.8 82/10/17 */
#include "lpa.h"
#if NLPA > 0
#include "lpa.h"
#if NLPA > 0
TRACER("OPEN\n");
if (unit >= NLPA || sc->sc_flag & OPEN || ui == 0 ||
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;
(void) spl7();
lpaaddr->lcim = RESET;
lpaaddr->lcim = 0;
sc->sc_ubufn = -1;
/* THIS SHOULD EVENTUALLY SPECIFY "REAL-TIME" */
u.u_procp->p_nice = NICE;
sc->sc_ubufn = -1;
/* THIS SHOULD EVENTUALLY SPECIFY "REAL-TIME" */
u.u_procp->p_nice = NICE;
} *iocb;
TRACER("IOCTL IN\n");
} *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 */
iocb = (struct iocb *)data;
p = (short *) sc->sc_buffer->b_un.b_addr; /* CLOCK START */
*p++ = CLOCK | CLOCKA; /* mode */
*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,
*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");
TRACER("USER BUFFER FAULT\n");
- u.u_error = EFAULT;
- return;
}
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_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++) {
sc->sc_ubabuf = ubasetup(ui->ui_ubanum, &sc->sc_ubuffer, 0);
v = sc->sc_ubabuf;
for (i = 0; i < sc->sc_nbuf; i++) {
sc->sc_lbufnx = 0;
sc->sc_flag |= STTY;
TRACER("IOCTL OUT\n");
sc->sc_lbufnx = 0;
sc->sc_flag |= STTY;
TRACER("IOCTL OUT\n");
/*
* Evans and Sutherland Picture System 2 driver
/*
* Evans and Sutherland Picture System 2 driver
psattach(ui)
register struct uba_device *ui;
{
psattach(ui)
register struct uba_device *ui;
{
register struct uba_device *ui;
register int unit = PSUNIT(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;
psp->ps_open = 1;
psp->ps_uid = u.u_uid;
psp->ps_strayintr = 0;
psp->ps_clock.ticked = 0;
psp->ps_refresh.icnt = psp->ps_map.icnt = psp->ps_clock.icnt = 0;
maptouser(ui->ui_addr);
psp->ps_clock.ticked = 0;
psp->ps_refresh.icnt = psp->ps_map.icnt = psp->ps_clock.icnt = 0;
maptouser(ui->ui_addr);
case PSIOAUTOREFRESH:
n = fuword(waddr++);
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++);
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:
break;
case PSIOSINGLEREFRESH:
break;
case PSIODOUBLEBUFFER:
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;
case PSIOWAITREFRESH:
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 ... */
- if(cmd == PSSTOPREFRESH)
+ if (cmd == PSSTOPREFRESH)
psp->ps_refresh.stop = 1;
spl5();
psp->ps_refresh.waiting = 1;
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:
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 ... */
psp->ps_map.stop = 1;
spl5();
psp->ps_map.waiting = 1;
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:
sleep(&psp->ps_map.waiting, PSPRI);
spl0();
break;
default:
- u.u_error = ENOTTY; /* Not a legal ioctl cmd. */
}
#define SAVEPSADDR() {register short int i, x;x=spl6();i=psaddr->ps_addr;\
}
#define SAVEPSADDR() {register short int i, x;x=spl6();i=psaddr->ps_addr;\
register struct ps *psp = &ps[PSUNIT(dev)];
int savepsaddr;
register struct ps *psp = &ps[PSUNIT(dev)];
int savepsaddr;
return;
psp->ps_clock.icnt++;
SAVEPSADDR();
#ifndef EXTERNAL_SYNC
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++;
psrfnext(psp, psaddr);
} else {
psp->ps_clock.ticked++;
short int request;
register int savepsaddr, x;
short int request;
register int savepsaddr, x;
return;
SAVEPSADDR();
PSWAIT();
return;
SAVEPSADDR();
PSWAIT();
PSWAIT();
psaddr->ps_data = request&(~(HALT_REQ|MOSTOP_REQ)); /* acknowledge */
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 */
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);
psp->ps_map.waiting = 0;
wakeup(&psp->ps_map.waiting);
+ if (psp->ps_map.stop) {
psp->ps_map.stop = 0;
goto tryrf;
}
}
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);
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
/* fill other db */
psdbswitch(psp, psaddr);
else
- if(request & RFSTOP_REQ) { /* Refresh stopped */
+ if (request & RFSTOP_REQ) { /* Refresh stopped */
psp->ps_refresh.icnt++;
psrfstop(psaddr, psp);
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);
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;
}
}
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) {
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);
psdbswitch(psp, psaddr);
else
psmapnext(psp, psaddr);
#ifdef EXTERNAL_SYNC
x = spl6();
#endif
#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;
}
!psrfnext(psp, psaddr)) {
psp->ps_refresh.mode = SYNCING_RF;
}
- if(request & HIT_REQ) { /* Hit request */
+ if (request & HIT_REQ) { /* Hit request */
psp->ps_strayintr++;
RESTORPSADDR();
}
psp->ps_strayintr++;
RESTORPSADDR();
}
register struct psdevice *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);
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);
&& psp->ps_dbuffer.state == ON_DB) {
psrfstart(psp->ps_dbuffer.dbaddrs[psp->ps_dbuffer.rbuffer],
psp, psaddr);
register struct psdevice *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);
psmapstart(psp->ps_map.maddrs[psp->ps_map.mcntr++], psp, psaddr);
else
return(0);
PSWAIT();
psaddr->ps_addr = MAOL;
PSWAIT();
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();
psaddr->ps_data = (start = psp->ps_dbuffer.dbaddrs[!psp->ps_dbuffer.rbuffer])
+psp->ps_dbuffer.dbsize-2; /* 2 for a refresh halt command */
PSWAIT();
register int savepsaddr;
#ifdef EXTERNAL_SYNC
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)
- 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);
psaddr = (struct psdevice *) psdinfo[n]->ui_addr;
SAVEPSADDR();
psrfnext(psp, psaddr);
-/* rk.c 4.47 82/10/10 */
+/* rk.c 4.48 82/10/17 */
#include "rk.h"
#if NHK > 0
#include "rk.h"
#if NHK > 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;
{
-/* tm.c 4.55 82/10/10 */
+/* tm.c 4.56 82/10/17 */
#include "te.h"
#include "ts.h"
#include "te.h"
#include "ts.h"
teunit = TEUNIT(dev);
if (teunit>=NTE || (sc = &te_softc[teunit])->sc_openf ||
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)
olddens = sc->sc_dens;
dens = TM_IE | TM_GO | (ui->ui_slave << 8);
if ((minor(dev) & T_1600BPI) == 0)
sc->sc_dens = olddens;
if ((sc->sc_erreg&(TMER_SELR|TMER_TUR)) != (TMER_SELR|TMER_TUR)) {
uprintf("te%d: not online\n", teunit);
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;
}
if ((flag&FWRITE) && (sc->sc_erreg&TMER_WRL)) {
uprintf("te%d: no write ring\n", teunit);
}
if ((flag&FWRITE) && (sc->sc_erreg&TMER_WRL)) {
uprintf("te%d: no write ring\n", teunit);
- u.u_error = EIO;
- return;
}
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);
}
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;
}
sc->sc_openf = 1;
sc->sc_blkno = (daddr_t)0;
}
sc->sc_openf = 1;
sc->sc_blkno = (daddr_t)0;
timeout(tmtimer, (caddr_t)dev, 5*hz);
}
splx(s);
timeout(tmtimer, (caddr_t)dev, 5*hz);
}
splx(s);
case MTIOCTOP: /* tape operation */
mtop = (struct mtop *)data;
case MTIOCTOP: /* tape operation */
mtop = (struct mtop *)data;
case MTWEOF:
callcount = mtop->mt_count;
case MTWEOF:
callcount = mtop->mt_count;
- u.u_error = ENXIO;
- return;
- }
- if (callcount <= 0 || fcount <= 0) {
- u.u_error = ENXIO;
- return;
+ 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) &&
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;
}
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;
case MTIOCGET:
mtget = (struct mtget *)data;
mtget->mt_erreg = sc->sc_erreg;
mtget->mt_resid = sc->sc_resid;
mtget->mt_type = MT_ISTM;
mtget->mt_erreg = sc->sc_erreg;
mtget->mt_resid = sc->sc_resid;
mtget->mt_type = MT_ISTM;
-/* ts.c 4.30 82/10/10 */
+/* ts.c 4.31 82/10/17 */
#include "ts.h"
#if NTS > 0
#include "ts.h"
#if NTS > 0
tsunit = TSUNIT(dev);
if (tsunit>=NTS || (sc = &ts_softc[tsunit])->sc_openf ||
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);
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;
}
if ((flag&(FREAD|FWRITE)) == FWRITE && (sc->sc_sts.s_xs0&TS_WLK)) {
uprintf("ts%d: no write ring\n", tsunit);
}
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;
}
sc->sc_openf = 1;
sc->sc_blkno = (daddr_t)0;
sc->sc_nxrec = INF;
sc->sc_lastiow = 0;
}
sc->sc_openf = 1;
sc->sc_blkno = (daddr_t)0;
sc->sc_nxrec = INF;
sc->sc_lastiow = 0;
case MTIOCTOP: /* tape operation */
mtop = (struct mtop *)data;
case MTIOCTOP: /* tape operation */
mtop = (struct mtop *)data;
case MTWEOF:
callcount = mtop->mt_count;
case MTWEOF:
callcount = mtop->mt_count;
- u.u_error = ENXIO;
- return;
- }
- if (callcount <= 0 || fcount <= 0) {
- u.u_error = ENXIO;
- return;
+ 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) {
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;
- }
if ((bp->b_flags&B_ERROR) || sc->sc_sts.s_xs0&TS_BOT)
break;
}
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;
case MTIOCGET:
mtget = (struct mtget *)data;
mtget->mt_erreg = sc->sc_sts.s_xs0;
mtget->mt_resid = sc->sc_resid;
mtget->mt_type = MT_ISTS;
mtget->mt_erreg = sc->sc_sts.s_xs0;
mtget->mt_resid = sc->sc_resid;
mtget->mt_type = MT_ISTS;
-/* uba.c 4.50 82/10/10 */
+/* uba.c 4.51 82/10/17 */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
-/* uda.c 4.10 82/10/10 */
+/* uda.c 4.11 82/10/17 */
#include "ra.h"
#if NUDA > 0
#include "ra.h"
#if NUDA > 0
flag = flag;
#endif
unit = minor(dev) >> 3;
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) {
sc = &uda_softc[ui->ui_ctlr];
s = spl5();
if (sc->sc_state != S_RUN) {
udinit(ui->ui_ctlr);
/* wait for initialization to complete */
sleep((caddr_t)ui->ui_mi, 0);
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 */
}
splx(s);
/* SHOULD PROBABLY FORCE AN ONLINE ATTEMPT
TO SEE IF DISK IS REALLY THERE */
}
for (bp = udwtab[d].av_forw; bp != &udwtab[d]; bp = nbp) {
nbp = bp->av_forw;
}
for (bp = udwtab[d].av_forw; bp != &udwtab[d]; bp = nbp) {
nbp = bp->av_forw;
- ubarelse(uban, (int *)&bp->b_ubinfo);
/*
* Link the buffer onto the drive queue
*/
/*
* Link the buffer onto the drive queue
*/
-/* ut.c 4.19 82/10/10 */
+/* ut.c 4.20 82/10/17 */
#include "tj.h"
#if NUT > 0
#include "tj.h"
#if NUT > 0
register int s;
if (tjunit >= NTJ || (sc = &tj_softc[tjunit])->sc_openf ||
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);
- 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) {
get:
utcommand(dev, UT_SENSE, 1);
if (sc->sc_dsreg&UTDS_PIP) {
sc->sc_dens = olddens;
if ((sc->sc_dsreg&UTDS_MOL) == 0) {
uprintf("tj%d: not online\n", tjunit);
sc->sc_dens = olddens;
if ((sc->sc_dsreg&UTDS_MOL) == 0) {
uprintf("tj%d: not online\n", tjunit);
- u.u_error = EIO;
- return;
}
if ((flag&FWRITE) && (sc->sc_dsreg&UTDS_WRL)) {
uprintf("tj%d: no write ring\n", tjunit);
}
if ((flag&FWRITE) && (sc->sc_dsreg&UTDS_WRL)) {
uprintf("tj%d: no write ring\n", tjunit);
- u.u_error = EIO;
- return;
}
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);
}
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;
}
sc->sc_openf = 1;
sc->sc_blkno = (daddr_t)0;
}
sc->sc_openf = 1;
sc->sc_blkno = (daddr_t)0;
timeout(uttimer, (caddr_t)dev, 5*hz);
}
splx(s);
timeout(uttimer, (caddr_t)dev, 5*hz);
}
splx(s);
- u.u_error = ENXIO;
- return;
- }
- if (callcount <= 0 || fcount <= 0) {
- u.u_error = ENXIO;
- return;
+ 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) {
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;
- }
if ((bp->b_flags&B_ERROR) || (sc->sc_dsreg&UTDS_BOT))
break;
}
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;
case MTIOCGET:
mtget = (struct mtget *)data;
mtget->mt_erreg = sc->sc_erreg;
mtget->mt_resid = sc->sc_resid;
mtget->mt_type = MT_ISUT;
mtget->mt_erreg = sc->sc_erreg;
mtget->mt_resid = sc->sc_resid;
mtget->mt_type = MT_ISUT;
-/* vp.c 4.20 82/10/10 */
+/* vp.c 4.21 82/10/17 */
#include "vp.h"
#if NVP > 0
#include "vp.h"
#if NVP > 0
if (VPUNIT(dev) >= NVP ||
((sc = &vp_softc[minor(dev)])->sc_state&VPSC_OPEN) ||
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;
vpaddr = (struct vpdevice *)ui->ui_addr;
sc->sc_state = VPSC_OPEN|VPSC_PRINT | VP_CLRCOM|VP_RESET;
sc->sc_count = 0;
(void) spl4();
if (vpwait(dev)) {
vpclose(dev);
(void) spl4();
if (vpwait(dev)) {
vpclose(dev);
- u.u_error = EIO;
- return;
}
vpstart(dev);
(void) spl0();
}
}
vpstart(dev);
(void) spl0();
}
case VGETSTATE:
(void) suword(addr, sc->sc_state);
case VGETSTATE:
(void) suword(addr, sc->sc_state);
case VSETSTATE:
m = fuword(addr);
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:
sc->sc_state =
(sc->sc_state & ~VPSC_MODE) | (m&(VPSC_MODE|VPSC_CMNDS));
break;
default:
- u.u_error = ENOTTY;
- return;
}
(void) spl4();
(void) vpwait(dev);
}
(void) spl4();
(void) vpwait(dev);
vpstart(dev);
}
(void) spl0();
vpstart(dev);
}
(void) spl0();
vpaddr->prcsr = VP_IENABLE|VP_DTCINTR;
if ((sc->sc_state & VPSC_BUSY) == 0)
continue;
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_count = sc->sc_bp->b_bcount;
vpstart(sc->sc_bp->b_dev);
}
sc->sc_count = sc->sc_bp->b_bcount;
vpstart(sc->sc_bp->b_dev);
}