Module Name: src
Committed By: pgoyette
Date: Wed Jul 20 02:06:16 UTC 2016
Modified Files:
src/sys/arch/acorn26/ioc [pgoyette-localcount]: arcpp.c
src/sys/arch/acorn32/mainbus [pgoyette-localcount]: fd.c
src/sys/arch/acorn32/podulebus [pgoyette-localcount]: asc.c
src/sys/arch/alpha/pci [pgoyette-localcount]: mcpcia.c
src/sys/arch/alpha/tc [pgoyette-localcount]: ioasic.c
src/sys/arch/amiga/dev [pgoyette-localcount]: afsc.c ahsc.c atzsc.c
bppcsc.c cbiiisc.c drsc.c fd.c gtsc.c mfc.c mgnsc.c wesc.c
src/sys/arch/arc/jazz [pgoyette-localcount]: fd.c
src/sys/arch/arm/amlogic [pgoyette-localcount]: amlogic_com.c
src/sys/arch/arm/at91 [pgoyette-localcount]: at91dbgu.c at91usart.c
Log Message:
Redo previous. Rather than separately extracting the device_t, we can
rely on sc->sc_dev when we need to call device_release().
To generate a diff of this commit:
cvs rdiff -u -r1.15.2.1 -r1.15.2.2 src/sys/arch/acorn26/ioc/arcpp.c
cvs rdiff -u -r1.58.2.1 -r1.58.2.2 src/sys/arch/acorn32/mainbus/fd.c
cvs rdiff -u -r1.20.4.1 -r1.20.4.2 src/sys/arch/acorn32/podulebus/asc.c
cvs rdiff -u -r1.29.28.1 -r1.29.28.2 src/sys/arch/alpha/pci/mcpcia.c
cvs rdiff -u -r1.46.10.1 -r1.46.10.2 src/sys/arch/alpha/tc/ioasic.c
cvs rdiff -u -r1.44.18.1 -r1.44.18.2 src/sys/arch/amiga/dev/afsc.c
cvs rdiff -u -r1.38.18.1 -r1.38.18.2 src/sys/arch/amiga/dev/ahsc.c
cvs rdiff -u -r1.43.18.1 -r1.43.18.2 src/sys/arch/amiga/dev/atzsc.c
cvs rdiff -u -r1.3.18.1 -r1.3.18.2 src/sys/arch/amiga/dev/bppcsc.c
cvs rdiff -u -r1.21.18.1 -r1.21.18.2 src/sys/arch/amiga/dev/cbiiisc.c
cvs rdiff -u -r1.33.10.1 -r1.33.10.2 src/sys/arch/amiga/dev/drsc.c
cvs rdiff -u -r1.96.2.1 -r1.96.2.2 src/sys/arch/amiga/dev/fd.c
cvs rdiff -u -r1.41.18.1 -r1.41.18.2 src/sys/arch/amiga/dev/gtsc.c
cvs rdiff -u -r1.57.8.1 -r1.57.8.2 src/sys/arch/amiga/dev/mfc.c
cvs rdiff -u -r1.46.18.1 -r1.46.18.2 src/sys/arch/amiga/dev/mgnsc.c
cvs rdiff -u -r1.40.18.1 -r1.40.18.2 src/sys/arch/amiga/dev/wesc.c
cvs rdiff -u -r1.47.2.1 -r1.47.2.2 src/sys/arch/arc/jazz/fd.c
cvs rdiff -u -r1.5.4.1 -r1.5.4.2 src/sys/arch/arm/amlogic/amlogic_com.c
cvs rdiff -u -r1.15.2.1 -r1.15.2.2 src/sys/arch/arm/at91/at91dbgu.c
cvs rdiff -u -r1.13.2.1 -r1.13.2.2 src/sys/arch/arm/at91/at91usart.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/acorn26/ioc/arcpp.c
diff -u src/sys/arch/acorn26/ioc/arcpp.c:1.15.2.1 src/sys/arch/acorn26/ioc/arcpp.c:1.15.2.2
--- src/sys/arch/acorn26/ioc/arcpp.c:1.15.2.1 Tue Jul 19 06:26:57 2016
+++ src/sys/arch/acorn26/ioc/arcpp.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: arcpp.c,v 1.15.2.1 2016/07/19 06:26:57 pgoyette Exp $ */
+/* $NetBSD: arcpp.c,v 1.15.2.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*-
* Copyright (c) 2001 Ben Harris
@@ -52,7 +52,7 @@
#include <sys/param.h>
-__KERNEL_RCSID(0, "$NetBSD: arcpp.c,v 1.15.2.1 2016/07/19 06:26:57 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: arcpp.c,v 1.15.2.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/conf.h>
#include <sys/device.h>
@@ -191,16 +191,10 @@ arcppopen(dev_t dev, int flag, int mode,
bus_space_tag_t iot;
bus_space_handle_t ioh;
int error, s;
- device_t self;
- self = device_lookup_acquire(&arcpp_cd, minor(dev));
- if (self == NULL)
+ sc = device_lookup_private_acquire(&arcpp_cd, ARCPPUNIT(dev));
+ if (sc == NULL)
return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- error = ENXIO;
- goto out;
- }
#ifdef DIAGNOSTIC
if (sc->sc_state)
@@ -208,10 +202,8 @@ arcppopen(dev_t dev, int flag, int mode,
sc->sc_state);
#endif
- if (sc->sc_state) {
- error = EBUSY;
- goto out;
- }
+ if (sc->sc_state)
+ return EBUSY;
sc->sc_state = ARCPP_INIT;
sc->sc_flags = flags;
@@ -226,13 +218,14 @@ arcppopen(dev_t dev, int flag, int mode,
if (error == EWOULDBLOCK) {
sc->sc_state = 0;
splx(s);
- error = EBUSY;
- goto out;
+ device_release(sc->sc_dev);
+ return EBUSY;
}
if (error) {
sc->sc_state = 0;
splx(s);
- goto out;
+ device_release(sc->sc_dev);
+ return error;
}
sc->sc_inbuf = malloc(ARCPP_BSIZE, M_DEVBUF, M_WAITOK);
@@ -243,10 +236,8 @@ arcppopen(dev_t dev, int flag, int mode,
arcppintr(sc);
splx(s);
+ device_release(sc->sc_dev);
return 0;
-
- out: device_release(self);
- return error;
}
/*
@@ -255,17 +246,9 @@ arcppopen(dev_t dev, int flag, int mode,
int
arcppclose(dev_t dev, int flag, int mode, struct lwp *l)
{
- device_t self;
- struct arcpp_softc *sc;
+ struct arcpp_softc *sc =
+ device_lookup_private_acquire(&arcpp_cd, ARCPPUNIT(dev));
- self = device_lookup_acquire(&arcpp_cd, minor(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(&arcpp_cd, ARCPPUNIT(dev));
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
if (sc->sc_count)
(void) arcpppushbytes(sc);
@@ -274,7 +257,7 @@ arcppclose(dev_t dev, int flag, int mode
sc->sc_state = 0;
free(sc->sc_inbuf, M_DEVBUF);
- device_release(self);
+ device_release(sc->sc_dev);
return 0;
}
@@ -301,19 +284,11 @@ arcpppushbytes(struct arcpp_softc *sc)
int
arcppwrite(dev_t dev, struct uio *uio, int flags)
{
- device_t self;
- struct arcpp_softc *sc;
+ struct arcpp_softc *sc =
+ device_lookup_private_acquire(&arcpp_cd, ARCPPUNIT(dev));
size_t n;
int error = 0;
- self = device_lookup_acquire(&arcpp_cd, minor(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(&arcpp_cd, ARCPPUNIT(dev));
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
while ((n = min(ARCPP_BSIZE, uio->uio_resid)) != 0) {
uiomove(sc->sc_cp = sc->sc_inbuf, n, uio);
sc->sc_count = n;
@@ -325,11 +300,11 @@ arcppwrite(dev_t dev, struct uio *uio, i
*/
uio->uio_resid += sc->sc_count;
sc->sc_count = 0;
- device_release(self);
+ device_release(sc->sc_dev);
return error;
}
}
- device_release(self);
+ device_release(sc->sc_dev);
return 0;
}
Index: src/sys/arch/acorn32/mainbus/fd.c
diff -u src/sys/arch/acorn32/mainbus/fd.c:1.58.2.1 src/sys/arch/acorn32/mainbus/fd.c:1.58.2.2
--- src/sys/arch/acorn32/mainbus/fd.c:1.58.2.1 Tue Jul 19 06:26:57 2016
+++ src/sys/arch/acorn32/mainbus/fd.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: fd.c,v 1.58.2.1 2016/07/19 06:26:57 pgoyette Exp $ */
+/* $NetBSD: fd.c,v 1.58.2.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -82,7 +82,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.58.2.1 2016/07/19 06:26:57 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.58.2.2 2016/07/20 02:06:15 pgoyette Exp $");
#include "opt_ddb.h"
@@ -567,20 +567,11 @@ fd_dev_to_type(struct fd_softc *fd, dev_
void
fdstrategy(struct buf *bp)
{
- device_t self;
- struct fd_softc *fd
+ struct fd_softc *fd =
+ device_lookup_private_acquire(&fd_cd,FDUNIT(bp->b_dev));
int sz;
int s;
- self = device_lookup_acquire(&fd_cd, FDUNIT(bp->b_dev);
- if (self == NULL)
- return;
- fd = device_private(self);
- if (fd == NULL) {
- bp->b_error = ENXIO;
- return;
- }
-
/* Valid unit, controller, and request? */
if (bp->b_blkno < 0 ||
((bp->b_bcount % FDC_BSIZE) != 0 &&
@@ -635,14 +626,14 @@ fdstrategy(struct buf *bp)
}
#endif
splx(s);
- device_release(self);
+ device_release(sc->sc_dev);
return;
done:
/* Toss transfer; we're done early. */
bp->b_resid = bp->b_bcount;
biodone(bp);
- device_release(self);
+ device_release(sc->sc_dev);
}
void
@@ -794,56 +785,40 @@ out_fdc(bus_space_tag_t iot, bus_space_h
int
fdopen(dev_t dev, int flags, int mode, struct lwp *l)
{
- device_t self;
struct fd_softc *fd;
struct fd_type *type;
- int error = 0;
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
+ fd = device_lookup_private_acquire(&fd_cd, FDUNIT(dev));
+ if (fd == NULL)
return ENXIO;
- fd = device_private(self);
- if (fd == NULL) {
- error = ENXIO;
- goto out;
- }
type = fd_dev_to_type(fd, dev);
if (type == NULL) {
- error = ENXIO;
- goto out;
+ device_release(fd->sc_dev);
+ return ENXIO;
}
if ((fd->sc_flags & FD_OPEN) != 0 &&
memcmp(fd->sc_type, type, sizeof(*type))) {
- error = EBUSY;
- goto out;
+ device_release(fd->sc_dev);
+ return EBUSY;
}
fd->sc_type_copy = *type;
fd->sc_type = &fd->sc_type_copy;
fd->sc_cylin = -1;
fd->sc_flags |= FD_OPEN;
- out:
- device_release(self);
- return error;
+ device_release(fd->sc_dev);
+ return 0;
}
int
fdclose(dev_t dev, int flags, int mode, struct lwp *l)
{
- device_t self;
- struct fd_softc *fd;
+ struct fd_softc *fd =
+ device_lookup_private_acquire(&fd_cd, FDUNIT(dev));
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
- return ENXIO;
- fd = device_private(self);
- if (fd == NULL) {
- device_release(self);
- return ENXIO;
- }
fd->sc_flags &= ~FD_OPEN;
fd->sc_opts &= ~(FDOPT_NORETRY|FDOPT_SILENT);
- device_release(self);
+ device_release(fd->sc_dev);
return 0;
}
@@ -1305,7 +1280,8 @@ fdcretry(struct fdc_softc *fdc)
int
fdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
{
- struct fd_softc *fd;
+ struct fd_softc *fd =
+ device_lookup_private_acquire(&fd_cd, FDUNIT(dev));
struct fdformat_parms *form_parms;
struct fdformat_cmd *form_cmd;
struct ne7_fd_formb *fd_formb;
@@ -1315,14 +1291,7 @@ fdioctl(dev_t dev, u_long cmd, void *add
int il[FD_MAX_NSEC + 1];
register int i, j;
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
- return ENXIO;
- fd = device_private(self);
- if (fd == NULL) {
- device_release(self);
- return ENXIO;
- }
+ error = 0;
switch (cmd) {
case DIOCGDINFO:
memset(&buffer, 0, sizeof(buffer));
@@ -1335,26 +1304,24 @@ fdioctl(dev_t dev, u_long cmd, void *add
return EINVAL;
*(struct disklabel *)addr = buffer;
- device_release(self);
- return 0;
+ break;
case DIOCWLABEL:
if ((flag & FWRITE) == 0)
return EBADF;
/* XXX do something */
- device_release(self);
- return 0;
+ break;
case DIOCWDINFO:
if ((flag & FWRITE) == 0)
return EBADF;
error = setdisklabel(&buffer, (struct disklabel *)addr, 0, NULL);
- if (error == 0)
- error = writedisklabel(dev, fdstrategy, &buffer, NULL);
+ if (error)
+ break;
- device_release(self);
- return error;
+ error = writedisklabel(dev, fdstrategy, &buffer, NULL);
+ break;
case FDIOCGETFORMAT:
form_parms = (struct fdformat_parms *)addr;
@@ -1378,23 +1345,28 @@ fdioctl(dev_t dev, u_long cmd, void *add
form_parms->xfer_rate = 250 * 1024;
break;
default:
- return EINVAL;
+ error = EINVAL;
}
- device_release(self);
- return 0;
+ break;
case FDIOCSETFORMAT:
- if((flag & FWRITE) == 0)
- return EBADF; /* must be opened for writing */
+ if((flag & FWRITE) == 0) {
+ error = EBADF; /* must be opened for writing */
+ break;
+ }
form_parms = (struct fdformat_parms *)addr;
- if (form_parms->fdformat_version != FDFORMAT_VERSION)
- return EINVAL; /* wrong version of formatting prog */
+ if (form_parms->fdformat_version != FDFORMAT_VERSION) {
+ error = EINVAL; /* wrong version of formatting prog */
+ break;
+ }
scratch = form_parms->nbps >> 7;
if ((form_parms->nbps & 0x7f) || ffs(scratch) == 0 ||
- scratch & ~(1 << (ffs(scratch)-1)))
+ scratch & ~(1 << (ffs(scratch)-1))) {
/* not a power-of-two multiple of 128 */
- return EINVAL;
+ error = EINVAL;
+ break;
+ }
switch (form_parms->xfer_rate) {
case 500 * 1024:
@@ -1407,17 +1379,22 @@ fdioctl(dev_t dev, u_long cmd, void *add
fd->sc_type->rate = FDC_250KBPS;
break;
default:
- device_release(self);
- return EINVAL;
+ error = EINVAL;
}
+ if (error)
+ break;
if (form_parms->nspt > FD_MAX_NSEC ||
form_parms->fillbyte > 0xff ||
- form_parms->interleave > 0xff)
- return EINVAL;
+ form_parms->interleave > 0xff) {
+ error = EINVAL;
+ break;
+ }
fd->sc_type->sectrac = form_parms->nspt;
- if (form_parms->ntrk != 2 && form_parms->ntrk != 1)
- return EINVAL;
+ if (form_parms->ntrk != 2 && form_parms->ntrk != 1) {
+ error = EINVAL;
+ break;
+ }
fd->sc_type->heads = form_parms->ntrk;
fd->sc_type->seccyl = form_parms->nspt * form_parms->ntrk;
fd->sc_type->secsize = ffs(scratch)-1;
@@ -1428,29 +1405,30 @@ fdioctl(dev_t dev, u_long cmd, void *add
fd->sc_type->step = form_parms->stepspercyl;
fd->sc_type->fillbyte = form_parms->fillbyte;
fd->sc_type->interleave = form_parms->interleave;
-
- device_release(self);
- return 0;
+ break;
case FDIOCFORMAT_TRACK:
- if((flag & FWRITE) == 0)
- return EBADF; /* must be opened for writing */
+ if((flag & FWRITE) == 0) {
+ error = EBADF; /* must be opened for writing */
+ break;
+ }
form_cmd = (struct fdformat_cmd *)addr;
if (form_cmd->formatcmd_version != FDFORMAT_VERSION) {
- device_release(self);
- return EINVAL; /* wrong version of formatting prog */
+ error = EINVAL; /* wrong version of formatting prog */
+ break;
}
+
if (form_cmd->head >= fd->sc_type->heads ||
form_cmd->cylinder >= fd->sc_type->cyls) {
- device_release(self);
- return EINVAL;
+ error = EINVAL;
+ break;
}
fd_formb = malloc(sizeof(struct ne7_fd_formb),
M_TEMP, M_NOWAIT);
if(fd_formb == 0) {
- device_release(self);
- return ENOMEM;
+ error = ENOMEM;
+ break;
}
fd_formb->head = form_cmd->head;
@@ -1477,54 +1455,38 @@ fdioctl(dev_t dev, u_long cmd, void *add
error = fdformat(dev, fd_formb, l);
free(fd_formb, M_TEMP);
-
- device_release(self);
- return error;
+ break;
case FDIOCGETOPTS: /* get drive options */
*(int *)addr = fd->sc_opts;
- device_release(self);
- return 0;
+ break;
case FDIOCSETOPTS: /* set drive options */
fd->sc_opts = *(int *)addr;
- device_release(self);
- return 0;
+ break;
default:
- device_release(self);
- return ENOTTY;
+ error = ENOTTY;
}
+ device_release(fd->sc_dev);
+ return error;
-#ifdef DIAGNOSTIC
- panic("fdioctl: impossible");
-#endif
}
int
fdformat(dev_t dev, struct ne7_fd_formb *finfo, struct lwp *l)
{
int rv = 0;
- device_t self;
- struct fd_softc *fd;
+ struct fd_softc *fd =
+ device_lookup_private_acquire(&fd_cd,FDUNIT(dev));
struct fd_type *type = fd->sc_type;
struct buf *bp;
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
- return ENXIO;
- fd = device_private(self);
- if (fd == NULL) {
- device_release(self);
- return ENXIO;
- }
-
/* set up a buffer header for fdstrategy() */
bp = getiobuf(NULL, false);
if(bp == 0) {
- device_release(self);
+ device_release(fd->sc_dev);
return ENOBUFS;
- }
bp->b_flags = B_PHYS | B_FORMAT;
bp->b_cflags |= BC_BUSY;
bp->b_proc = l->l_proc;
@@ -1565,7 +1527,7 @@ fdformat(dev_t dev, struct ne7_fd_formb
} else if (bp->b_error != 0)
rv = bp->b_error;
putiobuf(bp);
- device_release(self);
+ device_release(fd->sc_dev);
return rv;
}
Index: src/sys/arch/acorn32/podulebus/asc.c
diff -u src/sys/arch/acorn32/podulebus/asc.c:1.20.4.1 src/sys/arch/acorn32/podulebus/asc.c:1.20.4.2
--- src/sys/arch/acorn32/podulebus/asc.c:1.20.4.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/acorn32/podulebus/asc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: asc.c,v 1.20.4.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: asc.c,v 1.20.4.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 2001 Richard Earnshaw
@@ -98,7 +98,7 @@
#include <sys/param.h>
-__KERNEL_RCSID(0, "$NetBSD: asc.c,v 1.20.4.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: asc.c,v 1.20.4.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -336,15 +336,14 @@ void
asc_dump(void)
{
int i;
- device_t self;
struct asc_softc *sc;
for (i = 0; i < asc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(&asc_cd, i);
- sc = device_private(self);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(&asc_cd, i);
+ if (sc != NULL) {
sbic_dump(&sc->sc_softc);
- device_release(self);
+ device_release(sc->sc_dev);
+ }
}
}
Index: src/sys/arch/alpha/pci/mcpcia.c
diff -u src/sys/arch/alpha/pci/mcpcia.c:1.29.28.1 src/sys/arch/alpha/pci/mcpcia.c:1.29.28.2
--- src/sys/arch/alpha/pci/mcpcia.c:1.29.28.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/alpha/pci/mcpcia.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: mcpcia.c,v 1.29.28.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: mcpcia.c,v 1.29.28.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*-
* Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: mcpcia.c,v 1.29.28.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mcpcia.c,v 1.29.28.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -303,7 +303,6 @@ die_heathen_dog(void *arg)
void
mcpcia_config_cleanup(void)
{
- device_t self;
volatile uint32_t ctl;
struct mcpcia_softc *mcp;
struct mcpcia_config *ccp;
@@ -314,16 +313,13 @@ mcpcia_config_cleanup(void)
* Turn on Hard, Soft error interrupts. Maybe i2c too.
*/
for (i = 0; i < mcpcia_cd.cd_ndevs; i++) {
- self = device_lookup_acquire(&mcpcia_cd, i);
- if (self == NULL)
+ mcp = device_lookup_private_acquire(&mcpcia_cd, i);
+ if (mcp == NULL)
continue;
- if ((mcp = device_private(self)) == NULL) {
- device_release(self);
- continue;
- }
+
ccp = mcp->mcpcia_cc;
if (ccp == NULL) {
- device_release(self);
+ device_release(mcp->mcpcia_dev);
continue;
}
ctl = REGVAL(MCPCIA_INT_MASK0(ccp));
@@ -333,8 +329,6 @@ mcpcia_config_cleanup(void)
/* force stall while write completes */
ctl = REGVAL(MCPCIA_INT_MASK0(ccp));
-
- device_release(self);
}
#ifdef TEST_PROBE_DEATH
(void) timeout (die_heathen_dog, &mcpcia_console_configuration,
Index: src/sys/arch/alpha/tc/ioasic.c
diff -u src/sys/arch/alpha/tc/ioasic.c:1.46.10.1 src/sys/arch/alpha/tc/ioasic.c:1.46.10.2
--- src/sys/arch/alpha/tc/ioasic.c:1.46.10.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/alpha/tc/ioasic.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: ioasic.c,v 1.46.10.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: ioasic.c,v 1.46.10.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: ioasic.c,v 1.46.10.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ioasic.c,v 1.46.10.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -215,19 +215,9 @@ void
ioasic_intr_establish(device_t ioa, void *cookie, tc_intrlevel_t level,
int (*func)(void *), void *arg)
{
- device_t self;
- struct ioasic_softc *sc;
+ struct ioasic_softc *sc = device_lookup_private_acquire(&ioasic_cd,0);
u_long dev, i, imsk;
- self = device_lookup_acquire(&ioasic_cd, 0);
- if (self == NULL)
- return;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return;
- }
-
dev = (u_long)cookie;
#ifdef DIAGNOSTIC
/* XXX check cookie. */
@@ -249,26 +239,15 @@ ioasic_intr_establish(device_t ioa, void
imsk = bus_space_read_4(sc->sc_bst, sc->sc_bsh, IOASIC_IMSK);
imsk |= ioasic_devs[i].iad_intrbits;
bus_space_write_4(sc->sc_bst, sc->sc_bsh, IOASIC_IMSK, imsk);
-
- device_release(self);
+ device_release(sc->sc_dev;
}
void
ioasic_intr_disestablish(device_t ioa, void *cookie)
{
- device_t self;
- struct ioasic_softc *sc;
+ struct ioasic_softc *sc = device_lookup_private_acquire(&ioasic_cd,0);
u_long dev, i, imsk;
- self = device_lookup_acquire(&ioasic_cd, 0);
- if (self == NULL)
- return;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return;
- }
-
dev = (u_long)cookie;
#ifdef DIAGNOSTIC
/* XXX check cookie. */
@@ -290,8 +269,7 @@ ioasic_intr_disestablish(device_t ioa, v
ioasicintrs[dev].iai_func = ioasic_intrnull;
ioasicintrs[dev].iai_arg = (void *)dev;
-
- device_release(self);
+ device_release(sc->sc_dev);
}
int
Index: src/sys/arch/amiga/dev/afsc.c
diff -u src/sys/arch/amiga/dev/afsc.c:1.44.18.1 src/sys/arch/amiga/dev/afsc.c:1.44.18.2
--- src/sys/arch/amiga/dev/afsc.c:1.44.18.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/afsc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: afsc.c,v 1.44.18.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: afsc.c,v 1.44.18.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -58,7 +58,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: afsc.c,v 1.44.18.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: afsc.c,v 1.44.18.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -221,19 +221,15 @@ afsc_dmaintr(void *arg)
void
afsc_dump(void)
{
- device_t self;
extern struct cfdriver afsc_cd;
struct siop_softc *sc;
int i;
for (i = 0; i < afsc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(&afsc_cd, i);
- if (self == NULL)
- continue;
- sc = device_private(self);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(&afsc_cd, i);
+ if (sc != NULL) {
siop_dump(sc);
- device_release(self);
+ device_release(sc->sc_dev);
}
}
#endif
Index: src/sys/arch/amiga/dev/ahsc.c
diff -u src/sys/arch/amiga/dev/ahsc.c:1.38.18.1 src/sys/arch/amiga/dev/ahsc.c:1.38.18.2
--- src/sys/arch/amiga/dev/ahsc.c:1.38.18.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/ahsc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: ahsc.c,v 1.38.18.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: ahsc.c,v 1.38.18.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ahsc.c,v 1.38.18.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ahsc.c,v 1.38.18.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -375,19 +375,16 @@ ahsc_dmanext(struct sbic_softc *dev)
void
ahsc_dump(void)
{
- device_t self;
extern struct cfdriver ahsc_cd;
struct sbic_softc *sc;
int i;
for (i = 0; i < ahsc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(&ahsc_cd, i);
- if (self == NULL)
- continue;
- sc = device_private(self);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(&ahsc_cd, i);
+ if (sc != NULL) {
sbic_dump(sc);
- device_release(self);
+ device_release(sc->sc_dev);
+ }
}
}
#endif
Index: src/sys/arch/amiga/dev/atzsc.c
diff -u src/sys/arch/amiga/dev/atzsc.c:1.43.18.1 src/sys/arch/amiga/dev/atzsc.c:1.43.18.2
--- src/sys/arch/amiga/dev/atzsc.c:1.43.18.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/atzsc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: atzsc.c,v 1.43.18.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: atzsc.c,v 1.43.18.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: atzsc.c,v 1.43.18.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: atzsc.c,v 1.43.18.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -383,19 +383,16 @@ atzsc_dmanext(struct sbic_softc *dev)
void
atzsc_dump(void)
{
- device_t self;
extern struct cfdriver atzsc_cd;
struct sbic_softc *sc;
int i;
for (i = 0; i < atzsc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(&atzsc_cd, i);
- if (self == NULL)
- continue;
- sc = device_private(&atzsc_cd, i);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(&atzsc_cd, i);
+ if (sc != NULL) {
sbic_dump(sc);
- device_release(self);
+ device_release(sc->sc_dev);
+ }
}
}
#endif
Index: src/sys/arch/amiga/dev/bppcsc.c
diff -u src/sys/arch/amiga/dev/bppcsc.c:1.3.18.1 src/sys/arch/amiga/dev/bppcsc.c:1.3.18.2
--- src/sys/arch/amiga/dev/bppcsc.c:1.3.18.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/bppcsc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: bppcsc.c,v 1.3.18.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: bppcsc.c,v 1.3.18.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bppcsc.c,v 1.3.18.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bppcsc.c,v 1.3.18.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -203,19 +203,16 @@ bppcsc_dmaintr(void *arg)
void
bppcsc_dump(void)
{
- device_t self;
extern struct cfdriver bppcsc_cd;
struct siop_softc *sc;
int i;
for (i = 0; i < bppcsc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(&bppcsc_cd, i);
- if (self == NULL)
- continue;
- sc = device_private(self);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(&bppcsc_cd, i);
+ if (sc != NULL) {
siop_dump(sc);
- device_release(self);
+ device_release(sc->sc_dev);
+ }
}
}
#endif
Index: src/sys/arch/amiga/dev/cbiiisc.c
diff -u src/sys/arch/amiga/dev/cbiiisc.c:1.21.18.1 src/sys/arch/amiga/dev/cbiiisc.c:1.21.18.2
--- src/sys/arch/amiga/dev/cbiiisc.c:1.21.18.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/cbiiisc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: cbiiisc.c,v 1.21.18.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: cbiiisc.c,v 1.21.18.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -58,7 +58,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cbiiisc.c,v 1.21.18.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cbiiisc.c,v 1.21.18.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -199,19 +199,16 @@ cbiiisc_dmaintr(void *arg)
void
cbiiisc_dump(void)
{
- device_t self;
extern struct cfdriver cbiiisc_cd;
struct siop_softc *sc;
int i;
for (i = 0; i < cbiiisc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(&cbiiisc_cd, i);
- if (self == NULL)
- continue;
- sc = device_private(&cbiiisc_cd, i);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(&cbiiisc_cd, i);
+ if (sc != NULL) {
siopng_dump(sc);
- device_release(self);
+ device_release(sc->sc_dev);
+ }
}
}
#endif
Index: src/sys/arch/amiga/dev/drsc.c
diff -u src/sys/arch/amiga/dev/drsc.c:1.33.10.1 src/sys/arch/amiga/dev/drsc.c:1.33.10.2
--- src/sys/arch/amiga/dev/drsc.c:1.33.10.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/drsc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: drsc.c,v 1.33.10.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: drsc.c,v 1.33.10.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1996 Ignatios Souvatzis
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drsc.c,v 1.33.10.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drsc.c,v 1.33.10.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -231,19 +231,16 @@ drsc_handler(void)
void
drsc_dump(void)
{
- device_t self;
extern struct cfdriver drsc_cd;
struct siop_softc *sc;
int i;
for (i = 0; i < drsc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(&drsc_cd, i);
- if (self == NULL)
- continue;
- sc = device_private(self);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(&drsc_cd, i);
+ if (sc != NULL) {
siop_dump(sc);
- device_release(self);
+ device_release(sc->sc_dev);
+ }
}
}
#endif
Index: src/sys/arch/amiga/dev/fd.c
diff -u src/sys/arch/amiga/dev/fd.c:1.96.2.1 src/sys/arch/amiga/dev/fd.c:1.96.2.2
--- src/sys/arch/amiga/dev/fd.c:1.96.2.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/fd.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: fd.c,v 1.96.2.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: fd.c,v 1.96.2.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.96.2.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.96.2.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -470,7 +470,6 @@ fdattach(device_t parent, device_t self,
int
fdopen(dev_t dev, int flags, int devtype, struct lwp *l)
{
- device_t self;
struct fd_softc *sc;
int wasopen, fwork, error, s;
@@ -479,15 +478,12 @@ fdopen(dev_t dev, int flags, int devtype
if (FDPART(dev) >= FDMAXPARTS)
return(ENXIO);
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
- return ENXIO;
- if ((sc = device_private(self)) == NULL) {
- device_release(self);
+ if ((sc = getsoftc(fd_cd, FDUNIT(dev))) == NULL) {
+ device_release(sc->sc_dev);
return(ENXIO);
}
if (sc->flags & FDF_NOTRACK0) {
- device_release(self);
+ device_release(sc->sc_dev)
return(ENXIO);
}
if (sc->cachep == NULL)
@@ -546,8 +542,7 @@ done:
*/
if (error && wasopen == 0)
sc->openpart = -1;
-
- device_release(self);
+ device_release(sc->sc_dev);
return(error);
}
@@ -555,21 +550,13 @@ done:
int
fdclose(dev_t dev, int flags, int devtype, struct lwp *l)
{
- device_t self;
struct fd_softc *sc;
int s;
#ifdef FDDEBUG
printf("fdclose()\n");
#endif
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
+ sc = getsoftc(fd_cd, FDUNIT(dev));
s = splbio();
if (sc->flags & FDF_MOTORON) {
sc->flags |= FDF_WMOTOROFF;
@@ -579,83 +566,78 @@ fdclose(dev_t dev, int flags, int devtyp
}
sc->openpart = -1;
splx(s);
-
- device_release(self);
+ device_release(sc->sc_dev);
return(0);
}
int
fdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
{
- device_t self;
struct fd_softc *sc;
int error, wlab;
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
+ sc = getsoftc(fd_cd, FDUNIT(dev));
+
if ((sc->flags & FDF_HAVELABEL) == 0) {
- device_release(self);
+ device_release(sc->sc_dev);
return(EBADF);
}
error = disk_ioctl(&sc->dkdev, dev, cmd, addr, flag, l);
if (error != EPASSTHROUGH) {
- device_release(self);
+ device_release(sc->sc_dev);
return error;
}
+ error = 0;
switch (cmd) {
case DIOCSBAD:
- device_release(self);
- return(EINVAL);
+ error = EINVAL;
+ break;
case DIOCSRETRIES:
if (*(int *)addr < 0)
- return(EINVAL);
- sc->retries = *(int *)addr;
- device_release(self);
- return(0);
+ error = EINVAL;
+ else
+ sc->retries = *(int *)addr;
+ break;
case DIOCSSTEP:
- if (*(int *)addr < FDSTEPDELAY)
- return(EINVAL);
- sc->dkdev.dk_label->d_trkseek = sc->stepdelay = *(int *)addr;
- device_release(self);
- return(0);
+ if (*(int *)addr < FDSTEPDELAY) {
+ error = EINVAL;
+ else
+ sc->dkdev.dk_label->d_trkseek = sc->stepdelay =
+ *(int *)addr;
+ break;
case DIOCSDINFO:
if ((flag & FWRITE) == 0)
- return(EBADF);
- error = fdsetdisklabel(sc, (struct disklabel *)addr);
- device_release(self);
- return error;
+ error = EBADF;
+ else
+ error = fdsetdisklabel(sc, (struct disklabel *)addr);
+ break;
case DIOCWDINFO:
if ((flag & FWRITE) == 0)
- return(EBADF);
- if ((error = fdsetdisklabel(sc, (struct disklabel *)addr)) != 0)
- return(error);
- wlab = sc->wlabel;
- sc->wlabel = 1;
- error = fdputdisklabel(sc, dev);
- sc->wlabel = wlab;
- device_release(self);
- return(error);
+ error = EBADF;
+ else {
+ error = fdsetdisklabel(sc, (struct disklabel *)addr));
+ if (error == 0) {
+ wlab = sc->wlabel;
+ sc->wlabel = 1;
+ error = fdputdisklabel(sc, dev);
+ sc->wlabel = wlab;
+ }
+ }
+ break;
case DIOCWLABEL:
if ((flag & FWRITE) == 0)
- return(EBADF);
- sc->wlabel = *(int *)addr;
- device_release(self);
- device_release(self);
- return(0);
+ error = EBADF;
+ else
+ sc->wlabel = *(int *)addr;
+ break;
case DIOCGDEFLABEL:
fdgetdefaultlabel(sc, (struct disklabel *)addr, FDPART(dev));
- device_release(self);
- return(0);
+ break;
default:
- device_release(self);
- return(ENOTTY);
+ error = ENOTTY;
}
+ device_release(sc->sc_dev);
+ return error;
}
int
@@ -698,20 +680,11 @@ fdidxintr(void)
void
fdstrategy(struct buf *bp)
{
- device_t self;
struct fd_softc *sc;
int unit, s;
unit = FDUNIT(bp->b_dev);
-
- self = device_lookup_acquire(&fd_cd, unit);
- if (self == NULL)
- return;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return;
- }
+ sc = getsoftc(fd_cd, unit);
#ifdef FDDEBUG
printf("fdstrategy: %p\n", bp);
@@ -742,12 +715,12 @@ fdstrategy(struct buf *bp)
bufq_put(sc->bufq, bp);
fdstart(sc);
splx(s);
- device_release(self);
+ device_release(sc->sc_dev);
return;
done:
bp->b_resid = bp->b_bcount;
biodone(bp);
- device_release(self);
+ device_release(sc->sc_dev);
}
/*
@@ -1648,7 +1621,6 @@ nobuf:
void
fdfindwork(int unit)
{
- device_t self;
struct fd_softc *ssc, *sc;
int i, last;
@@ -1674,13 +1646,9 @@ fdfindwork(int unit)
i = -1;
continue;
}
- self = device_lookup_acquire(&fd_cd, i);
- if (self == NULL)
- continue;
- if ((sc = device_private(self)) == NULL) {
- device_release(self);
+ if ((sc = device_lookup_private_acquire(&fd_cd, i)) == NULL)
continue;
- }
+
/*
* if unit has requested to be turned off
* and it has no buf's queued do it now
@@ -1700,7 +1668,7 @@ fdfindwork(int unit)
* flushing, quit
*/
if (fdc_indma) {
- device_release(self);
+ device_release(sc->sc_dev);
return;
}
}
@@ -1710,11 +1678,13 @@ fdfindwork(int unit)
*/
if (ssc == NULL && bufq_peek(sc->bufq) != NULL)
ssc = sc;
+ else
+ device_release(sc->sc_dev);
}
- if (ssc)
+ if (ssc) {
fdstart(ssc);
-
- device_release(self);
+ device_release(ssc->sc_dev);
+ }
}
/*
@@ -1723,15 +1693,10 @@ fdfindwork(int unit)
void
fdminphys(struct buf *bp)
{
- device_t self;
struct fd_softc *sc;
int sec, toff, tsz;
- self = device_lookup_acquire(&fd_cd, FDUNIT(bp->b_dev));
- if (self == NULL)
- panic("fdminphys: no device_t");
- sc = device_private(self);
- if (sc == NULL)
+ if ((sc = getsoftc(fd_cd, FDUNIT(bp->b_dev))) == NULL)
panic("fdminphys: couldn't get softc");
sec = bp->b_blkno % sc->nsectors;
@@ -1746,7 +1711,7 @@ fdminphys(struct buf *bp)
printf(" after %ld\n", bp->b_bcount);
#endif
minphys(bp);
- device_release(self);
+ device_release(sc->sc_dev);
}
/*
Index: src/sys/arch/amiga/dev/gtsc.c
diff -u src/sys/arch/amiga/dev/gtsc.c:1.41.18.1 src/sys/arch/amiga/dev/gtsc.c:1.41.18.2
--- src/sys/arch/amiga/dev/gtsc.c:1.41.18.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/gtsc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: gtsc.c,v 1.41.18.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: gtsc.c,v 1.41.18.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gtsc.c,v 1.41.18.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gtsc.c,v 1.41.18.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -401,19 +401,16 @@ gtsc_dmanext(struct sbic_softc *dev)
void
gtsc_dump(void)
{
- device_t self;
extern struct cfdriver gtsc_cd;
struct sbic_softc *sc;
int i;
for (i = 0; i < gtsc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(>sc_cd, i);
- if (self == NULL)
- continue;
- sc = device_private(self);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(>sc_cd, i);
+ if (sc != NULL) {
sbic_dump(sc);
- device_release(self);
+ device_release(sc->sc_dev);
+ }
}
}
#endif
Index: src/sys/arch/amiga/dev/mfc.c
diff -u src/sys/arch/amiga/dev/mfc.c:1.57.8.1 src/sys/arch/amiga/dev/mfc.c:1.57.8.2
--- src/sys/arch/amiga/dev/mfc.c:1.57.8.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/mfc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: mfc.c,v 1.57.8.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: mfc.c,v 1.57.8.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -55,7 +55,7 @@
#include "opt_kgdb.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mfc.c,v 1.57.8.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfc.c,v 1.57.8.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -487,7 +487,6 @@ mfcprint(void *aux, const char *pnp)
int
mfcsopen(dev_t dev, int flag, int mode, struct lwp *l)
{
- device_t self;
struct tty *tp;
struct mfcs_softc *sc;
int unit, error;
@@ -495,15 +494,11 @@ mfcsopen(dev_t dev, int flag, int mode,
error = 0;
unit = dev & 0x1f;
- self = device_lookup_acquire(&mfcs_cd, unit);
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL || (mfcs_active & (1 << unit)) == 0) {
- device_release(self);
+ sc = device_lookup_private_acquire(&mfcs_cd, unit);
+ if ((mfcs_active & (1 << unit)) == 0) {
+ device_release(sc->sc_dev);
return (ENXIO);
}
-
if (sc->sc_tty)
tp = sc->sc_tty;
else {
@@ -517,10 +512,9 @@ mfcsopen(dev_t dev, int flag, int mode,
tp->t_hwiflow = mfcshwiflow;
if (kauth_authorize_device_tty(l->l_cred, KAUTH_DEVICE_TTY_OPEN, tp)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EBUSY);
}
-
mutex_spin_enter(&tty_lock);
if ((tp->t_state & TS_ISOPEN) == 0 && tp->t_wopen == 0) {
ttychars(tp);
@@ -569,6 +563,7 @@ mfcsopen(dev_t dev, int flag, int mode,
tp->t_wopen--;
if (error) {
mutex_spin_exit(&tty_lock);
+ device_release(sc->sc_dev);
return(error);
}
}
@@ -584,8 +579,7 @@ done:
*/
tp->t_dev = dev;
mutex_spin_exit(&tty_lock);
-
- device_release(self);
+ device_release(sc->sc_dev);
return tp->t_linesw->l_open(dev, tp);
}
@@ -593,24 +587,14 @@ done:
int
mfcsclose(dev_t dev, int flag, int mode, struct lwp *l)
{
- device_t self;
struct tty *tp;
int unit;
- struct mfcs_softc *sc;
- struct mfc_softc *scc;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, dev & 31);
+ struct mfc_softc *scc= sc->sc_mfc;
unit = dev & 31;
- self = device_lookup_acquire(&mfcs_cd, unit);
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- scc = sc->sc_mfc;
-
tp = sc->sc_tty;
tp->t_linesw->l_close(tp, flag);
sc->sc_duart->ch_cr = 0x70; /* stop break */
@@ -639,136 +623,101 @@ mfcsclose(dev_t dev, int flag, int mode,
sc->sc_tty = (struct tty *) NULL;
}
#endif
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
int
mfcsread(dev_t dev, struct uio *uio, int flag)
{
- device_t self;
- struct mfcs_softc *sc;
- struct tty *tp;
- int val;
+ int error;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, dev & 31);
+ struct tty *tp = sc->sc_tty;
- self = device_lookup_acquire(&mfcs_cd, dev & 31);
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- tp = sc->sc_tty;
if (tp == NULL) {
- device_release(self);
+ device_release(sc->sc_dev);
return(ENXIO);
}
- val = tp->t_linesw->l_read(tp, uio, flag);
- device_release(self);
- return val;
+ error = tp->t_linesw->l_read(tp, uio, flag);
+
+ device_release(sc->sc_dev);
+ return error;
}
int
mfcswrite(dev_t dev, struct uio *uio, int flag)
{
- struct mfcs_softc *sc;
- struct tty *tp;= sc->sc_tty;
+ int error;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, dev & 31);
+ struct tty *tp = sc->sc_tty;
- self = device_lookup_acquire(&mfcs_cd, dev & 31);
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- tp = sc->sc_tty;
if (tp == NULL) {
- device_release(self);
+ device_release(sc->sc_dev);
return(ENXIO);
}
- val = tp->t_linesw->l_write(tp, uio, flag);
- device_release(self);
- return val;
+ error = tp->t_linesw->l_write(tp, uio, flag);
+
+ device_release(sc->sc_dev);
+ return error;
}
int
mfcspoll(dev_t dev, int events, struct lwp *l)
{
- struct mfcs_softc *sc;
- struct tty *tp;= sc->sc_tty;
+ int error;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, dev & 31);
+ struct tty *tp = sc->sc_tty;
- self = device_lookup_acquire(&mfcs_cd, dev & 31);
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- tp = sc->sc_tty;
if (tp == NULL) {
- device_release(self);
+ device_release(sc->sc_dev);
return(ENXIO);
}
- val = tp->t_linesw->l_poll(tp, uio, flag);
- device_release(self);
- return val;
+ error = ((*tp->t_linesw->l_poll)(tp, events, l));
+
+ device_release(sc->sc_dev);
+ return error;
}
struct tty *
mfcstty(dev_t dev)
{
- device_t self;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, dev & 31);
struct tty *tty;
- struct mfcs_softc *sc;
- self = device_lookup_acquire(&mfcs_cd, dev & 31);
- if (self == NULL)
- return NULL;
- sc = device_private(self);
- if (sc != NULL)
- tty = sc->sc_tty;
-
- device_free(self);
+ tty = sc->sc_tty;
+ device_release(sc->sc_dev);
return tty;
}
int
mfcsioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
{
- device_t self;
register struct tty *tp;
register int error;
- struct mfcs_softc *sc;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, dev & 31);
- self = device_lookup_acquire(&mfcs_cd, dev & 31);
- if (self == NULL)
- return ENXIO;
- sc = = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
tp = sc->sc_tty;
if (!tp) {
- device_release(self);
+ device_release(sc->sc_dev);
return ENXIO;
}
error = tp->t_linesw->l_ioctl(tp, cmd, data, flag, l);
if (error != EPASSTHROUGH) {
- device_release(self);
+ device_release(sc->sc_dev);
return(error);
}
-
error = ttioctl(tp, cmd, data, flag, l);
if (error != EPASSTHROUGH) {
- device_release(self);
+ device_release(sc->sc_dev);
return(error);
}
-
+ error = 0;
switch (cmd) {
case TIOCSBRK:
sc->sc_duart->ch_cr = 0x60; /* start break */
@@ -807,43 +756,33 @@ mfcsioctl(dev_t dev, u_long cmd, void *d
case TIOCSFLAGS:
error = kauth_authorize_device_tty(l->l_cred,
KAUTH_DEVICE_TTY_PRIVSET, tp);
- if (error != 0) {
- device_release(self);
- return(EPERM);
+ if (error != 0)
+ error = EPERM;
+ else {
+ sc->swflags = *(int *)data;
+ sc->swflags &= /* only allow valid flags */
+ (TIOCFLAG_SOFTCAR | TIOCFLAG_CLOCAL | TIOCFLAG_CRTSCTS);
+ /* XXXX need to change duart parameters? */
}
-
- sc->swflags = *(int *)data;
- sc->swflags &= /* only allow valid flags */
- (TIOCFLAG_SOFTCAR | TIOCFLAG_CLOCAL | TIOCFLAG_CRTSCTS);
- /* XXXX need to change duart parameters? */
break;
default:
- return(EPASSTHROUGH);
+ error = EPASSTHROUGH;
}
- device_release(self);
- return(0);
+ device_release(sc->sc_dev);
+ return error;
}
int
mfcsparam(struct tty *tp, struct termios *t)
{
- device_t self;
int cflag, unit, ospeed;
- struct mfcs_softc *sc;
- struct mfc_softc *scc;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, tp->t_dev & 31);
+ struct mfc_softc *scc= sc->sc_mfc;
cflag = t->c_cflag;
unit = tp->t_dev & 31;
- self = device_lookup_acquire(&mfscd_cd, unit);
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- scc = = sc->sc_mfc;
if (sc->flags & CT_USED) {
--scc->ct_usecnt;
sc->flags &= ~CT_USED;
@@ -870,7 +809,7 @@ mfcsparam(struct tty *tp, struct termios
}
/* XXXX 68681 duart could handle split speeds */
if (ospeed < 0 || (t->c_ispeed && t->c_ispeed != t->c_ospeed)) {
- device_release(self);
+ device_release(sc->sc_dev);
return(EINVAL);
}
@@ -902,53 +841,35 @@ mfcsparam(struct tty *tp, struct termios
(void)mfcsmctl(tp->t_dev, TIOCM_DTR | TIOCM_RTS, DMSET);
sc->sc_duart->ch_csr = ospeed;
}
- device_release(self);
+ device_release(sc->sc_dev);
return(0);
}
int
mfcshwiflow(struct tty *tp, int flag)
{
- device_t self;
- struct mfcs_softc *sc;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, tp->t_dev & 31);
int unit = tp->t_dev & 1;
- self = device_lookup_acquire(&mfcs_cd, tp->t_dev & 31);
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
if (flag)
sc->sc_regs->du_btrst = 1 << unit;
else
sc->sc_regs->du_btst = 1 << unit;
-
- device_release(self);
+ device_release(sc->sc_dev);
return 1;
}
void
mfcsstart(struct tty *tp)
{
- device_t self;
int cc, s, unit;
- struct mfcs_softc *sc;
- struct mfc_softc *scc;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, tp->t_dev & 31);
+ struct mfc_softc *scc= sc->sc_mfc;
- self = device_lookup_acquire(&mfcs_cd, tp->t_dev & 31);
- if (self == NULL)
- return;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return;
- }
- scc = sc->sc_mfc;
if ((tp->t_state & TS_ISOPEN) == 0) {
- device_release(self);
+ device_release(sc->sc_dev);
return;
}
@@ -993,7 +914,7 @@ mfcsstart(struct tty *tp)
}
out:
splx(s);
- device_release(self);
+ device_release(sc->sc_dev);
}
/*
@@ -1016,19 +937,10 @@ mfcsstop(struct tty *tp, int flag)
int
mfcsmctl(dev_t dev, int bits, int how)
{
- device_t self;
int unit, s;
u_char ub = 0;
- struct mfcs_softc *sc;
-
- self = device_lookup_acquire(&mfcs_cd, dev & 31);
- if (self == NULL)
- return 0;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return 0;
- }
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, dev & 31);
unit = dev & 1;
@@ -1080,7 +992,7 @@ mfcsmctl(dev_t dev, int bits, int how)
if (sc->sc_regs->pad26 & (1 << unit))
bits |= TIOCM_RI;
- device_release(self);
+ device_release(sc->sc_dev);
return(bits);
}
@@ -1091,7 +1003,6 @@ mfcsmctl(dev_t dev, int bits, int how)
int
mfcintr(void *arg)
{
- device_t self;
struct mfc_softc *scc = arg;
struct mfcs_softc *sc;
struct mfc_regs *regs;
@@ -1105,9 +1016,7 @@ mfcintr(void *arg)
return (0);
unit = device_unit(scc->sc_dev) * 2;
if (istat & 0x02) { /* channel A receive interrupt */
- self = device_lookup_acquire(&mfcs_cd, unit);
- KASSERT(self != NULL);
- sc = device_private(self);
+ sc = device_lookup_private_acquire(&mfcs_cd, unit);
while (1) {
c = regs->du_sra << 8;
if ((c & 0x0100) == 0)
@@ -1126,12 +1035,10 @@ mfcintr(void *arg)
if (c & 0x1000)
regs->du_cra = 0x40;
}
- device_release(self);
+ device_release(sc->sc_dev);
}
if (istat & 0x20) { /* channel B receive interrupt */
- self = device_lookup_acquire(&mfcs_cd, unit);
- KASSERT(self != NULL);
- sc = device_private(self);
+ sc = device_lookup_private_acquire(&mfcs_cd, unit + 1);
while (1) {
c = regs->du_srb << 8;
if ((c & 0x0100) == 0)
@@ -1150,12 +1057,10 @@ mfcintr(void *arg)
if (c & 0x1000)
regs->du_crb = 0x40;
}
- device_release(self);
+ device_release(sc->sc_dev);
}
if (istat & 0x01) { /* channel A transmit interrupt */
- self = device_lookup_acquire(&mfcs_cd, unit);
- KASSERT(self != NULL);
- sc = device_private(self);
+ sc = device_lookup_private_acquire(&mfcs_cd, unit);
tp = sc->sc_tty;
if (sc->ptr == sc->end) {
tp->t_state &= ~(TS_BUSY | TS_FLUSH);
@@ -1165,12 +1070,10 @@ mfcintr(void *arg)
}
else
regs->du_tba = *sc->ptr++;
- device_release(self);
+ device_release(sc->sc_dev);
}
if (istat & 0x10) { /* channel B transmit interrupt */
- self = device_lookup_acquire(&mfcs_cd, unit);
- KASSERT(self != NULL);
- sc = device_private(self);
+ sc = device_lookup_private_acquire(&mfcs_cd, unit + 1);
tp = sc->sc_tty;
if (sc->ptr == sc->end) {
tp->t_state &= ~(TS_BUSY | TS_FLUSH);
@@ -1180,7 +1083,7 @@ mfcintr(void *arg)
}
else
regs->du_tbb = *sc->ptr++;
- device_release(self);
+ device_release(sc->sc_dev);
}
if (istat & 0x80) { /* input port change interrupt */
c = regs->du_ipcr;
@@ -1192,16 +1095,11 @@ mfcintr(void *arg)
void
mfcsxintr(int unit)
{
- device_t self;
int s1, s2, ovfl;
- struct mfcs_softc *sc;
+ struct mfcs_softc *sc =
+ device_lookup_private_acquire(&mfcs_cd, unit);
struct tty *tp = sc->sc_tty;
- self = device_lookup_acquire(&mfcs_cd, unit);
- if (self == NULL)
- return;
- sc = device_private(self);
-
/*
* Make sure we're not interrupted by another
* vbl, but allow level6 ints
@@ -1237,23 +1135,17 @@ mfcsxintr(int unit)
sc->sc_regs->du_btst = 1 << unit; /* XXXX */
}
splx(s1);
- device_release(self);
+ device_release(sc->sc_dev);
}
void
mfcseint(int unit, int stat)
{
- device_t self;
- struct mfcs_softc *sc;
+ struct mfcs_softc *sc = device_lookup_private_acquire(&mfcs_cd, unit);
struct tty *tp;
u_char ch;
int c;
- self = device_lookup_acquire(&mfcs_cd, unit);
- if (self == NULL)
- return;
- sc = device_private(self);
-
tp = sc->sc_tty;
ch = stat & 0xff;
c = ch;
@@ -1268,7 +1160,7 @@ mfcseint(int unit, int stat)
if (kgdb_dev == makedev(maj, unit) && c == FRAME_END)
kgdb_connect(0); /* trap into kgdb */
#endif
- device_release(self);
+ device_release(sc->sc_dev);
return;
}
@@ -1285,8 +1177,7 @@ mfcseint(int unit, int stat)
device_xname(device_lookup_private(&mfcs_cd, unit)));
tp->t_linesw->l_rint(c, tp);
-
- device_release(self);
+ device_release(sc->sc_dev);
}
/*
@@ -1298,29 +1189,19 @@ mfcseint(int unit, int stat)
void
mfcsmint(int unit)
{
- device_t self;
struct tty *tp;
- struct mfcs_softc *sc;
+ struct mfcs_softc *sc = device_lookup_private_acquire(&mfcs_cd, unit);
u_char stat, last, istat;
- self = device_lookup_acquire(&mfcs_cd, unit);
- if (self == NULL)
- return;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return;
- }
tp = sc->sc_tty;
if (!tp) {
- device_release(self);
+ device_release(sc->sc-dev);
return;
}
-
if ((tp->t_state & TS_ISOPEN) == 0 && tp->t_wopen == 0) {
sc->rptr = sc->wptr = sc->inbuf;
sc->incnt = 0;
- device_release(self);
+ device_release(sc->sc_dev);
return;
}
/*
@@ -1345,7 +1226,7 @@ mfcsmint(int unit)
sc->sc_regs->du_btrst = 0x0a << (unit & 1);
}
}
- device_release(self);
+ device_release(sc->sc_dev);
}
void
Index: src/sys/arch/amiga/dev/mgnsc.c
diff -u src/sys/arch/amiga/dev/mgnsc.c:1.46.18.1 src/sys/arch/amiga/dev/mgnsc.c:1.46.18.2
--- src/sys/arch/amiga/dev/mgnsc.c:1.46.18.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/mgnsc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: mgnsc.c,v 1.46.18.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: mgnsc.c,v 1.46.18.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -58,7 +58,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mgnsc.c,v 1.46.18.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mgnsc.c,v 1.46.18.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -207,19 +207,16 @@ mgnsc_dmaintr(void *arg)
void
mgnsc_dump(void)
{
- device_t self;
extern struct cfdriver mgnsc_cd;
struct siop_softc *sc;
int i;
for (i = 0; i < mgnsc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(&mgnsc_cd, i);
- if (self == NULL)
- continue;
- sc = device_private(self);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(&mgnsc_cd, i);
+ if (sc != NULL) {
siop_dump(sc);
- device_release(self);
+ device_release(sc->sc_dev);
+ }
}
}
#endif
Index: src/sys/arch/amiga/dev/wesc.c
diff -u src/sys/arch/amiga/dev/wesc.c:1.40.18.1 src/sys/arch/amiga/dev/wesc.c:1.40.18.2
--- src/sys/arch/amiga/dev/wesc.c:1.40.18.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/amiga/dev/wesc.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: wesc.c,v 1.40.18.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: wesc.c,v 1.40.18.2 2016/07/20 02:06:15 pgoyette Exp $ */
/*
* Copyright (c) 1982, 1990 The Regents of the University of California.
@@ -58,7 +58,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wesc.c,v 1.40.18.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wesc.c,v 1.40.18.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -191,19 +191,16 @@ wesc_dmaintr(void *arg)
void
wesc_dump(void)
{
- device_t self;
extern struct cfdriver wesc_cd;
struct siop_softc *sc;
int i;
for (i = 0; i < wesc_cd.cd_ndevs; ++i) {
- self = device_lookup_acquire(&wesc_cd, i);
- if (self == NULL)
- continue;
- sc = device_private(self);
- if (sc != NULL)
+ sc = device_lookup_private_acquire(&wesc_cd, i);
+ if (sc != NULL) {
siop_dump(sc);
- device_release(self);
+ device_release(sc->sc_dev);
+ }
}
}
#endif
Index: src/sys/arch/arc/jazz/fd.c
diff -u src/sys/arch/arc/jazz/fd.c:1.47.2.1 src/sys/arch/arc/jazz/fd.c:1.47.2.2
--- src/sys/arch/arc/jazz/fd.c:1.47.2.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/arc/jazz/fd.c Wed Jul 20 02:06:15 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: fd.c,v 1.47.2.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: fd.c,v 1.47.2.2 2016/07/20 02:06:15 pgoyette Exp $ */
/* $OpenBSD: fd.c,v 1.6 1998/10/03 21:18:57 millert Exp $ */
/* NetBSD: fd.c,v 1.78 1995/07/04 07:23:09 mycroft Exp */
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.47.2.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.47.2.2 2016/07/20 02:06:15 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -432,12 +432,11 @@ fd_dev_to_type(struct fd_softc *fd, dev_
void
fdstrategy(struct buf *bp)
{
- device_t self;
- struct fd_softc *fd;
+ struct fd_softc *fd =
+ device_lookup_private_acquire(&fd_cd, FDUNIT(bp->b_dev));
int sz;
int s;
- self = device_lookup_acquire(&fd_cd, FDUNIT(bp->b_dev));
/* Valid unit, controller, and request? */
if (bp->b_blkno < 0 ||
(bp->b_bcount % FDC_BSIZE) != 0) {
@@ -493,14 +492,13 @@ fdstrategy(struct buf *bp)
}
#endif
splx(s);
- device_release(self);
+ device_release(fd->sc_dev);
return;
done:
/* Toss transfer; we're done early. */
bp->b_resid = bp->b_bcount;
biodone(bp);
- device_release(self);
}
void
@@ -652,28 +650,22 @@ out_fdc(bus_space_tag_t iot, bus_space_h
int
fdopen(dev_t dev, int flags, int mode, struct lwp *l)
{
- device_t self;
struct fd_softc *fd;
const struct fd_type *type;
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
- return ENXIO;
- fd = device_private(self);
- if (fd == NULL) {
- device_release(self);
+ fd = device_lookup_private_acquire(&fd_cd, FDUNIT(dev));
+ if (fd == NULL)
return ENXIO;
- }
type = fd_dev_to_type(fd, dev);
if (type == NULL) {
- device_release(self);
+ device_release(fd->sc_dev);
return ENXIO;
}
if ((fd->sc_flags & FD_OPEN) != 0 &&
memcmp(fd->sc_type, type, sizeof(*type))) {
- device_release(self);
+ device_release(fd->sc_dev);
return EBUSY;
}
@@ -682,28 +674,18 @@ fdopen(dev_t dev, int flags, int mode, s
fd->sc_cylin = -1;
fd->sc_flags |= FD_OPEN;
- device_release(self);
+ device_release(fd->sc_dev);
return 0;
}
int
fdclose(dev_t dev, int flags, int mode, struct lwp *l)
{
- device_t self;
- struct fd_softc *fd;
-
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
- return ENXIO;
- fd = device_private(self);
- if (fd == NULL) {
- device_release(self);
- return ENXIO;
- }
+ struct fd_softc *fd =
+ device_lookup_private_acquire(&fd_cd, FDUNIT(dev));
fd->sc_flags &= ~FD_OPEN;
-
- device_release(self);
+ device_release(fd->sc_dev);
return 0;
}
@@ -1105,19 +1087,12 @@ fdcretry(struct fdc_softc *fdc)
int
fdioctl(dev_t dev, u_long cmd, void *addr, int flag, struct lwp *l)
{
- device_t self;
- struct fd_softc *fd;
+ struct fd_softc *fd =
+ device_lookup_private_acquire(&fd_cd, FDUNIT(dev));
struct disklabel buffer;
int error;
- self = device_lookup_acquire(&fd_cd, FDUNIT(dev));
- if (self == NULL)
- return ENXIO;
- fd = device_private(self);
- if (fd == NULL) {
- device_release(self);
- return ENXIO;
- }
+ error = 0;
switch (cmd) {
case DIOCGDINFO:
memset(&buffer, 0, sizeof(buffer));
@@ -1130,15 +1105,13 @@ fdioctl(dev_t dev, u_long cmd, void *add
return EINVAL;
*(struct disklabel *)addr = buffer;
- device_release(self);
- return 0;
+ break;
case DIOCWLABEL:
if ((flag & FWRITE) == 0)
return EBADF;
/* XXX do something */
- device_release(self);
- return 0;
+ break;
case DIOCWDINFO:
if ((flag & FWRITE) == 0)
@@ -1146,19 +1119,18 @@ fdioctl(dev_t dev, u_long cmd, void *add
error = setdisklabel(&buffer, (struct disklabel *)addr,
0, NULL);
- if (error == 0))
- error = writedisklabel(dev, fdstrategy, &buffer, NULL);
- device_release(self);
- return error;
+ if (error)
+ break;
+
+ error = writedisklabel(dev, fdstrategy, &buffer, NULL);
+ break;
default:
- device_release(self);
- return ENOTTY;
+ error = ENOTTY;
}
-#ifdef DIAGNOSTIC
- panic("%s: impossible", __func__);
-#endif
+ device_release(fd->sc_dev;
+ return error;
}
/*
Index: src/sys/arch/arm/amlogic/amlogic_com.c
diff -u src/sys/arch/arm/amlogic/amlogic_com.c:1.5.4.1 src/sys/arch/arm/amlogic/amlogic_com.c:1.5.4.2
--- src/sys/arch/arm/amlogic/amlogic_com.c:1.5.4.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/arm/amlogic/amlogic_com.c Wed Jul 20 02:06:16 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: amlogic_com.c,v 1.5.4.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $NetBSD: amlogic_com.c,v 1.5.4.2 2016/07/20 02:06:16 pgoyette Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: amlogic_com.c,v 1.5.4.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(1, "$NetBSD: amlogic_com.c,v 1.5.4.2 2016/07/20 02:06:16 pgoyette Exp $");
#define cn_trap() \
do { \
@@ -284,23 +284,16 @@ amlogic_com_is_console(bus_addr_t iobase
static int
amlogic_com_open(dev_t dev, int flag, int mode, lwp_t *l)
{
- device_t self;
- struct amlogic_com_softc *sc;
+ int error = 0;
+ struct amlogic_com_softc *sc =
+ device_lookup_private_acquire(&amlogiccom_cd, minor(dev));
struct tty *tp = sc->sc_tty;
- int val;
if (kauth_authorize_device_tty(l->l_cred,
KAUTH_DEVICE_TTY_OPEN, tp) != 0) {
+ device_release(sc->sc_dev);
return EBUSY;
}
- self = device_lookup_acquire(&amlogiccom_cd, minor(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
if ((tp->t_state & TS_ISOPEN) == 0 && tp->t_wopen == 0) {
tp->t_dev = dev;
@@ -314,150 +307,90 @@ amlogic_com_open(dev_t dev, int flag, in
}
tp->t_state |= TS_CARR_ON;
- val = tp->t_linesw->l_open(dev, tp);
-
- device_release(self);
- return val;
+ error = tp->t_linesw->l_open(dev, tp);
+ device_release(sc->sc_dev);
+ return error;
}
static int
amlogic_com_close(dev_t dev, int flag, int mode, lwp_t *l)
{
- device_t self;
- struct amlogic_com_softc *sc;
+ struct amlogic_com_softc *sc =
+ device_lookup_private_acquire(&amlogiccom_cd, minor(dev));
struct tty *tp = sc->sc_tty;
- self = device_lookup_acquire(&amlogiccom_cd, minor(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
tp->t_linesw->l_close(tp, flag);
ttyclose(tp);
- device_release(self);
+ device_release(sc->sc_dev);
return 0;
}
static int
amlogic_com_read(dev_t dev, struct uio *uio, int flag)
{
- device_t self;
- struct amlogic_com_softc *sc;
- struct tty *tp;
- int val;
-
- self = device_lookup_acquire(&amlogiccom_cd, minor(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
-
- tp = sc->sc_tty;
- val = tp->t_linesw->l_read(tp, uio, flag);
+ int error;
+ struct amlogic_com_softc *sc =
+ device_lookup_private_acquire(&amlogiccom_cd, minor(dev));
+ struct tty *tp = sc->sc_tty;
- device_release(self);
- return val;
+ error = tp->t_linesw->l_read(tp, uio, flag);
+ device_release(sc->sc_dev);
+ return error;
}
static int
amlogic_com_write(dev_t dev, struct uio *uio, int flag)
{
- device_t self;
- struct amlogic_com_softc *sc;
- struct tty *tp;
- int val;
-
- self = device_lookup_acquire(&amlogiccom_cd, minor(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
-
- tp = sc->sc_tty;
- val = tp->t_linesw->l_write(tp, uio, flag);
+ int error;
+ struct amlogic_com_softc *sc =
+ device_lookup_private_acquire(&amlogiccom_cd, minor(dev));
+ struct tty *tp = sc->sc_tty;
- device_release(self);
- return val;
+ error = tp->t_linesw->l_write(tp, uio, flag);
+ device_release(sc->sc_dev);
+ return error;
}
static int
amlogic_com_poll(dev_t dev, int events, lwp_t *l)
{
- device_t self;
- struct amlogic_com_softc *sc;
- struct tty *tp;
- int val;
-
- self = device_lookup_acquire(&amlogiccom_cd, minor(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
+ int error;
+ struct amlogic_com_softc *sc =
+ device_lookup_private_acquire(&amlogiccom_cd, minor(dev));
+ struct tty *tp = sc->sc_tty;
- tp = sc->sc_tty;
- val = tp->t_linesw->l_poll(tp, events, l);
+ error = tp->t_linesw->l_poll(tp, events, l);
- device_release(self);
- return val;
+ device_release(sc->sc_dev);
+ return error;
}
static int
amlogic_com_ioctl(dev_t dev, u_long cmd, void *data, int flag, lwp_t *l)
{
- device_t self;
- struct amlogic_com_softc *sc;
- struct tty *tp;
+ struct amlogic_com_softc *sc =
+ device_lookup_private_acquire(&amlogiccom_cd, minor(dev));
+ struct tty *tp = sc->sc_tty;
int error;
- self = device_lookup_acquire(&amlogiccom_cd, minor(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
-
- tp = sc->sc_tty;
error = tp->t_linesw->l_ioctl(tp, cmd, data, flag, l);
- if (error != EPASSTHROUGH) {
- device_release(self);
- return error;
- }
- error = ttioctl(tp, cmd, data, flag, l);
+ if (error == EPASSTHROUGH)
+ error = ttioctl(tp, cmd, data, flag, l);
- device_release(self);
+ device_release(sc->sc_dev);
return error;
}
static struct tty *
amlogic_com_tty(dev_t dev)
{
- device_t self;
- struct amlogic_com_softc *sc;
struct tty *tty;
+ struct amlogic_com_softc *sc =
+ device_lookup_private_acquire(&amlogiccom_cd, minor(dev));
- self = device_lookup_acquire(&amlogiccom_cd, minor(dev));
- if (self == NULL)
- return NULL;
-
- sc = device_private(self);
tty = sc->sc_tty;
-
- device_release(self);
+ device_release(sc->sc_dev);
return tty;
}
Index: src/sys/arch/arm/at91/at91dbgu.c
diff -u src/sys/arch/arm/at91/at91dbgu.c:1.15.2.1 src/sys/arch/arm/at91/at91dbgu.c:1.15.2.2
--- src/sys/arch/arm/at91/at91dbgu.c:1.15.2.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/arm/at91/at91dbgu.c Wed Jul 20 02:06:16 2016
@@ -1,5 +1,5 @@
-/* $Id: at91dbgu.c,v 1.15.2.1 2016/07/19 06:26:58 pgoyette Exp $ */
-/* $NetBSD: at91dbgu.c,v 1.15.2.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $Id: at91dbgu.c,v 1.15.2.2 2016/07/20 02:06:16 pgoyette Exp $ */
+/* $NetBSD: at91dbgu.c,v 1.15.2.2 2016/07/20 02:06:16 pgoyette Exp $ */
/*
*
@@ -83,7 +83,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: at91dbgu.c,v 1.15.2.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: at91dbgu.c,v 1.15.2.2 2016/07/20 02:06:16 pgoyette Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -303,26 +303,17 @@ at91dbgu_attach(device_t parent, device_
static int
at91dbgu_param(struct tty *tp, struct termios *t)
{
- device_t self;
- struct at91dbgu_softc *sc
+ struct at91dbgu_softc *sc = device_lookup_private_acquire(
+ &at91dbgu_cd, COMUNIT(tp->t_dev));
int s;
- self = device_lookup_acquire(&at91dbgu_cd, COMUNIT(tp->t_dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
-
if (COM_ISALIVE(sc) == 0) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EIO);
}
if (t->c_ispeed && t->c_ispeed != t->c_ospeed) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EINVAL);
}
@@ -343,7 +334,7 @@ at91dbgu_param(struct tty *tp, struct te
*/
if (tp->t_ospeed == t->c_ospeed &&
tp->t_cflag == t->c_cflag) {
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
@@ -377,7 +368,7 @@ at91dbgu_param(struct tty *tp, struct te
}
}
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
@@ -410,20 +401,12 @@ at91dbgu_filltx(struct at91dbgu_softc *s
static void
at91dbgu_start(struct tty *tp)
{
- device_t self;
- struct at91dbgu_softc *sc
+ struct at91dbgu_softc *sc = device_lookup_private_acquire(
+ &at91dbgu_cd, COMUNIT(tp->t_dev));
int s;
- self = device_lookup_acquire(&at91dbgu_cd, COMUNIT(tp->t_dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
if (COM_ISALIVE(sc) == 0) {
- device_release(self);
+ device_release(sc->sc_dev);
return;
}
@@ -460,7 +443,7 @@ at91dbgu_start(struct tty *tp)
out:
splx(s);
- device_release(self);
+ device_release(sc->sc_dev);
return;
}
@@ -499,24 +482,19 @@ at91dbgu_shutdown(struct at91dbgu_softc
int
at91dbgu_open(dev_t dev, int flag, int mode, struct lwp *l)
{
- device_t self;
struct at91dbgu_softc *sc;
struct tty *tp;
int s, s2;
int error;
- self = device_lookup_acquire(&at91dbgu_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL || !ISSET(sc->sc_hwflags, COM_HW_DEV_OK) ||
- sc->sc_rbuf == NULL) {
- device_release(self);
+ sc = device_lookup_private_acquire(&at91dbgu_cd, COMUNIT(dev));
+ if (!ISSET(sc->sc_hwflags, COM_HW_DEV_OK) || sc->sc_rbuf == NULL) {
+ device_release(sc->sc_dev);
return (ENXIO);
}
if (!device_is_active(sc->sc_dev)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (ENXIO);
}
@@ -525,7 +503,7 @@ at91dbgu_open(dev_t dev, int flag, int m
* If this is the kgdb port, no other use is permitted.
*/
if (ISSET(sc->sc_hwflags, COM_HW_KGDB)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EBUSY);
}
#endif
@@ -533,7 +511,7 @@ at91dbgu_open(dev_t dev, int flag, int m
tp = sc->sc_tty;
if (kauth_authorize_device_tty(l->l_cred, KAUTH_DEVICE_TTY_OPEN, tp)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EBUSY);
}
@@ -555,6 +533,7 @@ at91dbgu_open(dev_t dev, int flag, int m
splx(s);
printf("%s: device enable failed\n",
device_xname(sc->sc_dev));
+ device_release(sc->sc_dev);
return (EIO);
}
sc->enabled = 1;
@@ -632,7 +611,7 @@ at91dbgu_open(dev_t dev, int flag, int m
if (error)
goto bad;
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
bad:
@@ -644,29 +623,20 @@ bad:
at91dbgu_shutdown(sc);
}
- device_release(self);
+ device_release(sc->sc_dev);
return (error);
}
int
at91dbgu_close(dev_t dev, int flag, int mode, struct lwp *l)
{
- device_t self;
- struct at91dbgu_softc *sc;
+ struct at91dbgu_softc *sc = device_lookup_private_acquire(
+ &at91dbgu_cd, COMUNIT(dev));
struct tty *tp = sc->sc_tty;
- self = device_lookup_acquire(&at91dbgu_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
-
/* XXX This is for cons.c. */
if (!ISSET(tp->t_state, TS_ISOPEN)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
@@ -674,7 +644,7 @@ at91dbgu_close(dev_t dev, int flag, int
ttyclose(tp);
if (COM_ISALIVE(sc) == 0) {
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
@@ -687,149 +657,98 @@ at91dbgu_close(dev_t dev, int flag, int
at91dbgu_shutdown(sc);
}
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
int
at91dbgu_read(dev_t dev, struct uio *uio, int flag)
{
- device_t self;
- struct at91dbgu_softc *sc;
- struct tty *tp;
- int val;
-
- self = device_lookup_acquire(&at91dbgu_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- if (COM_ISALIVE(sc) == 0) {
- device_release(self);
- return (EIO);
- }
+ int error;
+ struct at91dbgu_softc *sc = device_lookup_private_acquire(
+ &at91dbgu_cd, COMUNIT(dev));
+ struct tty *tp = sc->sc_tty;
- tp = sc->sc_tty;
- val = ((*tp->t_linesw->l_read)(tp, uio, flag));
+ if (COM_ISALIVE(sc) == 0)
+ error = EIO;
+ else
+ error = (*tp->t_linesw->l_read)(tp, uio, flag);
- device_release(self);
- return val;
+ device_release(sc->sc_dev);
+ return error;
}
int
at91dbgu_write(dev_t dev, struct uio *uio, int flag)
{
- struct at91dbgu_softc *sc;
- struct tty *tp;
- int val;
-
- self = device_lookup_acquire(&at91dbgu_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- if (COM_ISALIVE(sc) == 0) {
- device_release(self);
- return (EIO);
- }
+ int error;
+ struct at91dbgu_softc *sc = device_lookup_private_acquire(
+ &at91dbgu_cd, COMUNIT(dev));
+ struct tty *tp = sc->sc_tty;
- tp = sc->sc_tty;
- val = ((*tp->t_linesw->l_write)(tp, uio, flag));
+ if (COM_ISALIVE(sc) == 0)
+ error = EIO;
+ else
+ error = (*tp->t_linesw->l_write)(tp, uio, flag);
- device_release(self);
- return val;
+ device_release(sc->sc_dev);
+ return error;
}
int
at91dbgu_poll(dev_t dev, int events, struct lwp *l)
{
- struct at91dbgu_softc *sc;
- struct tty *tp;
-
- self = device_lookup_acquire(&at91dbgu_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- if (COM_ISALIVE(sc) == 0) {
- device_release(self);
- return (EIO);
- }
+ int error;
+ struct at91dbgu_softc *sc = device_lookup_private_acquire(
+ &at91dbgu_cd, COMUNIT(dev));
+ struct tty *tp = sc->sc_tty;
- tp = sc->sc_tty;
- val = ((*tp->t_linesw->l_poll)(tp, events, l));
+ if (COM_ISALIVE(sc) == 0)
+ error = EIO;
+ else
+ error = (*tp->t_linesw->l_poll)(tp, events, l);
- device_release(self);
- return val;
+ device_release(sc->sc_dev);
+ return error;
}
struct tty *
at91dbgu_tty(dev_t dev)
{
- device_t self;
- struct at91dbgu_softc *sc;
+ struct at91dbgu_softc *sc = device_lookup_private_acquire(
+ &at91dbgu_cd, COMUNIT(dev));
struct tty *tp;
- self = device_lookup_acquire(&at91dbgu_cd, COMUNIT(dev));
- if (self == NULL)
- return NULL;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return NULL;
- }
tp = sc->sc_tty;
- device_release(self);
+ device_release(sc->sc_dev);
return (tp);
}
int
at91dbgu_ioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
{
- device_t self;
- struct at91dbgu_softc *sc;
- struct tty *tp;
+ struct at91dbgu_softc *sc = device_lookup_private_acquire(
+ &at91dbgu_cd, COMUNIT(dev));
+ struct tty *tp = sc->sc_tty;
int error;
int s;
- self = device_lookup_acquire(&at91dbgu_cd, COMUNIT(dev));
- if (self == NULL)
- return NULL;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return NULL;
- }
if (COM_ISALIVE(sc) == 0) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EIO);
}
- tp = sc->sc_tty;
error = (*tp->t_linesw->l_ioctl)(tp, cmd, data, flag, l);
- if (error != EPASSTHROUGH) {
- device_release(self);
- return (error);
- }
+ if (error == EPASSTHROUGH)
+ error = ttioctl(tp, cmd, data, flag, l);
- error = ttioctl(tp, cmd, data, flag, l);
if (error != EPASSTHROUGH) {
- device_release(self);
+ device_release(sc->sc_dev);
return (error);
}
error = 0;
-
s = splserial();
switch (cmd) {
@@ -860,7 +779,7 @@ at91dbgu_ioctl(dev_t dev, u_long cmd, vo
splx(s);
- device_release(self);
+ device_release(sc->sc_dev);
return (error);
}
@@ -870,18 +789,10 @@ at91dbgu_ioctl(dev_t dev, u_long cmd, vo
void
at91dbgu_stop(struct tty *tp, int flag)
{
- device_t self;
- struct at91dbgu_softc *sc;
+ struct at91dbgu_softc *sc = device_lookup_private_acquire(
+ &at91dbgu_cd, COMUNIT(tp->t_dev));
int s;
- self = device_lookup_private(&at91dbgu_cd, COMUNIT(tp->t_dev));
- if (self == NULL)
- return;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return;
- }
s = splserial();
if (ISSET(tp->t_state, TS_BUSY)) {
/* Stop transmitting at the next chunk. */
@@ -890,7 +801,7 @@ at91dbgu_stop(struct tty *tp, int flag)
SET(tp->t_state, TS_FLUSH);
}
splx(s);
- device_release(self);
+ device_release(sc->sc_dev);
}
#if 0
Index: src/sys/arch/arm/at91/at91usart.c
diff -u src/sys/arch/arm/at91/at91usart.c:1.13.2.1 src/sys/arch/arm/at91/at91usart.c:1.13.2.2
--- src/sys/arch/arm/at91/at91usart.c:1.13.2.1 Tue Jul 19 06:26:58 2016
+++ src/sys/arch/arm/at91/at91usart.c Wed Jul 20 02:06:16 2016
@@ -1,5 +1,5 @@
-/* $Id: at91usart.c,v 1.13.2.1 2016/07/19 06:26:58 pgoyette Exp $ */
-/* $NetBSD: at91usart.c,v 1.13.2.1 2016/07/19 06:26:58 pgoyette Exp $ */
+/* $Id: at91usart.c,v 1.13.2.2 2016/07/20 02:06:16 pgoyette Exp $ */
+/* $NetBSD: at91usart.c,v 1.13.2.2 2016/07/20 02:06:16 pgoyette Exp $ */
/*
* Copyright (c) 2007 Embedtronics Oy. All rights reserved.
@@ -77,7 +77,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: at91usart.c,v 1.13.2.1 2016/07/19 06:26:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: at91usart.c,v 1.13.2.2 2016/07/20 02:06:16 pgoyette Exp $");
#include "opt_ddb.h"
#include "opt_kgdb.h"
@@ -328,25 +328,17 @@ at91usart_attach_subr(struct at91usart_s
static int
at91usart_param(struct tty *tp, struct termios *t)
{
- device_t self;
- struct at91usart_softc *sc;
+ struct at91usart_softc *sc = device_lookup_private_acquire(
+ &at91usart_cd, COMUNIT(tp->t_dev));
int s;
- self = device_lookup_acquire(&at91usart_cd, COMUNIT(tp->t_dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
if (COM_ISALIVE(sc) == 0) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EIO);
}
if (t->c_ispeed && t->c_ispeed != t->c_ospeed) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EINVAL);
}
@@ -367,7 +359,7 @@ at91usart_param(struct tty *tp, struct t
*/
if (tp->t_ospeed == t->c_ospeed &&
tp->t_cflag == t->c_cflag) {
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
@@ -398,7 +390,7 @@ at91usart_param(struct tty *tp, struct t
if (sc->hwflow)
(*sc->hwflow)(sc, t->c_cflag);
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
@@ -492,21 +484,13 @@ at91usart_filltx(struct at91usart_softc
static void
at91usart_start(struct tty *tp)
{
- device_t self;
- struct at91usart_softc *sc;
+ struct at91usart_softc *sc = device_lookup_private_acquire(
+ &at91usart_cd, COMUNIT(tp->t_dev));
int s;
- self = device_lookup_acquire(&at91usart_cd, COMUNIT(tp->t_dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
if (COM_ISALIVE(sc) == 0) {
DPRINTFN(5, ("%s: %s / COM_ISALIVE == 0\n", device_xname(sc->sc_dev), __FUNCTION__));
- device_release(self);
+ device_release(sc->sc_dev);
return;
}
@@ -541,7 +525,7 @@ at91usart_start(struct tty *tp)
out:
splx(s);
- device_release(self);
+ device_release(sc->sc_dev);
return;
}
@@ -586,23 +570,19 @@ at91usart_shutdown(struct at91usart_soft
int
at91usart_open(dev_t dev, int flag, int mode, struct lwp *l)
{
- device_t self;
struct at91usart_softc *sc;
struct tty *tp;
int s;
int error;
- self = device_lookup_acquire(&at91usart_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
+ sc = device_lookup_private_acquire(&at91usart_cd, COMUNIT(dev));
if (sc == NULL || !ISSET(sc->sc_hwflags, COM_HW_DEV_OK)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (ENXIO);
}
if (!device_is_active(sc->sc_dev)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (ENXIO);
}
@@ -611,7 +591,7 @@ at91usart_open(dev_t dev, int flag, int
* If this is the kgdb port, no other use is permitted.
*/
if (ISSET(sc->sc_hwflags, COM_HW_KGDB)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EBUSY);
}
#endif
@@ -619,7 +599,7 @@ at91usart_open(dev_t dev, int flag, int
tp = sc->sc_tty;
if (kauth_authorize_device_tty(l->l_cred, KAUTH_DEVICE_TTY_OPEN, tp)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EBUSY);
}
@@ -638,7 +618,6 @@ at91usart_open(dev_t dev, int flag, int
splx(s);
printf("%s: device enable failed\n",
device_xname(sc->sc_dev));
- device_release(self);
return (EIO);
}
sc->enabled = 1;
@@ -710,7 +689,7 @@ at91usart_open(dev_t dev, int flag, int
if (error)
goto bad;
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
bad:
@@ -722,37 +701,28 @@ bad:
at91usart_shutdown(sc);
}
- device_release(self);
+ device_release(sc->sc_dev);
return (error);
}
int
at91usart_close(dev_t dev, int flag, int mode, struct lwp *l)
{
- device_t self;
- struct at91usart_softc *sc;
- struct tty *tp;
+ struct at91usart_softc *sc = device_lookup_private_acquire(
+ &at91usart_cd, COMUNIT(dev));
+ struct tty *tp = sc->sc_tty;
- self = device_lookup_acquire(&at91usart_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
/* XXX This is for cons.c. */
if (!ISSET(tp->t_state, TS_ISOPEN)) {
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
- tp = sc->sc_tty;
(*tp->t_linesw->l_close)(tp, flag);
ttyclose(tp);
if (COM_ISALIVE(sc) == 0) {
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
@@ -765,147 +735,96 @@ at91usart_close(dev_t dev, int flag, int
at91usart_shutdown(sc);
}
- device_release(self);
+ device_release(sc->sc_dev);
return (0);
}
int
at91usart_read(dev_t dev, struct uio *uio, int flag)
{
- device_t self;
- struct at91usart_softc *sc;
- struct tty *tp;
- int val;
+ int error;
+ struct at91usart_softc *sc = device_lookup_private_acquire(
+ &at91usart_cd, COMUNIT(dev));
+ struct tty *tp = sc->sc_tty;
- self = device_lookup_private(&at91usart_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
if (COM_ISALIVE(sc) == 0) {
- device_release(self);
- return (EIO);
- }
-
- tp = sc->sc_tty;
- val = ((*tp->t_linesw->l_read)(tp, uio, flag));
+ error = EIO;
+ else
+ error =(*tp->t_linesw->l_read)(tp, uio, flag);
- device_release(self);
- return val;
+ device_release(sc->sc_dev);
+ return error;
}
int
at91usart_write(dev_t dev, struct uio *uio, int flag)
{
- device_t self;
- struct at91usart_softc *sc;
- struct tty *tp;
- int val;
+ int error;
+ struct at91usart_softc *sc = device_lookup_private_acquire(
+ &at91usart_cd, COMUNIT(dev));
+ struct tty *tp = sc->sc_tty;
- self = device_lookup_acquire(&at91usart_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- if (COM_ISALIVE(sc) == 0) {
- device_release(self);
- return (EIO);
- }
-
- tp = sc->sc_tty;
- val = ((*tp->t_linesw->l_write)(tp, uio, flag));
+ if (COM_ISALIVE(sc) == 0)
+ error = EIO;
+ else
+ error = (*tp->t_linesw->l_write)(tp, uio, flag);
- device_release(self);
- return val;
+ device_release(sc->sc_dev);
+ return error;
}
int
at91usart_poll(dev_t dev, int events, struct lwp *l)
{
- device_t self;
- struct at91usart_softc *sc;
- struct tty *tp;
- int val;
+ int error;
+ struct at91usart_softc *sc = device_lookup_private_acquire(
+ &at91usart_cd, COMUNIT(dev));
+ struct tty *tp = sc->sc_tty;
- self = device_lookup_acquire(&at91usart_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
- if (COM_ISALIVE(sc) == 0) {
- device_release(self);
- return (EIO);
- }
-
- tp = sc->sc_tty;
- val = ((*tp->t_linesw->l_poll)(tp, events, l));
+ if (COM_ISALIVE(sc) == 0)
+ error = EIO;
+ else
+ error = (*tp->t_linesw->l_poll)(tp, events, l);
- device_release(self);
- return val;
+ device_release(sc->sc_dev);
+ return error;
}
struct tty *
at91usart_tty(dev_t dev)
{
- device_t self;
- struct at91usart_softc *sc;
+ struct at91usart_softc *sc = device_lookup_private_acquire(
+ &at91usart_cd, COMUNIT(dev));
struct tty *tp;
- self = device_lookup_acquire(&at91usart_cd, COMUNIT(dev));
- if (self == NULL)
- return NULL;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return NULL;
- }
tp = sc->sc_tty;
- device_release(self);
+ device_release(sc->sc_dev);
return (tp);
}
int
at91usart_ioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
{
- struct at91usart_softc *sc;
- struct tty *tp;
+ struct at91usart_softc *sc = device_lookup_private_acquire(
+ &at91usart_cd, COMUNIT(dev));
+ struct tty *tp = sc->sc_tty;
int error;
int s;
- self = device_lookup_acquire(&at91usart_cd, COMUNIT(dev));
- if (self == NULL)
- return ENXIO;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return ENXIO;
- }
if (COM_ISALIVE(sc) == 0) {
- device_release(self);
+ device_release(sc->sc_dev);
return (EIO);
}
- tp = sc->sc_tty;
error = (*tp->t_linesw->l_ioctl)(tp, cmd, data, flag, l);
+ if (error == EPASSTHROUGH)
+ error = ttioctl(tp, cmd, data, flag, l);
if (error != EPASSTHROUGH) {
- device_release(self);
- return (error);
- }
- error = ttioctl(tp, cmd, data, flag, l);
- if (error != EPASSTHROUGH) {
- device_release(self);
+ device_release(sc->sc_dev);
return (error);
}
+
error = 0;
s = spltty();
@@ -938,7 +857,7 @@ at91usart_ioctl(dev_t dev, u_long cmd, v
splx(s);
- device_release(self);
+ device_release(sc->sc_dev);
return (error);
}
@@ -948,18 +867,9 @@ at91usart_ioctl(dev_t dev, u_long cmd, v
void
at91usart_stop(struct tty *tp, int flag)
{
- device_t self;
- struct at91usart_softc *sc;
- int s;
+ struct at91usart_softc *sc = device_lookup_private_acquire(
+ &at91usart_cd, COMUNIT(tp->t_dev));
- self = device_lookup_acquire(&at91usart_cd, COMUNIT(tp->t_dev));
- if (self == NULL)
- return;
- sc = device_private(self);
- if (sc == NULL) {
- device_release(self);
- return;
- }
s = spltty();
if (ISSET(tp->t_state, TS_BUSY)) {
/* Stop transmitting at the next chunk. */
@@ -968,7 +878,7 @@ at91usart_stop(struct tty *tp, int flag)
SET(tp->t_state, TS_FLUSH);
}
splx(s);
- device_release(self);
+ device_release(sc->sc_dev);
}
#if 0