diff --git a/sys/i386/isa/ft.c b/sys/i386/isa/ft.c index dfd8cb3a40c..864faaf1685 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); diff --git a/sys/i386/isa/psm.c b/sys/i386/isa/psm.c index 4420ae7cf20..bcb582838a4 100644 --- a/sys/i386/isa/psm.c +++ b/sys/i386/isa/psm.c @@ -19,7 +19,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: psm.c,v 1.28 1996/11/15 06:17:36 nate Exp $ + * $Id: psm.c,v 1.29 1996/11/15 17:30:29 nate Exp $ */ /* @@ -68,6 +68,7 @@ #include #include #include +#include #ifdef DEVFS #include #endif @@ -157,7 +158,7 @@ static struct psm_softc { /* Driver status information */ void *devfs_token; void *n_devfs_token; #endif -} psm_softc[NPSM]; +} *psm_softc[NPSM]; /* driver state flags (state) */ #define PSM_VALID 0x80 @@ -432,7 +433,7 @@ psmprobe(struct isa_device *dvp) if (unit >= NPSM) return (0); - sc = &psm_softc[unit]; + sc = psm_softc[unit]; sc->addr = ioport; if (bootverbose) ++verbose; @@ -619,7 +620,10 @@ static int psmattach(struct isa_device *dvp) { int unit = dvp->id_unit; - struct psm_softc *sc = &psm_softc[unit]; + struct psm_softc *sc = psm_softc[unit] = + malloc(sizeof *sc, M_DEVBUF, M_NOWAIT); + + bzero(sc, sizeof *sc); /* initial operation mode */ sc->mode.accelfactor = PSM_ACCEL; @@ -661,7 +665,7 @@ psmopen(dev_t dev, int flag, int fmt, struct proc *p) return (ENXIO); /* Get device data */ - sc = &psm_softc[unit]; + sc = psm_softc[unit]; if ((sc->state & PSM_VALID) == 0) return (ENXIO); ioport = sc->addr; @@ -716,7 +720,7 @@ psmopen(dev_t dev, int flag, int fmt, struct proc *p) static int psmclose(dev_t dev, int flag, int fmt, struct proc *p) { - struct psm_softc *sc = &psm_softc[PSM_UNIT(dev)]; + struct psm_softc *sc = psm_softc[PSM_UNIT(dev)]; int ioport = sc->addr; /* disable the aux interrupt */ @@ -881,7 +885,7 @@ mkps2(unsigned char *buf, int *len, int maxlen, register mousestatus_t *status) static int psmread(dev_t dev, struct uio *uio, int flag) { - register struct psm_softc *sc = &psm_softc[PSM_UNIT(dev)]; + register struct psm_softc *sc = psm_softc[PSM_UNIT(dev)]; unsigned int length; int error; int s; @@ -938,7 +942,7 @@ psmread(dev_t dev, struct uio *uio, int flag) static int psmioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p) { - struct psm_softc *sc = &psm_softc[PSM_UNIT(dev)]; + struct psm_softc *sc = psm_softc[PSM_UNIT(dev)]; mouseinfo_t info; mousestatus_t *ms; packetfunc_t func; @@ -1075,7 +1079,7 @@ psmintr(int unit) BUT2STAT, BUT1STAT | BUT2STAT, BUT2STAT | BUT3STAT, BUT1STAT | BUT2STAT | BUT3STAT }; - register struct psm_softc *sc = &psm_softc[unit]; + register struct psm_softc *sc = psm_softc[unit]; int ioport = sc->addr; mousestatus_t *ms; unsigned char c; @@ -1171,7 +1175,7 @@ psmintr(int unit) static int psmselect(dev_t dev, int rw, struct proc *p) { - struct psm_softc *sc = &psm_softc[PSM_UNIT(dev)]; + struct psm_softc *sc = psm_softc[PSM_UNIT(dev)]; int s, ret; /* Silly to select for output */ diff --git a/sys/sys/ftape.h b/sys/sys/ftape.h index 71bb73ce3a7..6792bdd7d95 100644 --- a/sys/sys/ftape.h +++ b/sys/sys/ftape.h @@ -58,8 +58,8 @@ typedef struct qic_segment { 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 */