projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Change to includes. No more ../h
[unix-history]
/
usr
/
src
/
sys
/
vax
/
uba
/
rk.c
diff --git
a/usr/src/sys/vax/uba/rk.c
b/usr/src/sys/vax/uba/rk.c
index
7b923e8
..
627db02
100644
(file)
--- a/
usr/src/sys/vax/uba/rk.c
+++ b/
usr/src/sys/vax/uba/rk.c
@@
-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);
- u
badone(um)
;
+ u
m->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