Date: Wed, 27 Nov 1996 22:06:21 +0100 From: Poul-Henning Kamp <phk@critter.tfs.com> To: current@freebsd.org Subject: users of "ft" tapes, please test! Message-ID: <2845.849128781@critter.tfs.com>
next in thread | raw e-mail | index | archive | help
Unless somebody convinces me that this patch doesn't work, It will be committed. It shaves about 5K of the size of the ft.o object file. Please test this out and report back to me! Poul-Henning Index: sys/ftape.h =================================================================== RCS file: /home/ncvs/src/sys/sys/ftape.h,v retrieving revision 1.3 diff -u -r1.3 ftape.h --- ftape.h 1996/09/21 14:59:30 1.3 +++ ftape.h 1996/11/27 21:00:11 @@ -58,8 +58,8 @@ typedef struct qic_geom { int g_fmtno; /* Format number */ int g_lenno; /* Length number */ - char g_fmtdesc[16]; /* Format text description */ - char g_lendesc[16]; /* Length text description */ + char *g_fmtdesc; /* Format text description */ + char *g_lendesc; /* Length text description */ int g_trktape; /* Number of tracks per tape */ int g_segtrk; /* Number of segments per track */ int g_blktrk; /* Number of blocks per track */ Index: i386/isa/ft.c =================================================================== RCS file: /home/ncvs/src/sys/i386/isa/ft.c,v retrieving revision 1.27 diff -u -r1.27 ft.c --- ft.c 1996/09/06 23:07:22 1.27 +++ ft.c 1996/11/27 20:52:48 @@ -274,7 +275,7 @@ 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 +417,8 @@ 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 +538,7 @@ */ 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 +961,7 @@ 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 +1090,7 @@ 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 +1211,7 @@ 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 +1336,7 @@ 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 +1414,7 @@ { 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 +1441,7 @@ 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 +1503,7 @@ 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 +1564,7 @@ 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 +1605,7 @@ 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 +1650,7 @@ 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 +1688,7 @@ 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 +1722,7 @@ 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 +1755,7 @@ 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 +1849,7 @@ 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; @@ -2043,8 +2045,8 @@ /* 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 +2067,7 @@ 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 +2091,7 @@ 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 +2243,7 @@ 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 +2266,7 @@ 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 +2298,7 @@ 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 +2324,7 @@ 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 +2341,7 @@ 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 +2358,7 @@ 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 +2389,7 @@ 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 +2406,7 @@ 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 +2469,7 @@ 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); -- Poul-Henning Kamp | phk@FreeBSD.ORG FreeBSD Core-team. http://www.freebsd.org/~phk | phk@login.dknet.dk Private mailbox. whois: [PHK] | phk@ref.tfs.com TRW Financial Systems, Inc. Future will arrive by its own means, progress not so.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2845.849128781>