summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/ft.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1996-11-27 22:52:25 +0000
committerphk <phk@FreeBSD.org>1996-11-27 22:52:25 +0000
commit71490cf916815c565e74a11edf59641a035d0ae4 (patch)
tree5c5b5a3fb8fac97142c27426fc40ba5e12c02d7e /sys/i386/isa/ft.c
parent66999dfcd221cba67d5e08e76cd6571a2a1a4a59 (diff)
downloadFreeBSD-src-71490cf916815c565e74a11edf59641a035d0ae4.zip
FreeBSD-src-71490cf916815c565e74a11edf59641a035d0ae4.tar.gz
Waste less space.
Diffstat (limited to 'sys/i386/isa/ft.c')
-rw-r--r--sys/i386/isa/ft.c65
1 files changed, 33 insertions, 32 deletions
diff --git a/sys/i386/isa/ft.c b/sys/i386/isa/ft.c
index dfd8cb3..864faaf 100644
--- a/sys/i386/isa/ft.c
+++ b/sys/i386/isa/ft.c
@@ -17,7 +17,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*
* ft.c - QIC-40/80 floppy tape driver
- * $Id: ft.c,v 1.26 1996/06/18 01:22:16 bde Exp $
+ * $Id: ft.c,v 1.27 1996/09/06 23:07:22 phk Exp $
*
* 01/19/95 ++sg
* Cleaned up recalibrate/seek code at attach time for FreeBSD 2.x.
@@ -274,7 +274,7 @@ static struct ft_data {
int moving; /* TRUE if tape is moving */
int rid[7]; /* read_id return values */
-} ft_data[NFT];
+} *ft_data[NFT];
/***********************************************************************\
* Throughout this file the following conventions will be used: *
@@ -416,7 +416,8 @@ ftattach(isadev, fdup, unithasfd)
char *manu;
if (ftu >= NFT) return 0;
- ft = &ft_data[ftu];
+ ft = ft_data[ftu] = malloc(sizeof *ft, M_DEVBUF, M_NOWAIT);
+ bzero(ft, sizeof *ft);
/* Probe for tape */
ft->attaching = 1;
@@ -536,7 +537,7 @@ out:
*/
static void
async_cmd(ftu_t ftu) {
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdcu_t fdcu = ft->fdc->fdcu;
int cmd, i, st0, st3, pcn;
static int bitn, retval, retpos, nbits, newcn;
@@ -959,7 +960,7 @@ complete:
static void
async_req(ftu_t ftu, int from)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
SegReq *sp;
static int over_async, lastreq;
int cmd;
@@ -1088,7 +1089,7 @@ restate:
static void
async_read(ftu_t ftu, int from)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdcu_t fdcu = ft->fdc->fdcu; /* fdc active unit */
int i, rddta[7];
int where;
@@ -1209,7 +1210,7 @@ restate:
static void
async_write(ftu_t ftu, int from)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdcu_t fdcu = ft->fdc->fdcu; /* fdc active unit */
int i, rddta[7];
int where;
@@ -1334,7 +1335,7 @@ int
ftintr(ftu_t ftu)
{
int st0, pcn, i;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdcu_t fdcu = ft->fdc->fdcu; /* fdc active unit */
int s = splbio();
@@ -1412,7 +1413,7 @@ ft_timeout(void *arg1)
{
int s;
ftu_t ftu = (ftu_t)arg1;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
s = splbio();
if (ft->active) {
@@ -1439,7 +1440,7 @@ static int
ftintr_wait(ftu_t ftu, int cmd, int ticks)
{
int retries, st0, pcn;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdcu_t fdcu = ft->fdc->fdcu; /* fdc active unit */
ft->cmd_wait = cmd;
@@ -1501,7 +1502,7 @@ static int
tape_recal(ftu_t ftu, int totape)
{
int s;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdcu_t fdcu = ft->fdc->fdcu; /* fdc active unit */
DPRT(("tape_recal start\n"));
@@ -1562,7 +1563,7 @@ tape_cmd(ftu_t ftu, int cmd)
int newcn;
int retries = 0;
int s;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdcu_t fdcu = ft->fdc->fdcu; /* fdc active unit */
DPRT(("===> tape_cmd: %d\n",cmd));
@@ -1603,7 +1604,7 @@ static int
tape_status(ftu_t ftu)
{
int r, err, tries;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
int max = (ft->attaching) ? 2 : 3;
for (r = -1, tries = 0; r < 0 && tries < max; tries++)
@@ -1648,7 +1649,7 @@ recheck:
static void
tape_start(ftu_t ftu, int motor)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdc_p fdc = ft->fdc;
int s, mbits;
static int mbmotor[] = { FDO_MOEN0, FDO_MOEN1, FDO_MOEN2, FDO_MOEN3 };
@@ -1686,7 +1687,7 @@ tape_start(ftu_t ftu, int motor)
static void
tape_end(ftu_t ftu)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdc_p fdc = ft->fdc;
int s;
@@ -1720,7 +1721,7 @@ tape_end(ftu_t ftu)
static void
tape_inactive(ftu_t ftu)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
int s = splbio();
if (ft->segh != NULL) {
@@ -1753,7 +1754,7 @@ ftgetgeom(ftu_t ftu)
int r, i, tries;
int cfg, qic80, ext;
int sts, fmt, len;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
r = tape_status(ftu);
@@ -1847,7 +1848,7 @@ static int
set_fdcmode(dev_t dev, int newmode)
{
ftu_t ftu = FDUNIT(minor(dev));
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdc_p fdc = ft->fdc;
static int havebufs = 0;
int i;
@@ -1983,7 +1984,7 @@ static int
qic_status(ftu_t ftu, int cmd, int nbits)
{
int st3, r, i;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
fdcu_t fdcu = ft->fdc->fdcu; /* fdc active unit */
if (tape_cmd(ftu, cmd)) {
@@ -2043,8 +2044,8 @@ ftopen(dev_t dev, int arg2) {
/* check bounds */
if (ftu >= NFT)
return(ENXIO);
- fdc = ft_data[ftu].fdc;
- if ((fdc == NULL) || (ft_data[ftu].type == NO_TYPE))
+ fdc = ft_data[ftu]->fdc;
+ if ((fdc == NULL) || (ft_data[ftu]->type == NO_TYPE))
return(ENXIO);
/* check for controller already busy with tape */
if (fdc->flags & FDC_TAPE_BUSY)
@@ -2065,7 +2066,7 @@ int
ftclose(dev_t dev, int flags)
{
ftu_t ftu = FDUNIT(minor(dev));
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
/* Wait for any remaining I/O activity to complete. */
@@ -2089,7 +2090,7 @@ ftreq_rw(ftu_t ftu, int cmd, QIC_Segment *sr, struct proc *p)
int s;
long blk, bad, seg;
unsigned char *cp, *cp2;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
if (!ft->active && ft->segh == NULL) {
r = tape_status(ftu);
@@ -2241,7 +2242,7 @@ rddone:
static int
ftreq_rewind(ftu_t ftu)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
tape_inactive(ftu);
tape_cmd(ftu, QC_STOP);
@@ -2264,7 +2265,7 @@ static int
ftreq_trkpos(ftu_t ftu, int req)
{
int curtrk, r, cmd;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
tape_inactive(ftu);
tape_cmd(ftu, QC_STOP);
@@ -2296,7 +2297,7 @@ static int
ftreq_trkset(ftu_t ftu, int *trk)
{
int r;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
tape_inactive(ftu);
tape_cmd(ftu, QC_STOP);
@@ -2322,7 +2323,7 @@ ftreq_trkset(ftu_t ftu, int *trk)
static int
ftreq_lfwd(ftu_t ftu)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
tape_inactive(ftu);
tape_cmd(ftu, QC_STOP);
@@ -2339,7 +2340,7 @@ ftreq_lfwd(ftu_t ftu)
static int
ftreq_stop(ftu_t ftu)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
tape_inactive(ftu);
tape_cmd(ftu, QC_STOP);
@@ -2356,7 +2357,7 @@ static int
ftreq_setmode(ftu_t ftu, int cmd)
{
int r;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
tape_inactive(ftu);
r = tape_status(ftu);
@@ -2387,7 +2388,7 @@ ftreq_setmode(ftu_t ftu, int cmd)
static int
ftreq_status(ftu_t ftu, int cmd, int *sts, struct proc *p)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
if (ft->active)
*sts = ft->laststs & ~QS_READY;
@@ -2404,7 +2405,7 @@ static int
ftreq_config(ftu_t ftu, int cmd, int *cfg, struct proc *p)
{
int r, tries;
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
if (ft->active)
r = ft->lastcfg;
@@ -2467,7 +2468,7 @@ ftreq_hwinfo(ftu_t ftu, QIC_HWInfo *hwp)
static int
ftreq_hdr(ftu_t ftu, int cmd, QIC_Segment *sp)
{
- ft_p ft = &ft_data[ftu];
+ ft_p ft = ft_data[ftu];
QIC_Header *h = (QIC_Header *)ft->hdr->buff;
if (sp == NULL || sp->sg_data == NULL) return(EINVAL);
OpenPOWER on IntegriCloud