#define TMADDR ((struct device *)0172520)
#define DENS 060000 /* 9-channel */
#define HARD 0102200 /* ILC, EOT, NXM */
unit
= minor(dev
) & 0177;
printf("mt%d off line\n",unit
);
printf("mt%d needs write ring\n",unit
);
((flag
&FWRITE
) && (t_flags
[minor(dev
)&0177]&T_WRITTEN
))) {
if ((minor(dev
)&0200) == 0)
t_openf
[minor(dev
)&077] = 0;
while (bp
->b_flags
&B_BUSY
) {
sleep((caddr_t
)bp
, PRIBIO
);
bp
->b_flags
= B_BUSY
|B_READ
;
if (bp
->b_flags
&B_WANTED
)
p
= &t_nxrec
[minor(bp
->b_dev
)&0177];
if (bp
->b_flags
&B_READ
) {
if ((bp
->b_flags
&B_READ
) == 0) {
t_flags
[minor(bp
->b_dev
)&0177] |= T_WRITTEN
;
if (tmtab
.b_actf
== NULL
)
tmtab
.b_actl
->av_forw
= bp
;
if (tmtab
.b_active
== NULL
)
if ((bp
= tmtab
.b_actf
) == 0)
unit
= minor(bp
->b_dev
)&0177;
if (t_openf
[unit
] < 0 || (TMADDR
->tmcs
& CRDY
) == NULL
) {
if (bp
->b_resid
== NOP
) {
bp
->b_resid
= TMADDR
->tmer
;
TMADDR
->tmcs
= DENS
|bp
->b_resid
|GO
| (unit
<<8) | IENABLE
;
com
= (unit
<<8) | ((bp
->b_xmem
& 03) << 4) | IENABLE
|DENS
;
if (*blkno
!= bp
->b_blkno
) {
if (*blkno
< bp
->b_blkno
) {
TMADDR
->tmbc
= *blkno
- bp
->b_blkno
;
TMADDR
->tmbc
= bp
->b_blkno
- *blkno
;
TMADDR
->tmbc
= -bp
->b_bcount
;
TMADDR
->tmba
= bp
->b_un
.b_addr
;
TMADDR
->tmcs
= com
| ((bp
->b_flags
&B_READ
)? RCOM
|GO
:
((tmtab
.b_errcnt
)? WIRG
|GO
: WCOM
|GO
));
tmtab
.b_actf
= bp
->av_forw
;
if ((bp
= tmtab
.b_actf
) == NULL
)
unit
= minor(bp
->b_dev
)&0177;
if (TMADDR
->tmcs
< 0) { /* error bit */
while(TMADDR
->tmrd
& GAPSD
) ; /* wait for gap shutdown */
t_nxrec
[unit
] = bp
->b_blkno
;
TMADDR
->tmbc
= -bp
->b_bcount
;
if ((TMADDR
->tmer
&HARD
) == 0 && TMADDR
->tmer
&RLE
) {
if ((TMADDR
->tmer
&(HARD
|EOF
)) == NULL
&& state
==SIO
) {
if (++tmtab
.b_errcnt
< 2) {
if (t_openf
[unit
]>0 && bp
!=&rtmbuf
&&
(TMADDR
->tmer
&EOF
)==0 ) {
deverror(bp
, TMADDR
->tmer
, 0);
t_blkno
[unit
] += (bp
->b_bcount
>>BSHIFT
);
tmtab
.b_actf
= bp
->av_forw
;
bp
->b_resid
= -TMADDR
->tmbc
;
t_blkno
[unit
] = bp
->b_blkno
;
physio(tmstrategy
, &rtmbuf
, dev
, B_READ
);
physio(tmstrategy
, &rtmbuf
, dev
, B_WRITE
);
unit
= minor(dev
) & 0177;