Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/pgoyette-localcount]: src/sys/arch Redo previous. Rather than separatel...



details:   https://anonhg.NetBSD.org/src/rev/6a134dceb8d6
branches:  pgoyette-localcount
changeset: 852821:6a134dceb8d6
user:      pgoyette <pgoyette%NetBSD.org@localhost>
date:      Wed Jul 20 02:06:15 2016 +0000

description:
Redo previous.  Rather than separately extracting the device_t, we can
rely on sc->sc_dev when we need to call device_release().

diffstat:

 sys/arch/acorn26/ioc/arcpp.c       |   61 ++-----
 sys/arch/acorn32/mainbus/fd.c      |  184 ++++++++-------------
 sys/arch/acorn32/podulebus/asc.c   |   13 +-
 sys/arch/alpha/pci/mcpcia.c        |   18 +-
 sys/arch/alpha/tc/ioasic.c         |   34 +---
 sys/arch/amiga/dev/afsc.c          |   14 +-
 sys/arch/amiga/dev/ahsc.c          |   15 +-
 sys/arch/amiga/dev/atzsc.c         |   15 +-
 sys/arch/amiga/dev/bppcsc.c        |   15 +-
 sys/arch/amiga/dev/cbiiisc.c       |   15 +-
 sys/arch/amiga/dev/drsc.c          |   15 +-
 sys/arch/amiga/dev/fd.c            |  157 +++++++-----------
 sys/arch/amiga/dev/gtsc.c          |   15 +-
 sys/arch/amiga/dev/mfc.c           |  309 +++++++++++-------------------------
 sys/arch/amiga/dev/mgnsc.c         |   15 +-
 sys/arch/amiga/dev/wesc.c          |   15 +-
 sys/arch/arc/jazz/fd.c             |   80 +++------
 sys/arch/arm/amlogic/amlogic_com.c |  153 +++++-------------
 sys/arch/arm/at91/at91dbgu.c       |  233 ++++++++-------------------
 sys/arch/arm/at91/at91usart.c      |  230 ++++++++-------------------
 20 files changed, 529 insertions(+), 1077 deletions(-)

diffs (truncated from 3298 to 300 lines):

diff -r 590cac4d0b30 -r 6a134dceb8d6 sys/arch/acorn26/ioc/arcpp.c
--- a/sys/arch/acorn26/ioc/arcpp.c      Tue Jul 19 06:26:57 2016 +0000
+++ b/sys/arch/acorn26/ioc/arcpp.c      Wed Jul 20 02:06:15 2016 +0000
@@ -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 @@
        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 @@
                    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 @@
        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 @@
        arcppintr(sc);
        splx(s);
 
+       device_release(sc->sc_dev);
        return 0;
-
- out:  device_release(self);
-       return error;
 }
 
 /*
@@ -255,17 +246,9 @@
 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 @@
        sc->sc_state = 0;
        free(sc->sc_inbuf, M_DEVBUF);
 
-       device_release(self);
+       device_release(sc->sc_dev);
        return 0;
 }
 
@@ -301,19 +284,11 @@
 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 @@
                         */
                        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;
 }
 
diff -r 590cac4d0b30 -r 6a134dceb8d6 sys/arch/acorn32/mainbus/fd.c
--- a/sys/arch/acorn32/mainbus/fd.c     Tue Jul 19 06:26:57 2016 +0000
+++ b/sys/arch/acorn32/mainbus/fd.c     Wed Jul 20 02:06:15 2016 +0000
@@ -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 @@
 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 @@
        }
 #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 @@
 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 @@
 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 @@
        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 @@
                        return EINVAL;
 



Home | Main Index | Thread Index | Old Index