Device layer rollup commit.
authorMatthew Dillon <dillon@dragonflybsd.org>
Wed, 19 May 2004 22:53:06 +0000 (22:53 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Wed, 19 May 2004 22:53:06 +0000 (22:53 +0000)
* cdevsw_add() is now required.  cdevsw_add() and cdevsw_remove() may specify
  a mask/match indicating the range of supported minor numbers.  Multiple
  cdevsw_add()'s using the same major number, but distinctly different
  ranges, may be issued.  All devices that failed to call cdevsw_add() before
  now do.

* cdevsw_remove() now automatically marks all devices within its supported
  range as being destroyed.

* vnode->v_rdev is no longer resolved when the vnode is created.  Instead,
  only v_udev (a newly added field) is resolved.  v_rdev is resolved when
  the vnode is opened and cleared on the last close.

* A great deal of code was making rather dubious assumptions with regards
  to the validity of devices associated with vnodes, primarily due to
  the persistence of a device structure due to being indexed by (major, minor)
  instead of by (cdevsw, major, minor).  In particular, if you run a program
  which connects to a USB device and then you pull the USB device and plug
  it back in, the vnode subsystem will continue to believe that the device
  is open when, in fact, it isn't (because it was destroyed and recreated).

  In particular, note that all the VFS mount procedures now check devices
  via v_udev instead of v_rdev prior to calling VOP_OPEN(), since v_rdev
  is NULL prior to the first open.

* The disk layer's device interaction has been rewritten.  The disk layer
  (i.e. the slice and disklabel management layer) no longer overloads
  its data onto the device structure representing the underlying physical
  disk.  Instead, the disk layer uses the new cdevsw_add() functionality
  to register its own cdevsw using the underlying device's major number,
  and simply does NOT register the underlying device's cdevsw.  No
  confusion is created because the device hash is now based on
  (cdevsw,major,minor) rather then (major,minor).

  NOTE: This also means that underlying raw disk devices may use the entire
  device minor number instead of having to reserve the bits used by the disk
  layer, and also means that can we (theoretically) stack a fully
  disklabel-supported 'disk' on top of any block device.

* The new reference counting scheme prevents this by associating a device
  with a cdevsw and disconnecting the device from its cdevsw when the cdevsw
  is removed.  Additionally, all udev2dev() lookups run through the cdevsw
  mask/match and only successfully find devices still associated with an
  active cdevsw.

* Major work on MFS:  MFS no longer shortcuts vnode and device creation.  It
  now creates a real vnode and a real device and implements real open and
  close VOPs.  Additionally, due to the disk layer changes, MFS is no longer
  limited to 255 mounts.  The new limit is 16 million.  Since MFS creates a
  real device node, mount_mfs will now create a real /dev/mfs<PID> device
  that can be read from userland (e.g. so you can dump an MFS filesystem).

* BUF AND DEVICE STRATEGY changes.  The struct buf contains a b_dev field.
  In order to properly handle stacked devices we now require that the b_dev
  field be initialized before the device strategy routine is called.  This
  required some additional work in various VFS implementations.  To enforce
  this requirement, biodone() now sets b_dev to NODEV.  The new disk layer
  will adjust b_dev before forwarding a request to the actual physical
  device.

* A bug in the ISO CD boot sequence which resulted in a panic has been fixed.

Testing by: lots of people, but David Rhodus found the most aggregious bugs.

193 files changed:
sbin/newfs/newfs.8
sbin/newfs/newfs.c
sys/bus/cam/cam_xpt.c
sys/bus/cam/scsi/scsi_cd.c
sys/bus/cam/scsi/scsi_ch.c
sys/bus/cam/scsi/scsi_da.c
sys/bus/cam/scsi/scsi_pass.c
sys/bus/cam/scsi/scsi_pt.c
sys/bus/cam/scsi/scsi_sa.c
sys/bus/cam/scsi/scsi_ses.c
sys/bus/cam/scsi/scsi_target.c
sys/bus/firewire/firewire.h
sys/bus/firewire/fwdev.c
sys/bus/iicbus/iic.c
sys/bus/isa/vga_isa.c
sys/bus/pci/pci.c
sys/bus/smbus/smb.c
sys/bus/usb/usb.c
sys/contrib/ipfilter/netinet/mlfk_ipl.c
sys/dev/acpica/Osd/OsdSynch.c
sys/dev/acpica/acpi.c
sys/dev/acpica5/acpi.c
sys/dev/agp/agp.c
sys/dev/agp/agppriv.h
sys/dev/disk/ata/ata-all.c
sys/dev/disk/ata/ata-disk.c
sys/dev/disk/ata/ata-raid.h
sys/dev/disk/ata/atapi-cd.c
sys/dev/disk/ata/atapi-tape.c
sys/dev/disk/ata/atapi-tape.h
sys/dev/disk/ccd/ccd.c
sys/dev/disk/fd/fd.c
sys/dev/disk/isp/isp_freebsd.c
sys/dev/disk/mcd/mcd.c
sys/dev/disk/scd/scd.c
sys/dev/disk/vn/vn.c
sys/dev/disk/wt/wt.c
sys/dev/drm/drm_drv.h
sys/dev/misc/gpib/gpib.c
sys/dev/misc/joy/joy.c
sys/dev/misc/kbd/kbd.c
sys/dev/misc/labpc/labpc.c
sys/dev/misc/lpt/lpt.c
sys/dev/misc/mse/mse.c
sys/dev/misc/nmdm/nmdm.c
sys/dev/misc/pcfclock/pcfclock.c
sys/dev/misc/ppi/ppi.c
sys/dev/misc/pps/pps.c
sys/dev/misc/psm/psm.c
sys/dev/misc/snp/snp.c
sys/dev/misc/spic/spic.c
sys/dev/misc/spigot/spigot.c
sys/dev/misc/streams/streams.c
sys/dev/misc/syscons/syscons.c
sys/dev/misc/syscons/syscons.h
sys/dev/misc/syscons/sysmouse.c
sys/dev/misc/tw/tw.c
sys/dev/misc/xrpu/xrpu.c
sys/dev/netif/cx/cx.c
sys/dev/netif/cx/if_cx.c
sys/dev/raid/aac/aac.c
sys/dev/raid/aac/aac_disk.c
sys/dev/raid/amr/amr.c
sys/dev/raid/amr/amr_disk.c
sys/dev/raid/asr/asr.c
sys/dev/raid/ciss/ciss.c
sys/dev/raid/dpt/dpt_control.c
sys/dev/raid/ida/ida_disk.c
sys/dev/raid/iir/iir_ctrl.c
sys/dev/raid/ips/ips.c
sys/dev/raid/ips/ips.h
sys/dev/raid/mlx/mlx.c
sys/dev/raid/mlx/mlxvar.h
sys/dev/raid/mly/mly.c
sys/dev/raid/twa/twa.h
sys/dev/raid/twa/twa_freebsd.c
sys/dev/raid/twe/twe_compat.h
sys/dev/raid/twe/twe_freebsd.c
sys/dev/raid/vinum/vinum.c
sys/dev/raid/vinum/vinumext.h
sys/dev/raid/vinum/vinumio.c
sys/dev/raid/vinum/vinumvar.h
sys/dev/serial/cy/cy.c
sys/dev/serial/dgb/dgm.c
sys/dev/serial/rc/rc.c
sys/dev/serial/rp/rp.c
sys/dev/serial/rp/rpreg.h
sys/dev/serial/rp2/rp.c
sys/dev/serial/si/si.c
sys/dev/serial/sio/sio.c
sys/dev/serial/stl/stallion.c
sys/dev/serial/stli/istallion.c
sys/dev/sound/isa/i386/pca/pcaudio.c
sys/dev/sound/isa/i386/soundcard.c
sys/dev/sound/isa/i386/spkr/spkr.c
sys/dev/sound/pcm/dsp.c
sys/dev/sound/pcm/mixer.c
sys/dev/sound/pcm/sndstat.c
sys/dev/usbmisc/ucom/ucom.c
sys/dev/usbmisc/ufm/ufm.c
sys/dev/usbmisc/ugen/ugen.c
sys/dev/usbmisc/uhid/uhid.c
sys/dev/usbmisc/ulpt/ulpt.c
sys/dev/usbmisc/ums/ums.c
sys/dev/usbmisc/urio/urio.c
sys/dev/usbmisc/uscanner/uscanner.c
sys/dev/video/bktr/bktr_os.c
sys/dev/video/bktr/bktr_reg.h
sys/dev/video/ctx/ctx.c
sys/dev/video/fb/fb.c
sys/dev/video/fb/vgareg.h
sys/dev/video/gfb/gfb_pci.c
sys/dev/video/gsc/gsc.c
sys/dev/video/meteor/meteor.c
sys/dev/video/pcvt/i386/pcvt_drv.c
sys/dev/video/pcvt/i386/pcvt_hdr.h
sys/dev/video/pcvt/i386/pcvt_kbd.c
sys/dev/video/tga/tga_pci.c
sys/emulation/linux/linux_stats.c
sys/emulation/svr4/svr4_types.h
sys/i386/acpica/acpi_machdep.c
sys/i386/acpica5/acpi_machdep.c
sys/i386/apm/apm.c
sys/i386/gnu/isa/dgb.c
sys/i386/i386/autoconf.c
sys/i386/i386/elan-mmcr.c
sys/i386/i386/mem.c
sys/i386/i386/perfmon.c
sys/i386/isa/asc.c
sys/kern/kern_conf.c
sys/kern/kern_descrip.c
sys/kern/kern_device.c
sys/kern/kern_memio.c
sys/kern/subr_disk.c
sys/kern/subr_log.c
sys/kern/subr_xxx.c
sys/kern/tty_cons.c
sys/kern/tty_pty.c
sys/kern/tty_tty.c
sys/kern/vfs_bio.c
sys/kern/vfs_conf.c
sys/kern/vfs_default.c
sys/kern/vfs_subr.c
sys/kern/vfs_syscalls.c
sys/kern/vfs_vnops.c
sys/net/bpf.c
sys/net/i4b/driver/i4b_ctl.c
sys/net/i4b/driver/i4b_rbch.c
sys/net/i4b/driver/i4b_tel.c
sys/net/i4b/driver/i4b_trace.c
sys/net/i4b/layer4/i4b_i4bdrv.c
sys/net/tap/if_tap.c
sys/net/tun/if_tun.c
sys/netgraph/ng_device.c
sys/netproto/smb/smb_dev.c
sys/opencrypto/cryptodev.c
sys/platform/pc32/acpica/acpi_machdep.c
sys/platform/pc32/acpica5/acpi_machdep.c
sys/platform/pc32/apm/apm.c
sys/platform/pc32/gnu/isa/dgb.c
sys/platform/pc32/i386/autoconf.c
sys/platform/pc32/i386/elan-mmcr.c
sys/platform/pc32/i386/mem.c
sys/platform/pc32/i386/perfmon.c
sys/platform/pc32/isa/asc.c
sys/sys/conf.h
sys/sys/device.h
sys/sys/disk.h
sys/sys/disklabel.h
sys/sys/disklabel32.h
sys/sys/odisklabel.h
sys/sys/systm.h
sys/sys/vnode.h
sys/vfs/coda/coda_fbsd.c
sys/vfs/coda/coda_vfsops.c
sys/vfs/gnu/ext2fs/ext2_vfsops.c
sys/vfs/hpfs/hpfs_vfsops.c
sys/vfs/isofs/cd9660/cd9660_vfsops.c
sys/vfs/mfs/mfs_vfsops.c
sys/vfs/mfs/mfs_vnops.c
sys/vfs/mfs/mfsnode.h
sys/vfs/msdosfs/msdosfs_vfsops.c
sys/vfs/nfs/nfs_subs.c
sys/vfs/nfs/nfs_vfsops.c
sys/vfs/ntfs/ntfs_vfsops.c
sys/vfs/nullfs/null_subr.c
sys/vfs/specfs/spec_vnops.c
sys/vfs/udf/udf_vfsops.c
sys/vfs/ufs/ffs_softdep.c
sys/vfs/ufs/ffs_vfsops.c
sys/vfs/ufs/ffs_vnops.c
sys/vm/vm_extern.h
sys/vm/vm_swap.c

index 118d4ce..517f13c 100644 (file)
@@ -31,7 +31,7 @@
 .\"
 .\"     @(#)newfs.8    8.6 (Berkeley) 5/3/95
 .\" $FreeBSD: src/sbin/newfs/newfs.8,v 1.26.2.15 2003/05/13 12:16:08 joerg Exp $
 .\"
 .\"     @(#)newfs.8    8.6 (Berkeley) 5/3/95
 .\" $FreeBSD: src/sbin/newfs/newfs.8,v 1.26.2.15 2003/05/13 12:16:08 joerg Exp $
-.\" $DragonFly: src/sbin/newfs/newfs.8,v 1.3 2003/12/01 04:36:57 dillon Exp $
+.\" $DragonFly: src/sbin/newfs/newfs.8,v 1.4 2004/05/19 22:52:34 dillon Exp $
 .\"
 .Dd May 13, 2003
 .Dt NEWFS 8
 .\"
 .Dd May 13, 2003
 .Dt NEWFS 8
@@ -131,6 +131,13 @@ since that is where the file system will be backed up when
 free memory gets low and the memory supporting
 the file system has to be paged.
 .Pp
 free memory gets low and the memory supporting
 the file system has to be paged.
 .Pp
+.Nm mount_mfs
+creates the raw character device
+.Pa /dev/mfs<PID>
+to represent the backing store while the mount is active.  This device may
+be read but not written and allows swap-based MFS filesystems to be dumped
+if desired.
+.Pp
 The following options define the general layout policies:
 .Bl -tag -width indent
 .It Fl T Ar disktype
 The following options define the general layout policies:
 .Bl -tag -width indent
 .It Fl T Ar disktype
index 69e8a7f..42090c3 100644 (file)
@@ -33,7 +33,7 @@
  * @(#) Copyright (c) 1983, 1989, 1993, 1994 The Regents of the University of California.  All rights reserved.
  * @(#)newfs.c 8.13 (Berkeley) 5/1/95
  * $FreeBSD: src/sbin/newfs/newfs.c,v 1.30.2.9 2003/05/13 12:03:55 joerg Exp $
  * @(#) Copyright (c) 1983, 1989, 1993, 1994 The Regents of the University of California.  All rights reserved.
  * @(#)newfs.c 8.13 (Berkeley) 5/1/95
  * $FreeBSD: src/sbin/newfs/newfs.c,v 1.30.2.9 2003/05/13 12:03:55 joerg Exp $
- * $DragonFly: src/sbin/newfs/newfs.c,v 1.8 2004/03/04 00:03:23 dillon Exp $
+ * $DragonFly: src/sbin/newfs/newfs.c,v 1.9 2004/05/19 22:52:34 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -200,11 +200,13 @@ int       unlabeled;
 #endif
 
 char   device[MAXPATHLEN];
 #endif
 
 char   device[MAXPATHLEN];
+char   mfsdevname[256];
 char   *progname;
 
 struct disklabel *getdisklabel(char *, int);
 static void rewritelabel(char *, int, struct disklabel *);
 static void usage(void);
 char   *progname;
 
 struct disklabel *getdisklabel(char *, int);
 static void rewritelabel(char *, int, struct disklabel *);
 static void usage(void);
+static void mfsintr(int signo);
 
 int
 main(int argc, char **argv)
 
 int
 main(int argc, char **argv)
@@ -222,7 +224,6 @@ main(int argc, char **argv)
 #ifdef MFS
        struct vfsconf vfc;
        int error;
 #ifdef MFS
        struct vfsconf vfc;
        int error;
-       char buf[BUFSIZ];
 #endif
 
        vflag = 0;
 #endif
 
        vflag = 0;
@@ -622,9 +623,11 @@ havelabel:
 #ifdef MFS
        if (mfs) {
                struct mfs_args args;
 #ifdef MFS
        if (mfs) {
                struct mfs_args args;
+               int udev;
 
 
-               snprintf(buf, sizeof(buf), "mfs:%d", getpid());
-               args.fspec = buf;
+               snprintf(mfsdevname, sizeof(mfsdevname), "/dev/mfs%d",
+                       getpid());
+               args.fspec = mfsdevname;
                args.export.ex_root = -2;
                if (mntflags & MNT_RDONLY)
                        args.export.ex_flags = MNT_EXRDONLY;
                args.export.ex_root = -2;
                if (mntflags & MNT_RDONLY)
                        args.export.ex_flags = MNT_EXRDONLY;
@@ -643,16 +646,32 @@ havelabel:
                if (error)
                        fatal("mfs filesystem not available");
 
                if (error)
                        fatal("mfs filesystem not available");
 
+               udev = (253 << 8) | (getpid() & 255) | 
+                       ((getpid() & ~0xFF) << 8);
+               if (mknod(mfsdevname, S_IFCHR | 0700, udev) < 0)
+                       printf("Warning: unable to create %s\n", mfsdevname);
+               signal(SIGINT, mfsintr);
                if (mount(vfc.vfc_name, argv[1], mntflags, &args) < 0)
                        fatal("%s: %s", argv[1], strerror(errno));
                if (mount(vfc.vfc_name, argv[1], mntflags, &args) < 0)
                        fatal("%s: %s", argv[1], strerror(errno));
-               if (filename) {
-                       munmap(membase,fssize * sectorsize);
-               }
+               signal(SIGINT, SIG_DFL);
+               mfsintr(SIGINT);
        }
 #endif
        exit(0);
 }
 
        }
 #endif
        exit(0);
 }
 
+#ifdef MFS
+
+static void
+mfsintr(int signo)
+{
+       if (filename)
+               munmap(membase, fssize * sectorsize);
+       remove(mfsdevname);
+}
+
+#endif
+
 #ifdef COMPAT
 char lmsg[] = "%s: can't read disk label; disk type must be specified";
 #else
 #ifdef COMPAT
 char lmsg[] = "%s: can't read disk label; disk type must be specified";
 #else
index 0f8027a..295a04e 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/cam_xpt.c,v 1.80.2.18 2002/12/09 17:31:55 gibbs Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/cam_xpt.c,v 1.80.2.18 2002/12/09 17:31:55 gibbs Exp $
- * $DragonFly: src/sys/bus/cam/cam_xpt.c,v 1.14 2004/05/13 23:49:09 dillon Exp $
+ * $DragonFly: src/sys/bus/cam/cam_xpt.c,v 1.15 2004/05/19 22:52:37 dillon Exp $
  */
 #include <sys/param.h>
 #include <sys/systm.h>
  */
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -882,6 +882,7 @@ dev_allocq_is_runnable(struct cam_devq *devq)
 static void
 xpt_periph_init()
 {
 static void
 xpt_periph_init()
 {
+       cdevsw_add(&xpt_cdevsw, 0, 0);
        make_dev(&xpt_cdevsw, 0, UID_ROOT, GID_OPERATOR, 0600, "xpt0");
 }
 
        make_dev(&xpt_cdevsw, 0, UID_ROOT, GID_OPERATOR, 0600, "xpt0");
 }
 
index a117cf9..1a073df 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_cd.c,v 1.31.2.16 2003/10/21 22:26:11 thomas Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_cd.c,v 1.31.2.16 2003/10/21 22:26:11 thomas Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_cd.c,v 1.14 2004/05/13 23:49:11 dillon Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_cd.c,v 1.15 2004/05/19 22:52:38 dillon Exp $
  */
 /*
  * Portions of this driver taken from the original FreeBSD cd driver.
  */
 /*
  * Portions of this driver taken from the original FreeBSD cd driver.
@@ -545,7 +545,7 @@ cdcleanup(struct cam_periph *periph)
        }
        devstat_remove_entry(&softc->device_stats);
        cam_extend_release(cdperiphs, periph->unit_number);
        }
        devstat_remove_entry(&softc->device_stats);
        cam_extend_release(cdperiphs, periph->unit_number);
-       if (softc->disk.d_dev) {
+       if (softc->disk.d_rawdev) {
                disk_destroy(&softc->disk);
        }
        free(softc, M_DEVBUF);
                disk_destroy(&softc->disk);
        }
        free(softc, M_DEVBUF);
@@ -2856,7 +2856,7 @@ cdcheckmedia(struct cam_periph *periph)
                         * We don't bother checking the return value here,
                         * since we already have an error...
                         */
                         * We don't bother checking the return value here,
                         * since we already have an error...
                         */
-                       dsioctl(softc->disk.d_dev, DIOCSYNCSLICEINFO,
+                       dsioctl(softc->disk.d_cdev, DIOCSYNCSLICEINFO,
                                /*data*/(caddr_t)&force, /*flags*/ 0,
                                &softc->disk.d_slice);
                }
                                /*data*/(caddr_t)&force, /*flags*/ 0,
                                &softc->disk.d_slice);
                }
@@ -2887,7 +2887,7 @@ cdcheckmedia(struct cam_periph *periph)
 
                        force = 1;
 
 
                        force = 1;
 
-                       error = dsioctl(softc->disk.d_dev, DIOCSYNCSLICEINFO,
+                       error = dsioctl(softc->disk.d_cdev, DIOCSYNCSLICEINFO,
                                        /*data*/(caddr_t)&force, /*flags*/ 0,
                                        &softc->disk.d_slice);
                        if (error != 0) {
                                        /*data*/(caddr_t)&force, /*flags*/ 0,
                                        &softc->disk.d_slice);
                        if (error != 0) {
index 8e550d7..f29d608 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_ch.c,v 1.20.2.2 2000/10/31 08:09:49 dwmalone Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_ch.c,v 1.20.2.2 2000/10/31 08:09:49 dwmalone Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_ch.c,v 1.9 2004/05/13 23:49:11 dillon Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_ch.c,v 1.10 2004/05/19 22:52:38 dillon Exp $
  */
 /*
  * Derived from the NetBSD SCSI changer driver.
  */
 /*
  * Derived from the NetBSD SCSI changer driver.
@@ -148,7 +148,6 @@ struct ch_softc {
        ch_quirks       quirks;
        union ccb       saved_ccb;
        struct devstat  device_stats;
        ch_quirks       quirks;
        union ccb       saved_ccb;
        struct devstat  device_stats;
-       dev_t           dev;
 
        int             sc_picker;      /* current picker */
 
 
        int             sc_picker;      /* current picker */
 
@@ -311,10 +310,10 @@ chcleanup(struct cam_periph *periph)
        softc = (struct ch_softc *)periph->softc;
 
        devstat_remove_entry(&softc->device_stats);
        softc = (struct ch_softc *)periph->softc;
 
        devstat_remove_entry(&softc->device_stats);
-       destroy_dev(softc->dev);
        cam_extend_release(chperiphs, periph->unit_number);
        xpt_print_path(periph->path);
        printf("removing device entry\n");
        cam_extend_release(chperiphs, periph->unit_number);
        xpt_print_path(periph->path);
        printf("removing device entry\n");
+       cdevsw_remove(&ch_cdevsw, -1, periph->unit_number);
        free(softc, M_DEVBUF);
 }
 
        free(softc, M_DEVBUF);
 }
 
@@ -395,9 +394,10 @@ chregister(struct cam_periph *periph, void *arg)
                          DEVSTAT_PRIORITY_OTHER);
 
        /* Register the device */
                          DEVSTAT_PRIORITY_OTHER);
 
        /* Register the device */
-       softc->dev = make_dev(&ch_cdevsw, periph->unit_number, UID_ROOT,
-                             GID_OPERATOR, 0600, "%s%d", periph->periph_name,
-                             periph->unit_number);
+       cdevsw_add(&ch_cdevsw, -1, periph->unit_number);
+       make_dev(&ch_cdevsw, periph->unit_number, UID_ROOT,
+                 GID_OPERATOR, 0600, "%s%d", periph->periph_name,
+                 periph->unit_number);
 
        /*
         * Add an async callback so that we get
 
        /*
         * Add an async callback so that we get
index 5795b9a..bad41f4 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.42.2.46 2003/10/21 22:18:19 thomas Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.42.2.46 2003/10/21 22:18:19 thomas Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_da.c,v 1.16 2004/05/13 23:49:11 dillon Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_da.c,v 1.17 2004/05/19 22:52:38 dillon Exp $
  */
 
 #ifdef _KERNEL
  */
 
 #ifdef _KERNEL
@@ -807,20 +807,15 @@ daioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct thread *td)
 }
 
 static int
 }
 
 static int
-dadump(dev_t dev)
+dadump(dev_t dev, u_int num, u_int blknum, u_int secsize) 
 {
        struct      cam_periph *periph;
        struct      da_softc *softc;
        u_int       unit;
 {
        struct      cam_periph *periph;
        struct      da_softc *softc;
        u_int       unit;
-       u_int       part;
-       u_int       secsize;
-       u_int       num;        /* number of sectors to write */
-       u_int       blknum;
        long        blkcnt;
        vm_paddr_t  addr;       
        struct      ccb_scsiio csio;
        int         dumppages = MAXDUMPPGS;
        long        blkcnt;
        vm_paddr_t  addr;       
        struct      ccb_scsiio csio;
        int         dumppages = MAXDUMPPGS;
-       int         error;
        int         i;
 
        /* toss any characters present prior to dump */
        int         i;
 
        /* toss any characters present prior to dump */
@@ -828,7 +823,6 @@ dadump(dev_t dev)
                ;
 
        unit = dkunit(dev);
                ;
 
        unit = dkunit(dev);
-       part = dkpart(dev);
        periph = cam_extend_get(daperiphs, unit);
        if (periph == NULL) {
                return (ENXIO);
        periph = cam_extend_get(daperiphs, unit);
        if (periph == NULL) {
                return (ENXIO);
@@ -838,10 +832,6 @@ dadump(dev_t dev)
        if ((softc->flags & DA_FLAG_PACK_INVALID) != 0)
                return (ENXIO);
 
        if ((softc->flags & DA_FLAG_PACK_INVALID) != 0)
                return (ENXIO);
 
-       error = disk_dumpcheck(dev, &num, &blknum, &secsize);
-       if (error)
-               return (error);
-
        addr = 0;       /* starting address */
        blkcnt = howmany(PAGE_SIZE, secsize);
 
        addr = 0;       /* starting address */
        blkcnt = howmany(PAGE_SIZE, secsize);
 
@@ -1060,7 +1050,7 @@ dacleanup(struct cam_periph *periph)
                xpt_print_path(periph->path);
                printf("can't remove sysctl context\n");
        }
                xpt_print_path(periph->path);
                printf("can't remove sysctl context\n");
        }
-       if (softc->disk.d_dev) {
+       if (softc->disk.d_rawdev) {
                disk_destroy(&softc->disk);
        }
        free(softc, M_DEVBUF);
                disk_destroy(&softc->disk);
        }
        free(softc, M_DEVBUF);
index 15f7bb7..b268aac 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_pass.c,v 1.19 2000/01/17 06:27:37 mjacob Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_pass.c,v 1.19 2000/01/17 06:27:37 mjacob Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_pass.c,v 1.11 2004/05/13 23:49:11 dillon Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_pass.c,v 1.12 2004/05/19 22:52:38 dillon Exp $
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -81,7 +81,6 @@ struct pass_softc {
        struct          buf_queue_head buf_queue;
        union ccb       saved_ccb;
        struct devstat  device_stats;
        struct          buf_queue_head buf_queue;
        union ccb       saved_ccb;
        struct devstat  device_stats;
-       dev_t           dev;
 };
 
 #define PASS_CDEV_MAJOR 31
 };
 
 #define PASS_CDEV_MAJOR 31
@@ -236,14 +235,13 @@ passcleanup(struct cam_periph *periph)
 
        devstat_remove_entry(&softc->device_stats);
 
 
        devstat_remove_entry(&softc->device_stats);
 
-       destroy_dev(softc->dev);
-
        cam_extend_release(passperiphs, periph->unit_number);
 
        if (bootverbose) {
                xpt_print_path(periph->path);
                printf("removing device entry\n");
        }
        cam_extend_release(passperiphs, periph->unit_number);
 
        if (bootverbose) {
                xpt_print_path(periph->path);
                printf("removing device entry\n");
        }
+       cdevsw_remove(&pass_cdevsw, -1, periph->unit_number);
        free(softc, M_DEVBUF);
 }
 
        free(softc, M_DEVBUF);
 }
 
@@ -325,9 +323,10 @@ passregister(struct cam_periph *periph, void *arg)
                          DEVSTAT_PRIORITY_PASS);
 
        /* Register the device */
                          DEVSTAT_PRIORITY_PASS);
 
        /* Register the device */
-       softc->dev = make_dev(&pass_cdevsw, periph->unit_number, UID_ROOT,
-                             GID_OPERATOR, 0600, "%s%d", periph->periph_name,
-                             periph->unit_number);
+       cdevsw_add(&pass_cdevsw, -1, periph->unit_number);
+       make_dev(&pass_cdevsw, periph->unit_number, UID_ROOT,
+                 GID_OPERATOR, 0600, "%s%d", periph->periph_name,
+                 periph->unit_number);
 
        /*
         * Add an async callback so that we get
 
        /*
         * Add an async callback so that we get
index c8cda6c..1caa81b 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_pt.c,v 1.17 2000/01/17 06:27:37 mjacob Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_pt.c,v 1.17 2000/01/17 06:27:37 mjacob Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_pt.c,v 1.10 2004/05/13 23:49:11 dillon Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_pt.c,v 1.11 2004/05/19 22:52:38 dillon Exp $
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -349,9 +349,10 @@ ptctor(struct cam_periph *periph, void *arg)
                          SID_TYPE(&cgd->inq_data) | DEVSTAT_TYPE_IF_SCSI,
                          DEVSTAT_PRIORITY_OTHER);
 
                          SID_TYPE(&cgd->inq_data) | DEVSTAT_TYPE_IF_SCSI,
                          DEVSTAT_PRIORITY_OTHER);
 
-       softc->dev = make_dev(&pt_cdevsw, periph->unit_number, UID_ROOT,
-                             GID_OPERATOR, 0600, "%s%d", periph->periph_name,
-                             periph->unit_number);
+       cdevsw_add(&pt_cdevsw, -1, periph->unit_number);
+       make_dev(&pt_cdevsw, periph->unit_number, UID_ROOT,
+                 GID_OPERATOR, 0600, "%s%d", periph->periph_name,
+                 periph->unit_number);
        /*
         * Add async callbacks for bus reset and
         * bus device reset calls.  I don't bother
        /*
         * Add async callbacks for bus reset and
         * bus device reset calls.  I don't bother
@@ -431,11 +432,10 @@ ptdtor(struct cam_periph *periph)
 
        devstat_remove_entry(&softc->device_stats);
 
 
        devstat_remove_entry(&softc->device_stats);
 
-       destroy_dev(softc->dev);
-
        cam_extend_release(ptperiphs, periph->unit_number);
        xpt_print_path(periph->path);
        printf("removing device entry\n");
        cam_extend_release(ptperiphs, periph->unit_number);
        xpt_print_path(periph->path);
        printf("removing device entry\n");
+       cdevsw_remove(&pt_cdevsw, -1, periph->unit_number);
        free(softc, M_DEVBUF);
 }
 
        free(softc, M_DEVBUF);
 }
 
index 5e84cc7..a4e1ce0 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * $FreeBSD: src/sys/cam/scsi/scsi_sa.c,v 1.45.2.13 2002/12/17 17:08:50 trhodes Exp $
 /*
  * $FreeBSD: src/sys/cam/scsi/scsi_sa.c,v 1.45.2.13 2002/12/17 17:08:50 trhodes Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_sa.c,v 1.11 2004/05/13 23:49:11 dillon Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_sa.c,v 1.12 2004/05/19 22:52:38 dillon Exp $
  *
  * Implementation of SCSI Sequential Access Peripheral driver for CAM.
  *
  *
  * Implementation of SCSI Sequential Access Peripheral driver for CAM.
  *
@@ -195,18 +195,10 @@ typedef enum {
        ((ctl << 29) | ((unit & 0x3f0) << 16) | ((unit & 0xf) << 4) | \
        (mode << 0x2) | (access & 0x3))
 
        ((ctl << 29) | ((unit & 0x3f0) << 16) | ((unit & 0xf) << 4) | \
        (mode << 0x2) | (access & 0x3))
 
+#define SA_UNITMASK    SAMINOR(0, -1, 0, 0)
+#define SA_UNIT(unit)  SAMINOR(0, unit, 0, 0)
+
 #define SA_NUM_MODES   4
 #define SA_NUM_MODES   4
-struct sa_devs {
-       dev_t   ctl_dev;
-       struct sa_mode_devs {
-               dev_t   r_dev;
-               dev_t   nr_dev;
-               dev_t   er_dev;
-       } mode_devs[SA_NUM_MODES];
-       dev_t   r_dev;
-       dev_t   nr_dev;
-       dev_t   er_dev;
-};
 
 struct sa_softc {
        sa_state        state;
 
 struct sa_softc {
        sa_state        state;
@@ -215,7 +207,6 @@ struct sa_softc {
        struct          buf_queue_head buf_queue;
        int             queue_count;
        struct          devstat device_stats;
        struct          buf_queue_head buf_queue;
        int             queue_count;
        struct          devstat device_stats;
-       struct sa_devs  devs;
        int             blk_gran;
        int             blk_mask;
        int             blk_shift;
        int             blk_gran;
        int             blk_mask;
        int             blk_shift;
@@ -1365,26 +1356,15 @@ static void
 sacleanup(struct cam_periph *periph)
 {
        struct sa_softc *softc;
 sacleanup(struct cam_periph *periph)
 {
        struct sa_softc *softc;
-       int i;
 
        softc = (struct sa_softc *)periph->softc;
 
        devstat_remove_entry(&softc->device_stats);
 
 
        softc = (struct sa_softc *)periph->softc;
 
        devstat_remove_entry(&softc->device_stats);
 
-       destroy_dev(softc->devs.ctl_dev);
-       destroy_dev(softc->devs.r_dev);
-       destroy_dev(softc->devs.nr_dev);
-       destroy_dev(softc->devs.er_dev);
-
-       for (i = 0; i < SA_NUM_MODES; i++) {
-               destroy_dev(softc->devs.mode_devs[i].r_dev);
-               destroy_dev(softc->devs.mode_devs[i].nr_dev);
-               destroy_dev(softc->devs.mode_devs[i].er_dev);
-       }
-
        cam_extend_release(saperiphs, periph->unit_number);
        xpt_print_path(periph->path);
        printf("removing device entry\n");
        cam_extend_release(saperiphs, periph->unit_number);
        xpt_print_path(periph->path);
        printf("removing device entry\n");
+       cdevsw_remove(&sa_cdevsw, SA_UNITMASK, SA_UNIT(periph->unit_number));
        free(softc, M_DEVBUF);
 }
 
        free(softc, M_DEVBUF);
 }
 
@@ -1489,36 +1469,37 @@ saregister(struct cam_periph *periph, void *arg)
            DEVSTAT_BS_UNAVAILABLE, SID_TYPE(&cgd->inq_data) |
            DEVSTAT_TYPE_IF_SCSI, DEVSTAT_PRIORITY_TAPE);
 
            DEVSTAT_BS_UNAVAILABLE, SID_TYPE(&cgd->inq_data) |
            DEVSTAT_TYPE_IF_SCSI, DEVSTAT_PRIORITY_TAPE);
 
-       softc->devs.ctl_dev = make_dev(&sa_cdevsw, SAMINOR(SA_CTLDEV,
+       cdevsw_add(&sa_cdevsw, SA_UNITMASK, SA_UNIT(periph->unit_number));
+       make_dev(&sa_cdevsw, SAMINOR(SA_CTLDEV,
            periph->unit_number, 0, SA_ATYPE_R), UID_ROOT, GID_OPERATOR,
            0660, "r%s%d.ctl", periph->periph_name, periph->unit_number);
 
            periph->unit_number, 0, SA_ATYPE_R), UID_ROOT, GID_OPERATOR,
            0660, "r%s%d.ctl", periph->periph_name, periph->unit_number);
 
-       softc->devs.r_dev = make_dev(&sa_cdevsw, SAMINOR(SA_NOT_CTLDEV,
+       make_dev(&sa_cdevsw, SAMINOR(SA_NOT_CTLDEV,
            periph->unit_number, 0, SA_ATYPE_R), UID_ROOT, GID_OPERATOR,
            0660, "r%s%d", periph->periph_name, periph->unit_number);
 
            periph->unit_number, 0, SA_ATYPE_R), UID_ROOT, GID_OPERATOR,
            0660, "r%s%d", periph->periph_name, periph->unit_number);
 
-       softc->devs.nr_dev = make_dev(&sa_cdevsw, SAMINOR(SA_NOT_CTLDEV,
+       make_dev(&sa_cdevsw, SAMINOR(SA_NOT_CTLDEV,
            periph->unit_number, 0, SA_ATYPE_NR), UID_ROOT, GID_OPERATOR,
            0660, "nr%s%d", periph->periph_name, periph->unit_number);
 
            periph->unit_number, 0, SA_ATYPE_NR), UID_ROOT, GID_OPERATOR,
            0660, "nr%s%d", periph->periph_name, periph->unit_number);
 
-       softc->devs.er_dev = make_dev(&sa_cdevsw, SAMINOR(SA_NOT_CTLDEV,
+       make_dev(&sa_cdevsw, SAMINOR(SA_NOT_CTLDEV,
            periph->unit_number, 0, SA_ATYPE_ER), UID_ROOT, GID_OPERATOR,
            0660, "er%s%d", periph->periph_name, periph->unit_number);
 
        for (i = 0; i < SA_NUM_MODES; i++) {
 
            periph->unit_number, 0, SA_ATYPE_ER), UID_ROOT, GID_OPERATOR,
            0660, "er%s%d", periph->periph_name, periph->unit_number);
 
        for (i = 0; i < SA_NUM_MODES; i++) {
 
-               softc->devs.mode_devs[i].r_dev = make_dev(&sa_cdevsw,
+               make_dev(&sa_cdevsw,
                    SAMINOR(SA_NOT_CTLDEV, periph->unit_number, i, SA_ATYPE_R),
                    UID_ROOT, GID_OPERATOR, 0660, "r%s%d.%d",
                    periph->periph_name, periph->unit_number, i);
 
                    SAMINOR(SA_NOT_CTLDEV, periph->unit_number, i, SA_ATYPE_R),
                    UID_ROOT, GID_OPERATOR, 0660, "r%s%d.%d",
                    periph->periph_name, periph->unit_number, i);
 
-               softc->devs.mode_devs[i].nr_dev = make_dev(&sa_cdevsw,
+               make_dev(&sa_cdevsw,
                    SAMINOR(SA_NOT_CTLDEV, periph->unit_number, i, SA_ATYPE_NR),
                    UID_ROOT, GID_OPERATOR, 0660, "nr%s%d.%d",
                    periph->periph_name, periph->unit_number, i);
 
 
                    SAMINOR(SA_NOT_CTLDEV, periph->unit_number, i, SA_ATYPE_NR),
                    UID_ROOT, GID_OPERATOR, 0660, "nr%s%d.%d",
                    periph->periph_name, periph->unit_number, i);
 
 
-               softc->devs.mode_devs[i].er_dev = make_dev(&sa_cdevsw,
+               make_dev(&sa_cdevsw,
                    SAMINOR(SA_NOT_CTLDEV, periph->unit_number, i, SA_ATYPE_ER),
                    UID_ROOT, GID_OPERATOR, 0660, "er%s%d.%d",
                    periph->periph_name, periph->unit_number, i);
                    SAMINOR(SA_NOT_CTLDEV, periph->unit_number, i, SA_ATYPE_ER),
                    UID_ROOT, GID_OPERATOR, 0660, "er%s%d.%d",
                    periph->periph_name, periph->unit_number, i);
index 6ec1e46..6f9224f 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/cam/scsi/scsi_ses.c,v 1.8.2.2 2000/08/08 23:19:21 mjacob Exp $ */
 /* $FreeBSD: src/sys/cam/scsi/scsi_ses.c,v 1.8.2.2 2000/08/08 23:19:21 mjacob Exp $ */
-/* $DragonFly: src/sys/bus/cam/scsi/scsi_ses.c,v 1.10 2004/05/13 23:49:11 dillon Exp $ */
+/* $DragonFly: src/sys/bus/cam/scsi/scsi_ses.c,v 1.11 2004/05/19 22:52:38 dillon Exp $ */
 /*
  * Copyright (c) 2000 Matthew Jacob
  * All rights reserved.
 /*
  * Copyright (c) 2000 Matthew Jacob
  * All rights reserved.
@@ -149,7 +149,6 @@ struct ses_softc {
        ses_encstat     ses_encstat;    /* overall status */
        u_int8_t        ses_flags;
        union ccb       ses_saved_ccb;
        ses_encstat     ses_encstat;    /* overall status */
        u_int8_t        ses_flags;
        union ccb       ses_saved_ccb;
-       dev_t           ses_dev;
        struct cam_periph *periph;
 };
 #define        SES_FLAG_INVALID        0x01
        struct cam_periph *periph;
 };
 #define        SES_FLAG_INVALID        0x01
@@ -271,11 +270,10 @@ sescleanup(struct cam_periph *periph)
 
        softc = (struct ses_softc *)periph->softc;
 
 
        softc = (struct ses_softc *)periph->softc;
 
-       destroy_dev(softc->ses_dev);
-
        cam_extend_release(sesperiphs, periph->unit_number);
        xpt_print_path(periph->path);
        printf("removing device entry\n");
        cam_extend_release(sesperiphs, periph->unit_number);
        xpt_print_path(periph->path);
        printf("removing device entry\n");
+       cdevsw_remove(&ses_cdevsw, -1, periph->unit_number);
        free(softc, M_DEVBUF);
 }
 
        free(softc, M_DEVBUF);
 }
 
@@ -379,9 +377,10 @@ sesregister(struct cam_periph *periph, void *arg)
 
        cam_extend_set(sesperiphs, periph->unit_number, periph);
 
 
        cam_extend_set(sesperiphs, periph->unit_number, periph);
 
-       softc->ses_dev = make_dev(&ses_cdevsw, periph->unit_number,
-           UID_ROOT, GID_OPERATOR, 0600, "%s%d",
-           periph->periph_name, periph->unit_number);
+       cdevsw_add(&ses_cdevsw, -1, periph->unit_number);
+       make_dev(&ses_cdevsw, periph->unit_number,
+                   UID_ROOT, GID_OPERATOR, 0600, "%s%d",
+                   periph->periph_name, periph->unit_number);
 
        /*
         * Add an async callback so that we get
 
        /*
         * Add an async callback so that we get
index 9ca7ace..5401383 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.22.2.7 2003/02/18 22:07:10 njl Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/cam/scsi/scsi_target.c,v 1.22.2.7 2003/02/18 22:07:10 njl Exp $
- * $DragonFly: src/sys/bus/cam/scsi/scsi_target.c,v 1.8 2004/05/13 23:49:11 dillon Exp $
+ * $DragonFly: src/sys/bus/cam/scsi/scsi_target.c,v 1.9 2004/05/19 22:52:38 dillon Exp $
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -174,6 +174,7 @@ targopen(dev_t dev, int flags, int fmt, struct proc *p)
        
        /* Mark device busy before any potentially blocking operations */
        dev->si_drv1 = (void *)~0;
        
        /* Mark device busy before any potentially blocking operations */
        dev->si_drv1 = (void *)~0;
+       reference_dev(dev);             /* save ref for later destroy_dev() */
 
        /* Create the targ device, allocate its softc, initialize it */
        make_dev(&targ_cdevsw, minor(dev), UID_ROOT, GID_WHEEL, 0600,
 
        /* Create the targ device, allocate its softc, initialize it */
        make_dev(&targ_cdevsw, minor(dev), UID_ROOT, GID_WHEEL, 0600,
@@ -208,8 +209,10 @@ targclose(dev_t dev, int flag, int fmt, struct proc *p)
                        cam_periph_invalidate(softc->periph);
                        softc->periph = NULL;
                }
                        cam_periph_invalidate(softc->periph);
                        softc->periph = NULL;
                }
-               destroy_dev(dev);
+               destroy_dev(dev);       /* eats the open ref */
                FREE(softc, M_TARG);
                FREE(softc, M_TARG);
+       } else {
+               release_dev(dev);
        }
        return (error);
 }
        }
        return (error);
 }
@@ -1006,7 +1009,7 @@ targgetdescr(struct targ_softc *softc)
 static void
 targinit(void)
 {
 static void
 targinit(void)
 {
-       cdevsw_add(&targ_cdevsw);
+       cdevsw_add(&targ_cdevsw, 0, 0);
 }
 
 static void
 }
 
 static void
index 36f6552..bb45984 100644 (file)
@@ -32,7 +32,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  * 
  * $FreeBSD: src/sys/dev/firewire/firewire.h,v 1.17 2003/11/07 09:01:41 simokawa Exp $
  * POSSIBILITY OF SUCH DAMAGE.
  * 
  * $FreeBSD: src/sys/dev/firewire/firewire.h,v 1.17 2003/11/07 09:01:41 simokawa Exp $
- * $DragonFly: src/sys/bus/firewire/firewire.h,v 1.4 2004/02/05 17:51:43 joerg Exp $
+ * $DragonFly: src/sys/bus/firewire/firewire.h,v 1.5 2004/05/19 22:52:38 dillon Exp $
  *
  */
 
  *
  */
 
@@ -422,6 +422,9 @@ struct fw_crom_buf {
 #define DEV2UNIT(x)    ((dev2unit(x) & 0xff00) >> 8)
 #define DEV2SUB(x)     (dev2unit(x) & 0xff)
 
 #define DEV2UNIT(x)    ((dev2unit(x) & 0xff00) >> 8)
 #define DEV2SUB(x)     (dev2unit(x) & 0xff)
 
+#define FW_UNITMASK    MAKEMINOR(0, -1, 0)
+#define FW_UNIT(unit)  MAKEMINOR(0, unit, 0)
+
 #define FWMEM_FLAG     0x10000
 #define DEV_FWMEM(x)   (dev2unit(x) & FWMEM_FLAG)
 #endif
 #define FWMEM_FLAG     0x10000
 #define DEV_FWMEM(x)   (dev2unit(x) & FWMEM_FLAG)
 #endif
index c2beebd..e8d09f3 100644 (file)
@@ -32,7 +32,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  * 
  * $FreeBSD: src/sys/dev/firewire/fwdev.c,v 1.36 2004/01/22 14:41:17 simokawa Exp $
  * POSSIBILITY OF SUCH DAMAGE.
  * 
  * $FreeBSD: src/sys/dev/firewire/fwdev.c,v 1.36 2004/01/22 14:41:17 simokawa Exp $
- * $DragonFly: src/sys/bus/firewire/fwdev.c,v 1.8 2004/04/07 05:54:27 dillon Exp $
+ * $DragonFly: src/sys/bus/firewire/fwdev.c,v 1.9 2004/05/19 22:52:38 dillon Exp $
  *
  */
 
  *
  */
 
@@ -789,41 +789,21 @@ fw_strategy(struct bio *bp)
 int
 fwdev_makedev(struct firewire_softc *sc)
 {
 int
 fwdev_makedev(struct firewire_softc *sc)
 {
-       int err = 0;
-
-#if defined(__DragonFly__) || __FreeBSD_version < 500000
-       cdevsw_add(&firewire_cdevsw);
-#else
-       dev_t d;
        int unit;
 
        unit = device_get_unit(sc->fc->bdev);
        int unit;
 
        unit = device_get_unit(sc->fc->bdev);
-       sc->dev = make_dev(&firewire_cdevsw, MAKEMINOR(0, unit, 0),
-                       UID_ROOT, GID_OPERATOR, 0660,
-                       "fw%d.%d", unit, 0);
-       d = make_dev(&firewire_cdevsw,
-                       MAKEMINOR(FWMEM_FLAG, unit, 0),
-                       UID_ROOT, GID_OPERATOR, 0660,
-                       "fwmem%d.%d", unit, 0);
-       dev_depends(sc->dev, d);
-       make_dev_alias(sc->dev, "fw%d", unit);
-       make_dev_alias(d, "fwmem%d", unit);
-#endif
-
-       return (err);
+       cdevsw_add(&firewire_cdevsw, FW_UNITMASK, FW_UNIT(unit));
+       return(0);
 }
 
 int
 fwdev_destroydev(struct firewire_softc *sc)
 {
 }
 
 int
 fwdev_destroydev(struct firewire_softc *sc)
 {
-       int err = 0;
+       int unit;
 
 
-#if defined(__DragonFly__) || __FreeBSD_version < 500000
-       cdevsw_remove(&firewire_cdevsw);
-#else
-       destroy_dev(sc->dev);
-#endif
-       return (err);
+       unit = device_get_unit(sc->fc->bdev);
+       cdevsw_remove(&firewire_cdevsw, FW_UNITMASK, FW_UNIT(unit));
+       return(0);
 }
 
 #if defined(__FreeBSD__) && __FreeBSD_version >= 500000
 }
 
 #if defined(__FreeBSD__) && __FreeBSD_version >= 500000
index 8825f1b..b0333ca 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/iicbus/iic.c,v 1.18 1999/11/18 05:43:32 peter Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/iicbus/iic.c,v 1.18 1999/11/18 05:43:32 peter Exp $
- * $DragonFly: src/sys/bus/iicbus/iic.c,v 1.6 2004/05/13 23:49:13 dillon Exp $
+ * $DragonFly: src/sys/bus/iicbus/iic.c,v 1.7 2004/05/19 22:52:38 dillon Exp $
  *
  */
 #include <sys/param.h>
  *
  */
 #include <sys/param.h>
@@ -133,6 +133,7 @@ iic_probe(device_t dev)
 static int
 iic_attach(device_t dev)
 {
 static int
 iic_attach(device_t dev)
 {
+       cdevsw_add(&iic_cdevsw, -1, device_get_unit(dev));
        make_dev(&iic_cdevsw, device_get_unit(dev),     /* XXX cleanup */
                        UID_ROOT, GID_WHEEL,
                        0600, "iic%d", device_get_unit(dev));
        make_dev(&iic_cdevsw, device_get_unit(dev),     /* XXX cleanup */
                        UID_ROOT, GID_WHEEL,
                        0600, "iic%d", device_get_unit(dev));
index 1a5877f..92171d7 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/vga_isa.c,v 1.17 2000/01/29 15:08:56 peter Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/vga_isa.c,v 1.17 2000/01/29 15:08:56 peter Exp $
- * $DragonFly: src/sys/bus/isa/vga_isa.c,v 1.7 2004/05/13 23:49:13 dillon Exp $
+ * $DragonFly: src/sys/bus/isa/vga_isa.c,v 1.8 2004/05/19 22:52:38 dillon Exp $
  */
 
 #include "opt_vga.h"
  */
 
 #include "opt_vga.h"
@@ -164,7 +164,9 @@ isavga_attach(device_t dev)
 
 #ifdef FB_INSTALL_CDEV
        /* attach a virtual frame buffer device */
 
 #ifdef FB_INSTALL_CDEV
        /* attach a virtual frame buffer device */
+       cdevsw_add(&isavga_cdevsw, VGA_MKMINOR(-1), VGA_MKMINOR(unit));
        sc->devt = make_dev(&isavga_cdevsw, VGA_MKMINOR(unit), 0, 0, 02660, "vga%x", VGA_MKMINOR(unit));
        sc->devt = make_dev(&isavga_cdevsw, VGA_MKMINOR(unit), 0, 0, 02660, "vga%x", VGA_MKMINOR(unit));
+       reference_dev(sc->devt);
        error = fb_attach(sc->devt, sc->adp);
        if (error)
                return error;
        error = fb_attach(sc->devt, sc->adp);
        if (error)
                return error;
index a8023f4..e16b113 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/pci/pci.c,v 1.141.2.15 2002/04/30 17:48:18 tmm Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/pci/pci.c,v 1.141.2.15 2002/04/30 17:48:18 tmm Exp $
- * $DragonFly: src/sys/bus/pci/pci.c,v 1.20 2004/05/13 23:49:13 dillon Exp $
+ * $DragonFly: src/sys/bus/pci/pci.c,v 1.21 2004/05/19 22:52:39 dillon Exp $
  *
  */
 
  *
  */
 
@@ -1373,6 +1373,10 @@ static int
 pci_attach(device_t dev)
 {
        int busno;
 pci_attach(device_t dev)
 {
        int busno;
+       int lunit = device_get_unit(dev);
+
+       cdevsw_add(&pcicdev, -1, lunit);
+       make_dev(&pcicdev, lunit, UID_ROOT, GID_WHEEL, 0644, "pci%d", lunit);
 
         /*
          * Since there can be multiple independantly numbered PCI
 
         /*
          * Since there can be multiple independantly numbered PCI
@@ -1752,17 +1756,11 @@ pci_assign_interrupt_method(device_t dev, device_t child)
 static int
 pci_modevent(module_t mod, int what, void *arg)
 {
 static int
 pci_modevent(module_t mod, int what, void *arg)
 {
-       static dev_t pci_cdev;
-
        switch (what) {
        case MOD_LOAD:
                STAILQ_INIT(&pci_devq);
        switch (what) {
        case MOD_LOAD:
                STAILQ_INIT(&pci_devq);
-               pci_cdev = make_dev(&pcicdev, 0, UID_ROOT, GID_WHEEL, 0644,
-                                   "pci");
                break;
                break;
-
        case MOD_UNLOAD:
        case MOD_UNLOAD:
-               destroy_dev(pci_cdev);
                break;
        }
 
                break;
        }
 
index 60616de..7308f4b 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/smbus/smb.c,v 1.20 1999/11/18 05:44:56 peter Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/smbus/smb.c,v 1.20 1999/11/18 05:44:56 peter Exp $
- * $DragonFly: src/sys/bus/smbus/smb.c,v 1.6 2004/05/13 23:49:13 dillon Exp $
+ * $DragonFly: src/sys/bus/smbus/smb.c,v 1.7 2004/05/19 22:52:39 dillon Exp $
  *
  */
 #include <sys/param.h>
  *
  */
 #include <sys/param.h>
@@ -134,6 +134,7 @@ smb_probe(device_t dev)
 static int
 smb_attach(device_t dev)
 {
 static int
 smb_attach(device_t dev)
 {
+       cdevsw_add(&smb_cdevsw, -1, device_get_unit(dev));
        make_dev(&smb_cdevsw, device_get_unit(dev),     /* XXX cleanup */
                        UID_ROOT, GID_WHEEL,
                        0600, "smb%d", device_get_unit(dev));
        make_dev(&smb_cdevsw, device_get_unit(dev),     /* XXX cleanup */
                        UID_ROOT, GID_WHEEL,
                        0600, "smb%d", device_get_unit(dev));
index c582366..bf914c9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * $NetBSD: usb.c,v 1.68 2002/02/20 20:30:12 christos Exp $
  * $FreeBSD: src/sys/dev/usb/usb.c,v 1.95 2003/11/09 23:54:21 joe Exp $
 /*
  * $NetBSD: usb.c,v 1.68 2002/02/20 20:30:12 christos Exp $
  * $FreeBSD: src/sys/dev/usb/usb.c,v 1.95 2003/11/09 23:54:21 joe Exp $
- * $DragonFly: src/sys/bus/usb/usb.c,v 1.13 2004/05/13 23:49:14 dillon Exp $
+ * $DragonFly: src/sys/bus/usb/usb.c,v 1.14 2004/05/19 22:52:39 dillon Exp $
  */
 
 /* Also already merged from NetBSD:
  */
 
 /* Also already merged from NetBSD:
@@ -317,14 +317,16 @@ USB_ATTACH(usb)
        usb_create_event_thread(sc);
        /* The per controller devices (used for usb_discover) */
        /* XXX This is redundant now, but old usbd's will want it */
        usb_create_event_thread(sc);
        /* The per controller devices (used for usb_discover) */
        /* XXX This is redundant now, but old usbd's will want it */
-       make_dev(&usb_cdevsw, device_get_unit(self), UID_ROOT, GID_OPERATOR,
-               0660, "usb%d", device_get_unit(self));
        if (!global_init_done) {
                /* The device spitting out events */
        if (!global_init_done) {
                /* The device spitting out events */
+               cdevsw_add(&usb_cdevsw, -1, USB_DEV_MINOR);
                make_dev(&usb_cdevsw, USB_DEV_MINOR, UID_ROOT, GID_OPERATOR,
                        0660, "usb");
                global_init_done = 1;
        }
                make_dev(&usb_cdevsw, USB_DEV_MINOR, UID_ROOT, GID_OPERATOR,
                        0660, "usb");
                global_init_done = 1;
        }
+       cdevsw_add(&usb_cdevsw, -1, device_get_unit(self));
+       make_dev(&usb_cdevsw, device_get_unit(self), UID_ROOT, GID_OPERATOR,
+               0660, "usb%d", device_get_unit(self));
 #endif
 
        USB_ATTACH_SUCCESS_RETURN;
 #endif
 
        USB_ATTACH_SUCCESS_RETURN;
index 1f99a73..fdcb732 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/contrib/ipfilter/netinet/mlfk_ipl.c,v 1.9.2.2 2002/04/27 17:37:12 darrenr Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/contrib/ipfilter/netinet/mlfk_ipl.c,v 1.9.2.2 2002/04/27 17:37:12 darrenr Exp $
- * $DragonFly: src/sys/contrib/ipfilter/netinet/mlfk_ipl.c,v 1.6 2004/05/13 23:49:14 dillon Exp $
+ * $DragonFly: src/sys/contrib/ipfilter/netinet/mlfk_ipl.c,v 1.7 2004/05/19 22:52:39 dillon Exp $
  */
 
 
  */
 
 
@@ -56,8 +56,6 @@
 #include "ip_frag.h"
 #include "ip_proxy.h"
 
 #include "ip_frag.h"
 #include "ip_proxy.h"
 
-static dev_t ipf_devs[IPL_LOGMAX + 1];
-
 SYSCTL_DECL(_net_inet);
 SYSCTL_NODE(_net_inet, OID_AUTO, ipf, CTLFLAG_RW, 0, "IPF");
 SYSCTL_INT(_net_inet_ipf, OID_AUTO, fr_flags, CTLFLAG_RW, &fr_flags, 0, "");
 SYSCTL_DECL(_net_inet);
 SYSCTL_NODE(_net_inet, OID_AUTO, ipf, CTLFLAG_RW, 0, "IPF");
 SYSCTL_INT(_net_inet_ipf, OID_AUTO, fr_flags, CTLFLAG_RW, &fr_flags, 0, "");
@@ -136,6 +134,7 @@ ipfilter_modevent(module_t mod, int type, void *unused)
                error = iplattach();
                if (error)
                        break;
                error = iplattach();
                if (error)
                        break;
+               cdevsw_add(&ipl_cdevsw, 0, 0);
 
                c = NULL;
                for(i=strlen(IPL_NAME); i>0; i--)
 
                c = NULL;
                for(i=strlen(IPL_NAME); i>0; i--)
@@ -145,8 +144,7 @@ ipfilter_modevent(module_t mod, int type, void *unused)
                        }
                if (!c)
                        c = IPL_NAME;
                        }
                if (!c)
                        c = IPL_NAME;
-               ipf_devs[IPL_LOGIPF] =
-                   make_dev(&ipl_cdevsw, IPL_LOGIPF, 0, 0, 0600, c);
+               make_dev(&ipl_cdevsw, IPL_LOGIPF, 0, 0, 0600, c);
 
                c = NULL;
                for(i=strlen(IPL_NAT); i>0; i--)
 
                c = NULL;
                for(i=strlen(IPL_NAT); i>0; i--)
@@ -156,8 +154,7 @@ ipfilter_modevent(module_t mod, int type, void *unused)
                        }
                if (!c)
                        c = IPL_NAT;
                        }
                if (!c)
                        c = IPL_NAT;
-               ipf_devs[IPL_LOGNAT] =
-                   make_dev(&ipl_cdevsw, IPL_LOGNAT, 0, 0, 0600, c);
+               make_dev(&ipl_cdevsw, IPL_LOGNAT, 0, 0, 0600, c);
 
                c = NULL;
                for(i=strlen(IPL_STATE); i>0; i--)
 
                c = NULL;
                for(i=strlen(IPL_STATE); i>0; i--)
@@ -167,8 +164,7 @@ ipfilter_modevent(module_t mod, int type, void *unused)
                        }
                if (!c)
                        c = IPL_STATE;
                        }
                if (!c)
                        c = IPL_STATE;
-               ipf_devs[IPL_LOGSTATE] =
-                   make_dev(&ipl_cdevsw, IPL_LOGSTATE, 0, 0, 0600, c);
+               make_dev(&ipl_cdevsw, IPL_LOGSTATE, 0, 0, 0600, c);
 
                c = NULL;
                for(i=strlen(IPL_AUTH); i>0; i--)
 
                c = NULL;
                for(i=strlen(IPL_AUTH); i>0; i--)
@@ -178,15 +174,11 @@ ipfilter_modevent(module_t mod, int type, void *unused)
                        }
                if (!c)
                        c = IPL_AUTH;
                        }
                if (!c)
                        c = IPL_AUTH;
-               ipf_devs[IPL_LOGAUTH] =
-                   make_dev(&ipl_cdevsw, IPL_LOGAUTH, 0, 0, 0600, c);
+               make_dev(&ipl_cdevsw, IPL_LOGAUTH, 0, 0, 0600, c);
 
                break;
        case MOD_UNLOAD :
 
                break;
        case MOD_UNLOAD :
-               destroy_dev(ipf_devs[IPL_LOGIPF]);
-               destroy_dev(ipf_devs[IPL_LOGNAT]);
-               destroy_dev(ipf_devs[IPL_LOGSTATE]);
-               destroy_dev(ipf_devs[IPL_LOGAUTH]);
+               cdevsw_remove(&ipl_cdevsw, 0, 0);
                error = ipldetach();
                break;
        default:
                error = ipldetach();
                break;
        default:
index 19e0f70..e57db4d 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/acpica/Osd/OsdSynch.c,v 1.17.2.1 2003/08/22 20:49:21 jhb Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/acpica/Osd/OsdSynch.c,v 1.17.2.1 2003/08/22 20:49:21 jhb Exp $
- *      $DragonFly: src/sys/dev/acpica/Osd/Attic/OsdSynch.c,v 1.3 2004/05/05 22:18:09 dillon Exp $ 
+ *      $DragonFly: src/sys/dev/acpica/Osd/Attic/OsdSynch.c,v 1.4 2004/05/19 22:52:40 dillon Exp $ 
  */
 
 /*
  */
 
 /*
@@ -121,7 +121,9 @@ ACPI_STATUS
 AcpiOsDeleteSemaphore (ACPI_HANDLE Handle)
 {
 #ifndef ACPI_NO_SEMAPHORES
 AcpiOsDeleteSemaphore (ACPI_HANDLE Handle)
 {
 #ifndef ACPI_NO_SEMAPHORES
+#if defined(__FreeBSD__) && __FreeBSD_version >= 500000
     struct acpi_semaphore *as = (struct acpi_semaphore *)Handle;
     struct acpi_semaphore *as = (struct acpi_semaphore *)Handle;
+#endif
 
     ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
 
 
     ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
 
index b7875f4..6010a71 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.95.2.1 2003/08/22 20:49:20 jhb Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.95.2.1 2003/08/22 20:49:20 jhb Exp $
- *      $DragonFly: src/sys/dev/acpica/Attic/acpi.c,v 1.5 2004/05/13 23:49:14 dillon Exp $ 
+ *      $DragonFly: src/sys/dev/acpica/Attic/acpi.c,v 1.6 2004/05/19 22:52:40 dillon Exp $ 
  */
 
 #include "opt_acpi.h"
  */
 
 #include "opt_acpi.h"
@@ -497,6 +497,7 @@ acpi_attach(device_t dev)
     /*
      * Create the control device
      */
     /*
      * Create the control device
      */
+    cdevsw_add(&acpi_cdevsw, 0, 0);
     sc->acpi_dev_t = make_dev(&acpi_cdevsw, 0, UID_ROOT, GID_WHEEL, 0644,
        "acpi");
     sc->acpi_dev_t->si_drv1 = sc;
     sc->acpi_dev_t = make_dev(&acpi_cdevsw, 0, UID_ROOT, GID_WHEEL, 0644,
        "acpi");
     sc->acpi_dev_t->si_drv1 = sc;
index 1b30523..597df64 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.118 2004/02/19 18:20:03 njl Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.118 2004/02/19 18:20:03 njl Exp $
- *     $DragonFly: src/sys/dev/acpica5/acpi.c,v 1.3 2004/05/13 23:49:14 dillon Exp $
+ *     $DragonFly: src/sys/dev/acpica5/acpi.c,v 1.4 2004/05/19 22:52:40 dillon Exp $
  */
 
 #include "opt_acpi.h"
  */
 
 #include "opt_acpi.h"
@@ -523,6 +523,7 @@ acpi_attach(device_t dev)
     sc->acpi_sleep_disabled = 0;
 
     /* Create the control device */
     sc->acpi_sleep_disabled = 0;
 
     /* Create the control device */
+    cdevsw_add(&acpi_cdevsw, 0, 0);
     sc->acpi_dev_t = make_dev(&acpi_cdevsw, 0, UID_ROOT, GID_WHEEL, 0644,
                              "acpi");
     sc->acpi_dev_t->si_drv1 = sc;
     sc->acpi_dev_t = make_dev(&acpi_cdevsw, 0, UID_ROOT, GID_WHEEL, 0644,
                              "acpi");
     sc->acpi_dev_t->si_drv1 = sc;
index 51748a6..46d69bb 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/pci/agp.c,v 1.3.2.4 2002/08/11 19:58:12 alc Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/pci/agp.c,v 1.3.2.4 2002/08/11 19:58:12 alc Exp $
- *     $DragonFly: src/sys/dev/agp/agp.c,v 1.12 2004/05/13 23:49:14 dillon Exp $
+ *     $DragonFly: src/sys/dev/agp/agp.c,v 1.13 2004/05/19 22:52:40 dillon Exp $
  */
 
 #include "opt_bus.h"
  */
 
 #include "opt_bus.h"
@@ -260,12 +260,9 @@ agp_generic_attach(device_t dev)
        TAILQ_INIT(&sc->as_memory);
        sc->as_nextid = 1;
 
        TAILQ_INIT(&sc->as_memory);
        sc->as_nextid = 1;
 
-       sc->as_devnode = make_dev(&agp_cdevsw,
-                                 device_get_unit(dev),
-                                 UID_ROOT,
-                                 GID_WHEEL,
-                                 0600,
-                                 "agpgart");
+       cdevsw_add(&agp_cdevsw, -1, device_get_unit(dev));
+       make_dev(&agp_cdevsw, device_get_unit(dev), UID_ROOT, GID_WHEEL,
+                 0600, "agpgart");
 
        return 0;
 }
 
        return 0;
 }
@@ -276,8 +273,8 @@ agp_generic_detach(device_t dev)
        struct agp_softc *sc = device_get_softc(dev);
        bus_release_resource(dev, SYS_RES_MEMORY, AGP_APBASE, sc->as_aperture);
        lockmgr(&sc->as_lock, LK_DRAIN, NULL, curthread); /* XXX */
        struct agp_softc *sc = device_get_softc(dev);
        bus_release_resource(dev, SYS_RES_MEMORY, AGP_APBASE, sc->as_aperture);
        lockmgr(&sc->as_lock, LK_DRAIN, NULL, curthread); /* XXX */
-       destroy_dev(sc->as_devnode);
        agp_flush_cache();
        agp_flush_cache();
+       cdevsw_remove(&agp_cdevsw, -1, device_get_unit(dev));
        return 0;
 }
 
        return 0;
 }
 
index 7c40133..dc9d2a2 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/pci/agppriv.h,v 1.3.2.1 2000/07/19 09:48:04 ru Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/pci/agppriv.h,v 1.3.2.1 2000/07/19 09:48:04 ru Exp $
- *     $DragonFly: src/sys/dev/agp/agppriv.h,v 1.3 2003/08/07 21:16:48 dillon Exp $
+ *     $DragonFly: src/sys/dev/agp/agppriv.h,v 1.4 2004/05/19 22:52:40 dillon Exp $
  */
 
 #ifndef _PCI_AGPPRIV_H_
  */
 
 #ifndef _PCI_AGPPRIV_H_
@@ -76,7 +76,6 @@ struct agp_softc {
        struct agp_memory_list  as_memory;      /* list of allocated memory */
        int                     as_nextid;      /* next memory block id */
        int                     as_isopen;      /* user device is open */
        struct agp_memory_list  as_memory;      /* list of allocated memory */
        int                     as_nextid;      /* next memory block id */
        int                     as_isopen;      /* user device is open */
-       dev_t                   as_devnode;     /* from make_dev */
        struct lock             as_lock;        /* lock for access to GATT */
 };
 
        struct lock             as_lock;        /* lock for access to GATT */
 };
 
index cd6e4e3..5b6d670 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-all.c,v 1.50.2.45 2003/03/12 14:47:12 sos Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-all.c,v 1.50.2.45 2003/03/12 14:47:12 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-all.c,v 1.17 2004/05/13 23:49:14 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-all.c,v 1.18 2004/05/19 22:52:40 dillon Exp $
  */
 
 #include "opt_ata.h"
  */
 
 #include "opt_ata.h"
@@ -1582,6 +1582,7 @@ static void
 ata_init(void)
 {
     /* register controlling device */
 ata_init(void)
 {
     /* register controlling device */
+    cdevsw_add(&ata_cdevsw, 0, 0);
     make_dev(&ata_cdevsw, 0, UID_ROOT, GID_OPERATOR, 0600, "ata");
 
     /* register boot attach to be run when interrupts are enabled */
     make_dev(&ata_cdevsw, 0, UID_ROOT, GID_OPERATOR, 0600, "ata");
 
     /* register boot attach to be run when interrupts are enabled */
index 616e1a2..da6e515 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.60.2.24 2003/01/30 07:19:59 sos Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-disk.c,v 1.60.2.24 2003/01/30 07:19:59 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-disk.c,v 1.17 2004/05/13 23:49:14 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-disk.c,v 1.18 2004/05/19 22:52:40 dillon Exp $
  */
 
 #include "opt_ata.h"
  */
 
 #include "opt_ata.h"
@@ -297,6 +297,10 @@ adclose(dev_t dev, int flags, int fmt, struct thread *td)
     return 0;
 }
 
     return 0;
 }
 
+/*
+ * note: always use the passed device rather then bp->b_dev, as the bp
+ * may have been translated through several layers.
+ */
 static void 
 adstrategy(struct buf *bp)
 {
 static void 
 adstrategy(struct buf *bp)
 {
@@ -316,20 +320,15 @@ adstrategy(struct buf *bp)
 }
 
 int
 }
 
 int
-addump(dev_t dev)
+addump(dev_t dev, u_int count, u_int blkno, u_int secsize)
 {
     struct ad_softc *adp = dev->si_drv1;
     struct ad_request request;
 {
     struct ad_softc *adp = dev->si_drv1;
     struct ad_request request;
-    u_int count, blkno, secsize;
     vm_paddr_t addr = 0;
     long blkcnt;
     int dumppages = MAXDUMPPGS;
     vm_paddr_t addr = 0;
     long blkcnt;
     int dumppages = MAXDUMPPGS;
-    int error;
     int i;
 
     int i;
 
-    if ((error = disk_dumpcheck(dev, &count, &blkno, &secsize)))
-       return error;
-       
     if (!adp)
        return ENXIO;
 
     if (!adp)
        return ENXIO;
 
index 820fb1d..cea51e5 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-raid.h,v 1.2.2.8 2002/04/11 09:31:57 sos Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/ata-raid.h,v 1.2.2.8 2002/04/11 09:31:57 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/ata-raid.h,v 1.3 2003/07/22 17:03:27 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/ata-raid.h,v 1.4 2004/05/19 22:52:40 dillon Exp $
  */
 
 /* misc defines */
  */
 
 /* misc defines */
@@ -36,7 +36,7 @@
 #define AR_READ                0x01
 #define AR_WRITE       0x02
 #define AR_WAIT                0x04
 #define AR_READ                0x01
 #define AR_WRITE       0x02
 #define AR_WAIT                0x04
-#define AR_STRATEGY(x) dev_port_dstrategy((x)->b_dev->si_disk->d_fwdport, (x)->b_dev->si_disk->d_dev, x)
+#define AR_STRATEGY(x) dev_dstrategy((x)->b_dev, x)
 #define AD_SOFTC(x)    ((struct ad_softc *)(x.device->driver))
 #define ATA_MAGIC      "FreeBSD ATA driver RAID "
 
 #define AD_SOFTC(x)    ((struct ad_softc *)(x.device->driver))
 #define ATA_MAGIC      "FreeBSD ATA driver RAID "
 
index 973263f..b767a0a 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-cd.c,v 1.48.2.20 2002/11/25 05:30:31 njl Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-cd.c,v 1.48.2.20 2002/11/25 05:30:31 njl Exp $
- * $DragonFly: src/sys/dev/disk/ata/atapi-cd.c,v 1.16 2004/05/13 23:49:14 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/atapi-cd.c,v 1.17 2004/05/19 22:52:40 dillon Exp $
  */
 
 #include "opt_ata.h"
  */
 
 #include "opt_ata.h"
@@ -201,9 +201,9 @@ acddetach(struct ata_device *atadev)
                bp->b_error = ENXIO;
                biodone(bp);
            }
                bp->b_error = ENXIO;
                biodone(bp);
            }
-           destroy_dev(cdp->driver[subdev]->dev);
+           release_dev(cdp->driver[subdev]->dev);
            while ((entry = TAILQ_FIRST(&cdp->driver[subdev]->dev_list))) {
            while ((entry = TAILQ_FIRST(&cdp->driver[subdev]->dev_list))) {
-               destroy_dev(entry->dev);
+               release_dev(entry->dev);
                TAILQ_REMOVE(&cdp->driver[subdev]->dev_list, entry, chain);
                free(entry, M_ACD);
            }
                TAILQ_REMOVE(&cdp->driver[subdev]->dev_list, entry, chain);
                free(entry, M_ACD);
            }
@@ -221,12 +221,13 @@ acddetach(struct ata_device *atadev)
        biodone(bp);
     }
     while ((entry = TAILQ_FIRST(&cdp->dev_list))) {
        biodone(bp);
     }
     while ((entry = TAILQ_FIRST(&cdp->dev_list))) {
-       destroy_dev(entry->dev);
+       release_dev(entry->dev);
        TAILQ_REMOVE(&cdp->dev_list, entry, chain);
        free(entry, M_ACD);
     }
        TAILQ_REMOVE(&cdp->dev_list, entry, chain);
        free(entry, M_ACD);
     }
-    destroy_dev(cdp->dev);
+    release_dev(cdp->dev);
     devstat_remove_entry(cdp->stats);
     devstat_remove_entry(cdp->stats);
+    cdevsw_remove(&acd_cdevsw, dkunitmask(), dkmakeunit(cdp->lun));
     free(cdp->stats, M_ACD);
     ata_free_name(atadev);
     ata_free_lun(&acd_lun_map, cdp->lun);
     free(cdp->stats, M_ACD);
     ata_free_name(atadev);
     ata_free_lun(&acd_lun_map, cdp->lun);
@@ -256,8 +257,10 @@ acd_make_dev(struct acd_softc *cdp)
 {
     dev_t dev;
 
 {
     dev_t dev;
 
+    cdevsw_add(&acd_cdevsw, dkunitmask(), dkmakeunit(cdp->lun));
     dev = make_dev(&acd_cdevsw, dkmakeminor(cdp->lun, 0, 0),
                   UID_ROOT, GID_OPERATOR, 0644, "acd%d", cdp->lun);
     dev = make_dev(&acd_cdevsw, dkmakeminor(cdp->lun, 0, 0),
                   UID_ROOT, GID_OPERATOR, 0644, "acd%d", cdp->lun);
+    reference_dev(dev);
     dev->si_drv1 = cdp;
     cdp->dev = dev;
     cdp->device->flags |= ATA_D_MEDIA_CHANGED;
     dev->si_drv1 = cdp;
     cdp->dev = dev;
     cdp->device->flags |= ATA_D_MEDIA_CHANGED;
@@ -1330,6 +1333,7 @@ acd_read_toc(struct acd_softc *cdp)
        entry->dev = make_dev(&acd_cdevsw, (cdp->lun << 3) | (track << 16),
                              0, 0, 0644, name, NULL);
        entry->dev->si_drv1 = cdp->dev->si_drv1;
        entry->dev = make_dev(&acd_cdevsw, (cdp->lun << 3) | (track << 16),
                              0, 0, 0644, name, NULL);
        entry->dev->si_drv1 = cdp->dev->si_drv1;
+       reference_dev(entry->dev);
        TAILQ_INSERT_TAIL(&cdp->dev_list, entry, chain);
     }
 
        TAILQ_INSERT_TAIL(&cdp->dev_list, entry, chain);
     }
 
index 3a52fbb..28431a6 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-tape.c,v 1.36.2.12 2002/07/31 11:19:26 sos Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-tape.c,v 1.36.2.12 2002/07/31 11:19:26 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/atapi-tape.c,v 1.10 2004/05/13 23:49:14 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/atapi-tape.c,v 1.11 2004/05/19 22:52:41 dillon Exp $
  */
 
 #include "opt_ata.h"
  */
 
 #include "opt_ata.h"
@@ -136,16 +136,15 @@ astattach(struct ata_device *atadev)
                      DEVSTAT_NO_ORDERED_TAGS,
                      DEVSTAT_TYPE_SEQUENTIAL | DEVSTAT_TYPE_IF_IDE,
                      DEVSTAT_PRIORITY_TAPE);
                      DEVSTAT_NO_ORDERED_TAGS,
                      DEVSTAT_TYPE_SEQUENTIAL | DEVSTAT_TYPE_IF_IDE,
                      DEVSTAT_PRIORITY_TAPE);
+    cdevsw_add(&ast_cdevsw, dkunitmask(), dkmakeunit(stp->lun));
     dev = make_dev(&ast_cdevsw, dkmakeminor(stp->lun, 0, 0),
                   UID_ROOT, GID_OPERATOR, 0640, "ast%d", stp->lun);
     dev->si_drv1 = stp;
     dev->si_iosize_max = 256 * DEV_BSIZE;
     dev = make_dev(&ast_cdevsw, dkmakeminor(stp->lun, 0, 0),
                   UID_ROOT, GID_OPERATOR, 0640, "ast%d", stp->lun);
     dev->si_drv1 = stp;
     dev->si_iosize_max = 256 * DEV_BSIZE;
-    stp->dev1 = dev;
     dev = make_dev(&ast_cdevsw, dkmakeminor(stp->lun, 0, 1),
                   UID_ROOT, GID_OPERATOR, 0640, "nast%d", stp->lun);
     dev->si_drv1 = stp;
     dev->si_iosize_max = 256 * DEV_BSIZE;
     dev = make_dev(&ast_cdevsw, dkmakeminor(stp->lun, 0, 1),
                   UID_ROOT, GID_OPERATOR, 0640, "nast%d", stp->lun);
     dev->si_drv1 = stp;
     dev->si_iosize_max = 256 * DEV_BSIZE;
-    stp->dev2 = dev;
     stp->device->flags |= ATA_D_MEDIA_CHANGED;
     ast_describe(stp);
     atadev->driver = stp;
     stp->device->flags |= ATA_D_MEDIA_CHANGED;
     ast_describe(stp);
     atadev->driver = stp;
@@ -164,9 +163,8 @@ astdetach(struct ata_device *atadev)
        bp->b_error = ENXIO;
        biodone(bp);
     }
        bp->b_error = ENXIO;
        biodone(bp);
     }
-    destroy_dev(stp->dev1);
-    destroy_dev(stp->dev2);
     devstat_remove_entry(&stp->stats);
     devstat_remove_entry(&stp->stats);
+    cdevsw_remove(&ast_cdevsw, dkunitmask(), dkmakeunit(stp->lun));
     ata_free_name(atadev);
     ata_free_lun(&ast_lun_map, stp->lun);
     free(stp, M_AST);
     ata_free_name(atadev);
     ata_free_lun(&ast_lun_map, stp->lun);
     free(stp, M_AST);
index 1874994..c81ec63 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-tape.h,v 1.11.2.5 2002/03/18 08:37:34 sos Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ata/atapi-tape.h,v 1.11.2.5 2002/03/18 08:37:34 sos Exp $
- * $DragonFly: src/sys/dev/disk/ata/atapi-tape.h,v 1.2 2003/06/17 04:28:22 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/ata/atapi-tape.h,v 1.3 2004/05/19 22:52:41 dillon Exp $
  */
 
 /* ATAPI tape drive Capabilities and Mechanical Status Page */
  */
 
 /* ATAPI tape drive Capabilities and Mechanical Status Page */
@@ -159,5 +159,4 @@ struct ast_softc {
     struct atapi_params                *param;         /* drive parameters table */
     struct ast_cappage         cap;            /* capabilities page info */
     struct devstat             stats;          /* devstat entry */
     struct atapi_params                *param;         /* drive parameters table */
     struct ast_cappage         cap;            /* capabilities page info */
     struct devstat             stats;          /* devstat entry */
-    dev_t                      dev1, dev2;     /* device place holders */
 };
 };
index 8269ab2..2fe2102 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/dev/ccd/ccd.c,v 1.73.2.1 2001/09/11 09:49:52 kris Exp $ */
 /* $FreeBSD: src/sys/dev/ccd/ccd.c,v 1.73.2.1 2001/09/11 09:49:52 kris Exp $ */
-/* $DragonFly: src/sys/dev/disk/ccd/ccd.c,v 1.15 2004/05/13 23:49:15 dillon Exp $ */
+/* $DragonFly: src/sys/dev/disk/ccd/ccd.c,v 1.16 2004/05/19 22:52:41 dillon Exp $ */
 
 /*     $NetBSD: ccd.c,v 1.22 1995/12/08 19:13:26 thorpej Exp $ */
 
 
 /*     $NetBSD: ccd.c,v 1.22 1995/12/08 19:13:26 thorpej Exp $ */
 
@@ -159,7 +159,7 @@ struct ccdbuf {
 #define CCDPF_MIRROR_DONE 1    /* if set, mirror counterpart is done */
 
 #define CCDLABELDEV(dev)       \
 #define CCDPF_MIRROR_DONE 1    /* if set, mirror counterpart is done */
 
 #define CCDLABELDEV(dev)       \
-       (makedev(major((dev)), dkmakeminor(ccdunit((dev)), 0, RAW_PART)))
+       (make_sub_dev(dev, dkmakeminor(ccdunit((dev)), 0, RAW_PART)))
 
 static d_open_t ccdopen;
 static d_close_t ccdclose;
 
 static d_open_t ccdopen;
 static d_close_t ccdclose;
@@ -316,7 +316,7 @@ ccdattach()
                            M_WAITOK | M_ZERO);
        numccd = num;
 
                            M_WAITOK | M_ZERO);
        numccd = num;
 
-       cdevsw_add(&ccd_cdevsw);
+       cdevsw_add(&ccd_cdevsw, 0, 0);
        /* XXX: is this necessary? */
        for (i = 0; i < numccd; ++i)
                ccddevs[i].ccd_dk = -1;
        /* XXX: is this necessary? */
        for (i = 0; i < numccd; ++i)
                ccddevs[i].ccd_dk = -1;
@@ -1462,9 +1462,10 @@ ccdioctl(dev_t dev, u_long cmd, caddr_t data, int flag, d_thread_t *td)
                error = setdisklabel(&cs->sc_label,
                    (struct disklabel *)data, 0);
                if (error == 0) {
                error = setdisklabel(&cs->sc_label,
                    (struct disklabel *)data, 0);
                if (error == 0) {
-                       if (cmd == DIOCWDINFO)
-                               error = writedisklabel(CCDLABELDEV(dev),
-                                   &cs->sc_label);
+                       if (cmd == DIOCWDINFO) {
+                               dev_t cdev = CCDLABELDEV(dev);
+                               error = writedisklabel(cdev, &cs->sc_label);
+                       }
                }
 
                cs->sc_flags &= ~CCDF_LABELLING;
                }
 
                cs->sc_flags &= ~CCDF_LABELLING;
@@ -1521,10 +1522,8 @@ ccdsize(dev_t dev)
 }
 
 static int
 }
 
 static int
-ccddump(dev)
-       dev_t dev;
+ccddump(dev_t dev, u_int count, u_int blkno, u_int secsize)
 {
 {
-
        /* Not implemented. */
        return ENXIO;
 }
        /* Not implemented. */
        return ENXIO;
 }
@@ -1593,6 +1592,7 @@ ccdgetdisklabel(dev)
        char *errstring;
        struct disklabel *lp = &cs->sc_label;
        struct ccdgeom *ccg = &cs->sc_geom;
        char *errstring;
        struct disklabel *lp = &cs->sc_label;
        struct ccdgeom *ccg = &cs->sc_geom;
+       dev_t cdev;
 
        bzero(lp, sizeof(*lp));
 
 
        bzero(lp, sizeof(*lp));
 
@@ -1625,7 +1625,8 @@ ccdgetdisklabel(dev)
        /*
         * Call the generic disklabel extraction routine.
         */
        /*
         * Call the generic disklabel extraction routine.
         */
-       errstring = readdisklabel(CCDLABELDEV(dev), &cs->sc_label);
+       cdev = CCDLABELDEV(dev);
+       errstring = readdisklabel(cdev, &cs->sc_label);
        if (errstring != NULL)
                ccdmakedisklabel(cs);
 
        if (errstring != NULL)
                ccdmakedisklabel(cs);
 
index 7c9967a..89b265b 100644 (file)
@@ -51,7 +51,7 @@
  *
  *     from:   @(#)fd.c        7.4 (Berkeley) 5/25/91
  * $FreeBSD: src/sys/isa/fd.c,v 1.176.2.8 2002/05/15 21:56:14 joerg Exp $
  *
  *     from:   @(#)fd.c        7.4 (Berkeley) 5/25/91
  * $FreeBSD: src/sys/isa/fd.c,v 1.176.2.8 2002/05/15 21:56:14 joerg Exp $
- * $DragonFly: src/sys/dev/disk/fd/fd.c,v 1.15 2004/05/13 23:49:15 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/fd/fd.c,v 1.16 2004/05/19 22:52:41 dillon Exp $
  *
  */
 
  *
  */
 
@@ -1019,14 +1019,10 @@ fd_attach(device_t dev)
        int     typemynor;
        int     typesize;
 #endif
        int     typemynor;
        int     typesize;
 #endif
-       static int cdevsw_add_done = 0;
 
        fd = device_get_softc(dev);
 
 
        fd = device_get_softc(dev);
 
-       if (!cdevsw_add_done) {
-               cdevsw_add(&fd_cdevsw); /* XXX */
-               cdevsw_add_done++;
-       }
+       cdevsw_add(&fd_cdevsw, -1 << 6, fd->fdu << 6);
        make_dev(&fd_cdevsw, (fd->fdu << 6),
                UID_ROOT, GID_OPERATOR, 0640, "rfd%d", fd->fdu);
 
        make_dev(&fd_cdevsw, (fd->fdu << 6),
                UID_ROOT, GID_OPERATOR, 0640, "rfd%d", fd->fdu);
 
@@ -2102,16 +2098,18 @@ retrier(struct fdc_data *fdc)
        fail:
                {
                        int printerror = (fd->options & FDOPT_NOERRLOG) == 0;
        fail:
                {
                        int printerror = (fd->options & FDOPT_NOERRLOG) == 0;
-                       dev_t sav_b_dev = bp->b_dev;
+                       dev_t sav_b_dev;
 
                        /* Trick diskerr */
 
                        /* Trick diskerr */
-                       bp->b_dev = makedev(major(bp->b_dev),
+                       if (printerror) {
+                               sav_b_dev = bp->b_dev;
+                               bp->b_dev = make_sub_dev(bp->b_dev,
                                    (FDUNIT(minor(bp->b_dev))<<3)|RAW_PART);
                                    (FDUNIT(minor(bp->b_dev))<<3)|RAW_PART);
-                       if (printerror)
                                diskerr(bp, "hard error", LOG_PRINTF,
                                        fdc->fd->skip / DEV_BSIZE,
                                        (struct disklabel *)NULL);
                                diskerr(bp, "hard error", LOG_PRINTF,
                                        fdc->fd->skip / DEV_BSIZE,
                                        (struct disklabel *)NULL);
-                       bp->b_dev = sav_b_dev;
+                               bp->b_dev = sav_b_dev;
+                       }
                        if (printerror) {
                                if (fdc->flags & FDC_STAT_VALID)
                                        printf(
                        if (printerror) {
                                if (fdc->flags & FDC_STAT_VALID)
                                        printf(
index 1ea6f15..dc2e4ac 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.32.2.20 2002/10/11 18:49:25 mjacob Exp $ */
 /* $FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.32.2.20 2002/10/11 18:49:25 mjacob Exp $ */
-/* $DragonFly: src/sys/dev/disk/isp/isp_freebsd.c,v 1.9 2004/05/13 23:49:15 dillon Exp $ */
+/* $DragonFly: src/sys/dev/disk/isp/isp_freebsd.c,v 1.10 2004/05/19 22:52:41 dillon Exp $ */
 /*
  * Platform (FreeBSD) dependent common attachment code for Qlogic adapters.
  *
 /*
  * Platform (FreeBSD) dependent common attachment code for Qlogic adapters.
  *
@@ -203,7 +203,8 @@ isp_attach(struct ispsoftc *isp)
        /*
         * Create device nodes
         */
        /*
         * Create device nodes
         */
-       (void) make_dev(&isp_cdevsw, device_get_unit(isp->isp_dev), UID_ROOT,
+       cdevsw_add(&isp_cdevsw, -1, device_get_unit(isp->isp_dev));
+       make_dev(&isp_cdevsw, device_get_unit(isp->isp_dev), UID_ROOT,
            GID_OPERATOR, 0600, "%s", device_get_nameunit(isp->isp_dev));
 
        if (isp->isp_role != ISP_ROLE_NONE) {
            GID_OPERATOR, 0600, "%s", device_get_nameunit(isp->isp_dev));
 
        if (isp->isp_role != ISP_ROLE_NONE) {
index c921ab1..9be7afb 100644 (file)
@@ -41,7 +41,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/mcd.c,v 1.115 2000/01/29 16:17:34 peter Exp $
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/mcd.c,v 1.115 2000/01/29 16:17:34 peter Exp $
- * $DragonFly: src/sys/dev/disk/mcd/Attic/mcd.c,v 1.8 2004/05/13 23:49:15 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/mcd/Attic/mcd.c,v 1.9 2004/05/19 22:52:41 dillon Exp $
  */
 static const char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
 
  */
 static const char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
 
@@ -257,6 +257,7 @@ int mcd_attach(struct isa_device *dev)
        mcd_configure(cd);
 #endif
        /* name filled in probe */
        mcd_configure(cd);
 #endif
        /* name filled in probe */
+       cdevsw_add(&mcd_cdevsw, dkunitmask(), dkmakeunit(unit));
        make_dev(&mcd_cdevsw, dkmakeminor(unit, 0, 0),
            UID_ROOT, GID_OPERATOR, 0640, "rmcd%da", unit);
        make_dev(&mcd_cdevsw, dkmakeminor(unit, 0, RAW_PART),
        make_dev(&mcd_cdevsw, dkmakeminor(unit, 0, 0),
            UID_ROOT, GID_OPERATOR, 0640, "rmcd%da", unit);
        make_dev(&mcd_cdevsw, dkmakeminor(unit, 0, RAW_PART),
@@ -728,10 +729,6 @@ mcd_probe(struct isa_device *dev)
        int unit = dev->id_unit;
        int i, j;
        unsigned char stbytes[3];
        int unit = dev->id_unit;
        int i, j;
        unsigned char stbytes[3];
-       static int once;
-
-       if (!once++)
-               cdevsw_add(&mcd_cdevsw);
 
        mcd_data[unit].flags = MCDPROBING;
 
 
        mcd_data[unit].flags = MCDPROBING;
 
index b1e2202..48a7b00 100644 (file)
@@ -42,7 +42,7 @@
 
 
 /* $FreeBSD: src/sys/i386/isa/scd.c,v 1.54 2000/01/29 16:00:30 peter Exp $ */
 
 
 /* $FreeBSD: src/sys/i386/isa/scd.c,v 1.54 2000/01/29 16:00:30 peter Exp $ */
-/* $DragonFly: src/sys/dev/disk/scd/Attic/scd.c,v 1.9 2004/05/13 23:49:15 dillon Exp $ */
+/* $DragonFly: src/sys/dev/disk/scd/Attic/scd.c,v 1.10 2004/05/19 22:52:41 dillon Exp $ */
 
 /* Please send any comments to micke@dynas.se */
 
 
 /* Please send any comments to micke@dynas.se */
 
@@ -218,6 +218,7 @@ scd_attach(struct isa_device *dev)
        cd->audio_status = CD_AS_AUDIO_INVALID;
        bufq_init(&cd->head);
 
        cd->audio_status = CD_AS_AUDIO_INVALID;
        bufq_init(&cd->head);
 
+       cdevsw_add(&scd_cdevsw, dkunitmask(), dkmakeunit(unit));
        make_dev(&scd_cdevsw, dkmakeminor(unit, 0, 0),
            UID_ROOT, GID_OPERATOR, 0640, "rscd%da", unit);
        make_dev(&scd_cdevsw, dkmakeminor(unit, 0, RAW_PART),
        make_dev(&scd_cdevsw, dkmakeminor(unit, 0, 0),
            UID_ROOT, GID_OPERATOR, 0640, "rscd%da", unit);
        make_dev(&scd_cdevsw, dkmakeminor(unit, 0, RAW_PART),
@@ -694,10 +695,6 @@ scd_probe(struct isa_device *dev)
        static char namebuf[8+16+8+3];
        char *s = namebuf;
        int loop_count = 0;
        static char namebuf[8+16+8+3];
        char *s = namebuf;
        int loop_count = 0;
-       static int once;
-
-       if (!once++)
-               cdevsw_add(&scd_cdevsw);
 
        scd_data[unit].flags = SCDPROBING;
        scd_data[unit].iobase = dev->id_iobase;
 
        scd_data[unit].flags = SCDPROBING;
        scd_data[unit].iobase = dev->id_iobase;
index 013889a..dd3cd59 100644 (file)
@@ -39,7 +39,7 @@
  *
  *     from: @(#)vn.c  8.6 (Berkeley) 4/1/94
  * $FreeBSD: src/sys/dev/vn/vn.c,v 1.105.2.4 2001/11/18 07:11:00 dillon Exp $
  *
  *     from: @(#)vn.c  8.6 (Berkeley) 4/1/94
  * $FreeBSD: src/sys/dev/vn/vn.c,v 1.105.2.4 2001/11/18 07:11:00 dillon Exp $
- * $DragonFly: src/sys/dev/disk/vn/vn.c,v 1.9 2004/05/13 23:49:15 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/vn/vn.c,v 1.10 2004/05/19 22:52:42 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -180,31 +180,29 @@ vnfindvn(dev_t dev)
        struct vn_softc *vn;
 
        unit = dkunit(dev);
        struct vn_softc *vn;
 
        unit = dkunit(dev);
-       vn = dev->si_drv1;
-       if (!vn) {
-               SLIST_FOREACH(vn, &vn_list, sc_list) {
-                       if (vn->sc_unit == unit) {
-                               dev->si_drv2 = vn->sc_devlist;
-                               vn->sc_devlist = dev;
-                               dev->si_drv1 = vn;
-                               break;
-                       }
+       SLIST_FOREACH(vn, &vn_list, sc_list) {
+               if (vn->sc_unit == unit) {
+                       dev->si_drv2 = vn->sc_devlist;
+                       vn->sc_devlist = dev;
+                       reference_dev(dev);
+                       dev->si_drv1 = vn;
+                       break;
                }
        }
                }
        }
-       if (!vn) {
-               vn = malloc(sizeof *vn, M_DEVBUF, M_WAITOK);
-               if (!vn)
-                       return (NULL);
-               bzero(vn, sizeof *vn);
+       if (vn == NULL) {
+               vn = malloc(sizeof *vn, M_DEVBUF, M_WAITOK | M_ZERO);
                vn->sc_unit = unit;
                dev->si_drv1 = vn;
                vn->sc_unit = unit;
                dev->si_drv1 = vn;
-               vn->sc_devlist = make_dev(&vn_cdevsw, 0,
-                   UID_ROOT, GID_OPERATOR, 0640, "vn%d", unit);
+               vn->sc_devlist = make_dev(&vn_cdevsw, 0, UID_ROOT,
+                                       GID_OPERATOR, 0640, "vn%d", unit);
+               reference_dev(vn->sc_devlist);
                vn->sc_devlist->si_drv1 = vn;
                vn->sc_devlist->si_drv2 = NULL;
                if (vn->sc_devlist != dev) {
                vn->sc_devlist->si_drv1 = vn;
                vn->sc_devlist->si_drv2 = NULL;
                if (vn->sc_devlist != dev) {
+                       dev->si_drv1 = vn;
                        dev->si_drv2 = vn->sc_devlist;
                        vn->sc_devlist = dev;
                        dev->si_drv2 = vn->sc_devlist;
                        vn->sc_devlist = dev;
+                       reference_dev(dev);
                }
                SLIST_INSERT_HEAD(&vn_list, vn, sc_list);
        }
                }
                SLIST_INSERT_HEAD(&vn_list, vn, sc_list);
        }
@@ -293,8 +291,7 @@ vnstrategy(struct buf *bp)
        int error;
 
        unit = dkunit(bp->b_dev);
        int error;
 
        unit = dkunit(bp->b_dev);
-       vn = bp->b_dev->si_drv1;
-       if (!vn)
+       if ((vn = bp->b_dev->si_drv1) == NULL)
                vn = vnfindvn(bp->b_dev);
 
        IFOPT(vn, VN_DEBUG)
                vn = vnfindvn(bp->b_dev);
 
        IFOPT(vn, VN_DEBUG)
@@ -772,9 +769,8 @@ vn_modevent(module_t mod, int type, void *data)
 
        switch (type) {
        case MOD_LOAD:
 
        switch (type) {
        case MOD_LOAD:
-               cdevsw_add(&vn_cdevsw);
+               cdevsw_add(&vn_cdevsw, 0, 0);
                break;
                break;
-
        case MOD_UNLOAD:
                /* fall through */
        case MOD_SHUTDOWN:
        case MOD_UNLOAD:
                /* fall through */
        case MOD_SHUTDOWN:
@@ -789,13 +785,11 @@ vn_modevent(module_t mod, int type, void *data)
                        while ((dev = vn->sc_devlist) != NULL) {
                                vn->sc_devlist = dev->si_drv2;
                                dev->si_drv1 = dev->si_drv2 = NULL;
                        while ((dev = vn->sc_devlist) != NULL) {
                                vn->sc_devlist = dev->si_drv2;
                                dev->si_drv1 = dev->si_drv2 = NULL;
-                               /* If the last one, destroy it. */
-                               if (vn->sc_devlist == NULL)
-                                       destroy_dev(dev);
+                               destroy_dev(dev);
                        }
                        free(vn, M_DEVBUF);
                }
                        }
                        free(vn, M_DEVBUF);
                }
-               cdevsw_remove(&vn_cdevsw);
+               cdevsw_remove(&vn_cdevsw, -1, 0);
                break;
        default:
                break;
                break;
        default:
                break;
index da43c33..f0885c8 100644 (file)
@@ -21,7 +21,7 @@
  *
  * Version 1.3, Thu Nov 11 12:09:13 MSK 1993
  * $FreeBSD: src/sys/i386/isa/wt.c,v 1.57.2.1 2000/08/08 19:49:53 peter Exp $
  *
  * Version 1.3, Thu Nov 11 12:09:13 MSK 1993
  * $FreeBSD: src/sys/i386/isa/wt.c,v 1.57.2.1 2000/08/08 19:49:53 peter Exp $
- * $DragonFly: src/sys/dev/disk/wt/wt.c,v 1.7 2004/05/13 23:49:15 dillon Exp $
+ * $DragonFly: src/sys/dev/disk/wt/wt.c,v 1.8 2004/05/19 22:52:42 dillon Exp $
  *
  */
 
  *
  */
 
@@ -208,10 +208,6 @@ static int
 wtprobe (struct isa_device *id)
 {
        wtinfo_t *t = wttab + id->id_unit;
 wtprobe (struct isa_device *id)
 {
        wtinfo_t *t = wttab + id->id_unit;
-       static int once;
-
-       if (!once++)
-               cdevsw_add(&wt_cdevsw);
 
        t->unit = id->id_unit;
        t->chan = id->id_drq;
 
        t->unit = id->id_unit;
        t->chan = id->id_drq;
@@ -268,6 +264,7 @@ wtattach (struct isa_device *id)
        t->dens = -1;                           /* unknown density */
        isa_dmainit(t->chan, 1024);
 
        t->dens = -1;                           /* unknown density */
        isa_dmainit(t->chan, 1024);
 
+       cdevsw_add(&wt_cdevsw, -1, id->id_unit);
        make_dev(&wt_cdevsw, id->id_unit, 0, 0, 0600, "rwt%d", id->id_unit);
        return (1);
 }
        make_dev(&wt_cdevsw, id->id_unit, 0, 0, 0600, "rwt%d", id->id_unit);
        return (1);
 }
index c76d72a..428afc8 100644 (file)
@@ -29,7 +29,7 @@
  *    Gareth Hughes <gareth@valinux.com>
  *
  * $FreeBSD: src/sys/dev/drm/drm_drv.h,v 1.13.2.1 2003/04/26 07:05:28 anholt Exp $
  *    Gareth Hughes <gareth@valinux.com>
  *
  * $FreeBSD: src/sys/dev/drm/drm_drv.h,v 1.13.2.1 2003/04/26 07:05:28 anholt Exp $
- * $DragonFly: src/sys/dev/drm/Attic/drm_drv.h,v 1.7 2004/05/13 23:49:16 dillon Exp $
+ * $DragonFly: src/sys/dev/drm/Attic/drm_drv.h,v 1.8 2004/05/19 22:52:42 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -654,12 +654,14 @@ static int DRM(init)( device_t nbdev )
        dev = device_get_softc(nbdev);
        memset( (void *)dev, 0, sizeof(*dev) );
        dev->device = nbdev;
        dev = device_get_softc(nbdev);
        memset( (void *)dev, 0, sizeof(*dev) );
        dev->device = nbdev;
+       cdevsw_add(&DRM(cdevsw), -1, unit);
        dev->devnode = make_dev( &DRM(cdevsw),
                        unit,
                        DRM_DEV_UID,
                        DRM_DEV_GID,
                        DRM_DEV_MODE,
                        "dri/card%d", unit );
        dev->devnode = make_dev( &DRM(cdevsw),
                        unit,
                        DRM_DEV_UID,
                        DRM_DEV_GID,
                        DRM_DEV_MODE,
                        "dri/card%d", unit );
+       reference_dev(dev->devnode);
 #elif defined(__NetBSD__)
        unit = minor(dev->device.dv_unit);
 #endif
 #elif defined(__NetBSD__)
        unit = minor(dev->device.dv_unit);
 #endif
@@ -772,6 +774,7 @@ static void DRM(cleanup)(device_t nbdev)
 #endif
        }
 #endif
 #endif
        }
 #endif
+       cdevsw_remove(&DRM(cdevsw), -1, device_get_unit(nbdev));
 
        DRM(takedown)( dev );
 
 
        DRM(takedown)( dev );
 
index 17cd638..a5e1e61 100644 (file)
@@ -17,7 +17,7 @@
  * all derivative works or modified versions.
  *
  * $FreeBSD: src/sys/i386/isa/gpib.c,v 1.29 2000/01/29 16:17:32 peter Exp $
  * all derivative works or modified versions.
  *
  * $FreeBSD: src/sys/i386/isa/gpib.c,v 1.29 2000/01/29 16:17:32 peter Exp $
- * $DragonFly: src/sys/dev/misc/gpib/gpib.c,v 1.8 2004/05/13 23:49:16 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/gpib/gpib.c,v 1.9 2004/05/19 22:52:42 dillon Exp $
  *
  */
 /*Please read the README file for usage information*/
  *
  */
 /*Please read the README file for usage information*/
@@ -106,10 +106,6 @@ gpprobe(struct isa_device *dvp)
 {
        int     status;
         struct gpib_softc *sc = &gpib_sc;
 {
        int     status;
         struct gpib_softc *sc = &gpib_sc;
-       static int once;
-
-       if (!once++)
-               cdevsw_add(&gp_cdevsw);
 
        gpib_port = dvp->id_iobase;
         status=1;
 
        gpib_port = dvp->id_iobase;
         status=1;
@@ -141,7 +137,8 @@ gpattach(isdp)
            printf ("gp%d: type AT-GPIB chip NAT4882A\n",sc->sc_unit);
         sc->sc_flags |=ATTACHED;
 
            printf ("gp%d: type AT-GPIB chip NAT4882A\n",sc->sc_unit);
         sc->sc_flags |=ATTACHED;
 
-       make_dev(&gp_cdevsw, 0, 0, 0, 0600, "gp");
+       cdevsw_add(&gp_cdevsw, -1, sc->sc_unit);
+       make_dev(&gp_cdevsw, sc->sc_unit, 0, 0, 0600, "gp");
         return (1);
 }
 
         return (1);
 }
 
index 69012af..5157765 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/joy.c,v 1.38.2.1 2001/09/01 05:55:31 murray Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/joy.c,v 1.38.2.1 2001/09/01 05:55:31 murray Exp $
- * $DragonFly: src/sys/dev/misc/joy/joy.c,v 1.6 2004/05/13 23:49:16 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/joy/joy.c,v 1.7 2004/05/19 22:52:42 dillon Exp $
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -143,7 +143,8 @@ joy_attach (device_t dev)
     joy->bt = rman_get_bustag(res);
     joy->port = rman_get_bushandle(res);
     joy->timeout[0] = joy->timeout[1] = 0;
     joy->bt = rman_get_bustag(res);
     joy->port = rman_get_bushandle(res);
     joy->timeout[0] = joy->timeout[1] = 0;
-    make_dev(&joy_cdevsw, 0, 0, 0, 0600, "joy%d", unit);
+    cdevsw_add(&joy_cdevsw, -1, unit);
+    make_dev(&joy_cdevsw, unit, 0, 0, 0600, "joy%d", unit);
     return 0;
 }
 
     return 0;
 }
 
index 6645cf5..2d97477 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/kbd/kbd.c,v 1.17.2.2 2001/07/30 16:46:43 yokota Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/kbd/kbd.c,v 1.17.2.2 2001/07/30 16:46:43 yokota Exp $
- * $DragonFly: src/sys/dev/misc/kbd/kbd.c,v 1.9 2004/05/13 23:49:16 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/kbd/kbd.c,v 1.10 2004/05/19 22:52:42 dillon Exp $
  */
 
 #include "opt_kbd.h"
  */
 
 #include "opt_kbd.h"
@@ -447,6 +447,7 @@ kbd_attach(keyboard_t *kbd)
        if (keyboard[kbd->kb_index] != kbd)
                return EINVAL;
 
        if (keyboard[kbd->kb_index] != kbd)
                return EINVAL;
 
+       cdevsw_add(&kbd_cdevsw, -1, kbd->kb_index);
        dev = make_dev(&kbd_cdevsw, kbd->kb_index, UID_ROOT, GID_WHEEL, 0600,
                       "kbd%r", kbd->kb_index);
        if (dev->si_drv1 == NULL)
        dev = make_dev(&kbd_cdevsw, kbd->kb_index, UID_ROOT, GID_WHEEL, 0600,
                       "kbd%r", kbd->kb_index);
        if (dev->si_drv1 == NULL)
@@ -468,10 +469,17 @@ kbd_detach(keyboard_t *kbd)
        if (keyboard[kbd->kb_index] != kbd)
                return EINVAL;
 
        if (keyboard[kbd->kb_index] != kbd)
                return EINVAL;
 
-       dev = makedev(kbd_cdevsw.d_maj, kbd->kb_index);
-       if (dev->si_drv1)
-               free(dev->si_drv1, M_DEVBUF);
-       destroy_dev(dev);
+       /*
+        * Deal with refs properly.  The KBD driver really ought to have
+        * recorded the dev_t separately.
+        */
+       if ((dev = make_adhoc_dev(&kbd_cdevsw, kbd->kb_index)) != NODEV) {
+               if (dev->si_drv1) {
+                       free(dev->si_drv1, M_DEVBUF);
+                       dev->si_drv1 = NULL;
+               }
+       }
+       cdevsw_remove(&kbd_cdevsw, -1, kbd->kb_index);
        return 0;
 }
 
        return 0;
 }
 
index 36eb744..367b80c 100644 (file)
@@ -39,7 +39,7 @@
  * dufault@hda.com
  *
  * $FreeBSD: src/sys/i386/isa/labpc.c,v 1.35 1999/09/25 18:24:08 phk Exp $
  * dufault@hda.com
  *
  * $FreeBSD: src/sys/i386/isa/labpc.c,v 1.35 1999/09/25 18:24:08 phk Exp $
- * $DragonFly: src/sys/dev/misc/labpc/labpc.c,v 1.7 2004/05/13 23:49:16 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/labpc/labpc.c,v 1.8 2004/05/19 22:52:43 dillon Exp $
  *
  */
 
  *
  */
 
@@ -413,7 +413,6 @@ labpcinit(void)
        if (labpcs) {
                return 1;
        }
        if (labpcs) {
                return 1;
        }
-       cdevsw_add(&labpc_cdevsw);
        return 0;
 }
 
        return 0;
 }
 
@@ -491,7 +490,9 @@ labpcattach(struct isa_device *dev)
        ctlr->dcr_is = 0x80;
        loutb(DCR(ctlr), ctlr->dcr_val);
 
        ctlr->dcr_is = 0x80;
        loutb(DCR(ctlr), ctlr->dcr_val);
 
-       make_dev(&labpc_cdevsw, 0, 0, 0, 0600, "labpc%d", dev->id_unit);
+       cdevsw_add(&labpc_cdevsw, -1, dev->id_unit);
+       make_dev(&labpc_cdevsw, dev->id_unit, 0, 0, 0600, 
+               "labpc%d", dev->id_unit);
        return 1;
 }
 
        return 1;
 }
 
index d907d14..addee22 100644 (file)
@@ -49,7 +49,7 @@
  *     From Id: lpt.c,v 1.55.2.1 1996/11/12 09:08:38 phk Exp
  *     From Id: nlpt.c,v 1.14 1999/02/08 13:55:43 des Exp
  * $FreeBSD: src/sys/dev/ppbus/lpt.c,v 1.15.2.3 2000/07/07 00:30:40 obrien Exp $
  *     From Id: lpt.c,v 1.55.2.1 1996/11/12 09:08:38 phk Exp
  *     From Id: nlpt.c,v 1.14 1999/02/08 13:55:43 des Exp
  * $FreeBSD: src/sys/dev/ppbus/lpt.c,v 1.15.2.3 2000/07/07 00:30:40 obrien Exp $
- * $DragonFly: src/sys/dev/misc/lpt/lpt.c,v 1.8 2004/05/13 23:49:16 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/lpt/lpt.c,v 1.9 2004/05/19 22:52:43 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -115,6 +115,7 @@ struct lpt_data {
           prime once */
        u_char  sc_control;
        char    sc_flags;
           prime once */
        u_char  sc_control;
        char    sc_flags;
+#define LP_UNITMASK    0x03    /* up to 4 units */
 #define LP_POS_INIT    0x04    /* if we are a postive init signal */
 #define LP_POS_ACK     0x08    /* if we are a positive going ack */
 #define LP_NO_PRIME    0x10    /* don't prime the printer at all */
 #define LP_POS_INIT    0x04    /* if we are a postive init signal */
 #define LP_POS_ACK     0x08    /* if we are a positive going ack */
 #define LP_NO_PRIME    0x10    /* don't prime the printer at all */
@@ -415,6 +416,7 @@ lpt_attach(device_t dev)
 
        lpt_release_ppbus(dev);
 
 
        lpt_release_ppbus(dev);
 
+       cdevsw_add(&lpt_cdevsw, LP_UNITMASK, unit);
        make_dev(&lpt_cdevsw, unit,
            UID_ROOT, GID_WHEEL, 0600, LPT_NAME "%d", unit);
        make_dev(&lpt_cdevsw, unit | LP_BYPASS,
        make_dev(&lpt_cdevsw, unit,
            UID_ROOT, GID_WHEEL, 0600, LPT_NAME "%d", unit);
        make_dev(&lpt_cdevsw, unit | LP_BYPASS,
index a66fc14..9cdd9f7 100644 (file)
@@ -12,7 +12,7 @@
  * without express or implied warranty.
  *
  * $FreeBSD: src/sys/i386/isa/mse.c,v 1.49.2.1 2000/03/20 13:58:47 yokota Exp $
  * without express or implied warranty.
  *
  * $FreeBSD: src/sys/i386/isa/mse.c,v 1.49.2.1 2000/03/20 13:58:47 yokota Exp $
- * $DragonFly: src/sys/dev/misc/mse/mse.c,v 1.8 2004/05/13 23:49:16 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/mse/mse.c,v 1.9 2004/05/19 22:52:43 dillon Exp $
  */
 /*
  * Driver for the Logitech and ATI Inport Bus mice for use with 386bsd and
  */
 /*
  * Driver for the Logitech and ATI Inport Bus mice for use with 386bsd and
@@ -95,8 +95,6 @@ typedef struct mse_softc {
        u_char          sc_bytes[MOUSE_SYS_PACKETSIZE];
        struct          callout_handle sc_callout;
        int             sc_watchdog;
        u_char          sc_bytes[MOUSE_SYS_PACKETSIZE];
        struct          callout_handle sc_callout;
        int             sc_watchdog;
-       dev_t           sc_dev;
-       dev_t           sc_ndev;
        mousehw_t       hw;
        mousemode_t     mode;
        mousestatus_t   status;
        mousehw_t       hw;
        mousemode_t     mode;
        mousestatus_t   status;
@@ -362,10 +360,9 @@ mse_attach(dev)
        sc->mode.accelfactor = (flags & MSE_CONFIG_ACCEL) >> 4;
        callout_handle_init(&sc->sc_callout);
 
        sc->mode.accelfactor = (flags & MSE_CONFIG_ACCEL) >> 4;
        callout_handle_init(&sc->sc_callout);
 
-       sc->sc_dev = make_dev(&mse_cdevsw, unit << 1, 0, 0, 0600,
-                             "mse%d", unit);
-       sc->sc_ndev = make_dev(&mse_cdevsw, (unit<<1)+1, 0, 0, 0600,
-                              "nmse%d", unit);
+       cdevsw_add(&mse_cdevsw, ~1, unit << 1);
+       make_dev(&mse_cdevsw, unit << 1, 0, 0, 0600, "mse%d", unit);
+       make_dev(&mse_cdevsw, (unit<<1)+1, 0, 0, 0600, "nmse%d", unit);
 
        return 0;
 }
 
        return 0;
 }
@@ -385,9 +382,7 @@ mse_detach(dev)
        BUS_TEARDOWN_INTR(device_get_parent(dev), dev, sc->sc_intr, sc->sc_ih);
        bus_release_resource(dev, SYS_RES_IRQ, rid, sc->sc_intr);
        bus_release_resource(dev, SYS_RES_IOPORT, rid, sc->sc_port);
        BUS_TEARDOWN_INTR(device_get_parent(dev), dev, sc->sc_intr, sc->sc_ih);
        bus_release_resource(dev, SYS_RES_IRQ, rid, sc->sc_intr);
        bus_release_resource(dev, SYS_RES_IOPORT, rid, sc->sc_port);
-
-       destroy_dev(sc->sc_dev);
-       destroy_dev(sc->sc_ndev);
+       cdevsw_remove(&mse_cdevsw, ~1, device_get_unit(dev) << 1);
 
        return 0;
 }
 
        return 0;
 }
index 4b8f142..7ddf20a 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/nmdm/nmdm.c,v 1.5.2.1 2001/08/11 00:54:14 mp Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/nmdm/nmdm.c,v 1.5.2.1 2001/08/11 00:54:14 mp Exp $
- * $DragonFly: src/sys/dev/misc/nmdm/nmdm.c,v 1.9 2004/05/13 23:49:16 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/nmdm/nmdm.c,v 1.10 2004/05/19 22:52:43 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -130,15 +130,19 @@ nmdminit(n)
        dev_t dev1, dev2;
        struct nm_softc *pt;
 
        dev_t dev1, dev2;
        struct nm_softc *pt;
 
-       /* For now we only map the lower 8 bits of the minor */
-       if (n & ~0xff)
+       /*
+        * Simplified unit number, use low 8 bits of minor number
+        * (remember, the minor number mask is 0xffff00ff).
+        */
+       if (n & ~0x7f)
                return;
 
        pt = malloc(sizeof(*pt), M_NLMDM, M_WAITOK);
        bzero(pt, sizeof(*pt));
                return;
 
        pt = malloc(sizeof(*pt), M_NLMDM, M_WAITOK);
        bzero(pt, sizeof(*pt));
-       pt->part1.dev = dev1 = make_dev(&nmdm_cdevsw, n+n,
+       cdevsw_add(&nmdm_cdevsw, ~1, n << 1);
+       pt->part1.dev = dev1 = make_dev(&nmdm_cdevsw, n << 1,
            0, 0, 0666, "nmdm%dA", n);
            0, 0, 0666, "nmdm%dA", n);
-       pt->part2.dev = dev2 = make_dev(&nmdm_cdevsw, n+n+1,
+       pt->part2.dev = dev2 = make_dev(&nmdm_cdevsw, (n << 1) + 1,
            0, 0, 0666, "nmdm%dB", n);
 
        dev1->si_drv1 = dev2->si_drv1 = pt;
            0, 0, 0666, "nmdm%dB", n);
 
        dev1->si_drv1 = dev2->si_drv1 = pt;
@@ -162,7 +166,9 @@ nmdmopen(dev_t dev, int flag, int devtype, struct thread *td)
        struct tty *tp, *tp2;
        int error;
        int minr;
        struct tty *tp, *tp2;
        int error;
        int minr;
+#if 0
        dev_t nextdev;
        dev_t nextdev;
+#endif
        struct nm_softc *pti;
        int is_b;
        int     pair;
        struct nm_softc *pti;
        int is_b;
        int     pair;
@@ -170,21 +176,23 @@ nmdmopen(dev_t dev, int flag, int devtype, struct thread *td)
 
        KKASSERT(p != NULL);
 
 
        KKASSERT(p != NULL);
 
+       minr = lminor(dev);
+       pair = minr >> 1;
+       is_b = minr & 1;
+       
+#if 0
        /*
         * XXX: Gross hack for DEVFS:
         * If we openned this device, ensure we have the
         * next one too, so people can open it.
         */
        /*
         * XXX: Gross hack for DEVFS:
         * If we openned this device, ensure we have the
         * next one too, so people can open it.
         */
-       minr = lminor(dev);
-       pair = minr >> 1;
-       is_b = minr & 1;
-       
        if (pair < 127) {
                nextdev = makedev(major(dev), (pair+pair) + 1);
                if (!nextdev->si_drv1) {
                        nmdminit(pair + 1);
                }
        }
        if (pair < 127) {
                nextdev = makedev(major(dev), (pair+pair) + 1);
                if (!nextdev->si_drv1) {
                        nmdminit(pair + 1);
                }
        }
+#endif
        if (!dev->si_drv1)
                nmdminit(pair);
 
        if (!dev->si_drv1)
                nmdminit(pair);
 
@@ -565,7 +573,6 @@ static void
 nmdm_drvinit(unused)
        void *unused;
 {
 nmdm_drvinit(unused)
        void *unused;
 {
-       cdevsw_add(&nmdm_cdevsw);
        /* XXX: Gross hack for DEVFS */
        nmdminit(0);
 }
        /* XXX: Gross hack for DEVFS */
        nmdminit(0);
 }
index 7704d7f..9093df2 100644 (file)
@@ -22,7 +22,7 @@
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ppbus/pcfclock.c,v 1.3.2.1 2000/05/24 00:20:57 n_hibma Exp $
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ppbus/pcfclock.c,v 1.3.2.1 2000/05/24 00:20:57 n_hibma Exp $
- * $DragonFly: src/sys/dev/misc/pcfclock/pcfclock.c,v 1.6 2004/05/13 23:49:16 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/pcfclock/pcfclock.c,v 1.7 2004/05/19 22:52:43 dillon Exp $
  *
  */
 
  *
  */
 
@@ -152,6 +152,7 @@ pcfclock_attach(device_t dev)
        
        unit = device_get_unit(dev);
 
        
        unit = device_get_unit(dev);
 
+       cdevsw_add(&pcfclock_cdevsw, -1, unit);
        make_dev(&pcfclock_cdevsw, unit,
                        UID_ROOT, GID_WHEEL, 0444, PCFCLOCK_NAME "%d", unit);
 
        make_dev(&pcfclock_cdevsw, unit,
                        UID_ROOT, GID_WHEEL, 0444, PCFCLOCK_NAME "%d", unit);
 
index 7b57899..418e59e 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ppbus/ppi.c,v 1.21.2.3 2000/08/07 18:24:43 peter Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ppbus/ppi.c,v 1.21.2.3 2000/08/07 18:24:43 peter Exp $
- * $DragonFly: src/sys/dev/misc/ppi/ppi.c,v 1.7 2004/05/13 23:49:17 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/ppi/ppi.c,v 1.8 2004/05/19 22:52:43 dillon Exp $
  *
  */
 #include "opt_ppb_1284.h"
  *
  */
 #include "opt_ppb_1284.h"
@@ -181,6 +181,7 @@ ppi_attach(device_t dev)
                                                &zero, irq, irq, 1, RF_ACTIVE);
 #endif /* PERIPH_1284 */
 
                                                &zero, irq, irq, 1, RF_ACTIVE);
 #endif /* PERIPH_1284 */
 
+       cdevsw_add(&ppi_cdevsw, -1, device_get_unit(dev));
        make_dev(&ppi_cdevsw, device_get_unit(dev),     /* XXX cleanup */
                 UID_ROOT, GID_WHEEL,
                 0600, "ppi%d", device_get_unit(dev));
        make_dev(&ppi_cdevsw, device_get_unit(dev),     /* XXX cleanup */
                 UID_ROOT, GID_WHEEL,
                 0600, "ppi%d", device_get_unit(dev));
index d8131df..1104774 100644 (file)
@@ -7,7 +7,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/sys/dev/ppbus/pps.c,v 1.24.2.1 2000/05/24 00:20:57 n_hibma Exp $
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/sys/dev/ppbus/pps.c,v 1.24.2.1 2000/05/24 00:20:57 n_hibma Exp $
- * $DragonFly: src/sys/dev/misc/pps/pps.c,v 1.8 2004/05/13 23:49:17 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/pps/pps.c,v 1.9 2004/05/19 22:52:43 dillon Exp $
  *
  * This driver implements a draft-mogul-pps-api-02.txt PPS source.
  *
  *
  * This driver implements a draft-mogul-pps-api-02.txt PPS source.
  *
@@ -91,15 +91,10 @@ ppsprobe(device_t ppsdev)
 {
        struct pps_data *sc;
        dev_t dev;
 {
        struct pps_data *sc;
        dev_t dev;
-       int unit;
 
        sc = DEVTOSOFTC(ppsdev);
        bzero(sc, sizeof(struct pps_data));
 
 
        sc = DEVTOSOFTC(ppsdev);
        bzero(sc, sizeof(struct pps_data));
 
-       unit = device_get_unit(ppsdev);
-       dev = make_dev(&pps_cdevsw, unit,
-           UID_ROOT, GID_WHEEL, 0644, PPS_NAME "%d", unit);
-
        device_set_desc(ppsdev, "Pulse per second Timing Interface");
 
        sc->pps.ppscap = PPS_CAPTUREASSERT | PPS_ECHOASSERT;
        device_set_desc(ppsdev, "Pulse per second Timing Interface");
 
        sc->pps.ppscap = PPS_CAPTUREASSERT | PPS_ECHOASSERT;
@@ -113,6 +108,7 @@ ppsattach(device_t dev)
        struct pps_data *sc = DEVTOSOFTC(dev);
        device_t ppbus = device_get_parent(dev);
        int irq, zero = 0;
        struct pps_data *sc = DEVTOSOFTC(dev);
        device_t ppbus = device_get_parent(dev);
        int irq, zero = 0;
+       int unit;
 
        /* retrieve the ppbus irq */
        BUS_READ_IVAR(ppbus, dev, PPBUS_IVAR_IRQ, &irq);
 
        /* retrieve the ppbus irq */
        BUS_READ_IVAR(ppbus, dev, PPBUS_IVAR_IRQ, &irq);
@@ -126,6 +122,10 @@ ppsattach(device_t dev)
        if (sc->intr_resource == 0)
                return (ENXIO);
 
        if (sc->intr_resource == 0)
                return (ENXIO);
 
+       unit = device_get_unit(ppsdev);
+       cdevsw_add(&pps_cdevsw, -1, unit);
+       dev = make_dev(&pps_cdevsw, unit, UID_ROOT, GID_WHEEL, 0644,
+                       PPS_NAME "%d", unit);
        return (0);
 }
 
        return (0);
 }
 
index b9dd0bb..c4cbbcc 100644 (file)
@@ -21,7 +21,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/psm.c,v 1.23.2.7 2003/11/12 04:26:26 mikeh Exp $
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/psm.c,v 1.23.2.7 2003/11/12 04:26:26 mikeh Exp $
- * $DragonFly: src/sys/dev/misc/psm/psm.c,v 1.10 2004/05/13 23:49:17 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/psm/psm.c,v 1.11 2004/05/19 22:52:44 dillon Exp $
  */
 
 /*
  */
 
 /*
 /* some macros */
 #define PSM_UNIT(dev)          (minor(dev) >> 1)
 #define PSM_NBLOCKIO(dev)      (minor(dev) & 1)
 /* some macros */
 #define PSM_UNIT(dev)          (minor(dev) >> 1)
 #define PSM_NBLOCKIO(dev)      (minor(dev) & 1)
-#define PSM_MKMINOR(unit,block)        (((unit) << 1) | ((block) ? 0:1))
+#define PSM_MKMINOR(unit,block)        ((((unit) & 0xff) << 1) | ((block) ? 0:1))
 
 #ifndef max
 #define max(x,y)               ((x) > (y) ? (x) : (y))
 
 #ifndef max
 #define max(x,y)               ((x) > (y) ? (x) : (y))
@@ -173,8 +173,6 @@ struct psm_softc {          /* Driver status information */
     struct timeval inputtimeout;
     int                  watchdog;     /* watchdog timer flag */
     struct callout_handle callout;     /* watchdog timer call out */
     struct timeval inputtimeout;
     int                  watchdog;     /* watchdog timer flag */
     struct callout_handle callout;     /* watchdog timer call out */
-    dev_t        dev;
-    dev_t        bdev;
 };
 devclass_t psm_devclass;
 #define PSM_SOFTC(unit)        ((struct psm_softc*)devclass_get_softc(psm_devclass, unit))
 };
 devclass_t psm_devclass;
 #define PSM_SOFTC(unit)        ((struct psm_softc*)devclass_get_softc(psm_devclass, unit))
@@ -1250,10 +1248,9 @@ psmattach(device_t dev)
     }
 
     /* Done */
     }
 
     /* Done */
-    sc->dev = make_dev(&psm_cdevsw, PSM_MKMINOR(unit, FALSE), 0, 0, 0666,
-                      "psm%d", unit);
-    sc->bdev = make_dev(&psm_cdevsw, PSM_MKMINOR(unit, TRUE), 0, 0, 0666,
-                       "bpsm%d", unit);
+    cdevsw_add(&psm_cdevsw, PSM_MKMINOR(-1, 0), PSM_MKMINOR(unit, 0));
+    make_dev(&psm_cdevsw, PSM_MKMINOR(unit, FALSE), 0, 0, 0666, "psm%d", unit);
+    make_dev(&psm_cdevsw, PSM_MKMINOR(unit, TRUE), 0, 0, 0666, "bpsm%d", unit);
 
     if (!verbose) {
         printf("psm%d: model %s, device ID %d\n", 
 
     if (!verbose) {
         printf("psm%d: model %s, device ID %d\n", 
@@ -1279,17 +1276,18 @@ psmdetach(device_t dev)
 {
     struct psm_softc *sc;
     int rid;
 {
     struct psm_softc *sc;
     int rid;
+    int unit;
 
     sc = device_get_softc(dev);
     if (sc->state & PSM_OPEN)
        return EBUSY;
 
 
     sc = device_get_softc(dev);
     if (sc->state & PSM_OPEN)
        return EBUSY;
 
+    unit = device_get_unit(dev);
+
     rid = 0;
     BUS_TEARDOWN_INTR(device_get_parent(dev), dev, sc->intr, sc->ih);
     bus_release_resource(dev, SYS_RES_IRQ, rid, sc->intr);
     rid = 0;
     BUS_TEARDOWN_INTR(device_get_parent(dev), dev, sc->intr, sc->ih);
     bus_release_resource(dev, SYS_RES_IRQ, rid, sc->intr);
-
-    destroy_dev(sc->dev);
-    destroy_dev(sc->bdev);
+    cdevsw_remove(&psm_cdevsw, PSM_MKMINOR(-1, 0), PSM_MKMINOR(unit, 0));
 
     return 0;
 }
 
     return 0;
 }
index f6392ad..bd6b21c 100644 (file)
@@ -13,7 +13,7 @@
  * Snoop stuff.
  *
  * $FreeBSD: src/sys/dev/snp/snp.c,v 1.69.2.2 2002/05/06 07:30:02 dd Exp $
  * Snoop stuff.
  *
  * $FreeBSD: src/sys/dev/snp/snp.c,v 1.69.2.2 2002/05/06 07:30:02 dd Exp $
- * $DragonFly: src/sys/dev/misc/snp/snp.c,v 1.9 2004/05/13 23:49:17 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/snp/snp.c,v 1.10 2004/05/19 22:52:44 dillon Exp $
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -386,8 +386,9 @@ snpopen(dev_t dev, int flag, int mode, d_thread_t *td)
                    0600, "snp%d", minor(dev));
                dev->si_drv1 = snp = malloc(sizeof(*snp), M_SNP,
                    M_WAITOK | M_ZERO);
                    0600, "snp%d", minor(dev));
                dev->si_drv1 = snp = malloc(sizeof(*snp), M_SNP,
                    M_WAITOK | M_ZERO);
-       } else
+       } else {
                return (EBUSY);
                return (EBUSY);
+       }
 
        /*
         * We intentionally do not OR flags with SNOOP_OPEN, but set them so
 
        /*
         * We intentionally do not OR flags with SNOOP_OPEN, but set them so
@@ -596,13 +597,13 @@ snp_modevent(mod, type, data)
        switch (type) {
        case MOD_LOAD:
                snooplinedisc = ldisc_register(LDISC_LOAD, &snpdisc);
        switch (type) {
        case MOD_LOAD:
                snooplinedisc = ldisc_register(LDISC_LOAD, &snpdisc);
-               cdevsw_add(&snp_cdevsw);
+               cdevsw_add(&snp_cdevsw, 0, 0);
                break;
        case MOD_UNLOAD:
                if (!LIST_EMPTY(&snp_sclist))
                        return (EBUSY);
                ldisc_deregister(snooplinedisc);
                break;
        case MOD_UNLOAD:
                if (!LIST_EMPTY(&snp_sclist))
                        return (EBUSY);
                ldisc_deregister(snooplinedisc);
-               cdevsw_remove(&snp_cdevsw);
+               cdevsw_remove(&snp_cdevsw, 0, 0);
                break;
        default:
                break;
                break;
        default:
                break;
index 4bbcf84..01492f8 100644 (file)
@@ -48,7 +48,7 @@
  * also provided sample code upon which this driver was based.
  *
  * $FreeBSD: src/sys/i386/isa/spic.c,v 1.4.2.1 2002/04/15 00:52:12 will Exp $
  * also provided sample code upon which this driver was based.
  *
  * $FreeBSD: src/sys/i386/isa/spic.c,v 1.4.2.1 2002/04/15 00:52:12 will Exp $
- * $DragonFly: src/sys/dev/misc/spic/spic.c,v 1.7 2004/05/13 23:49:17 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/spic/spic.c,v 1.8 2004/05/19 22:52:44 dillon Exp $
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -355,7 +355,8 @@ spic_attach(device_t dev)
        spic_call1(sc, 0x92);
 
        /* There can be only one */
        spic_call1(sc, 0x92);
 
        /* There can be only one */
-       make_dev(&spic_cdevsw, 0, 0, 0, 0600, "jogdial");
+       cdevsw_add(&spic_cdevsw, -1, device_get_unit(dev));
+       make_dev(&spic_cdevsw, device_get_unit(deV), 0, 0, 0600, "jogdial");
 
        return 0;
 }
 
        return 0;
 }
index 4e2be6c..5bdfa88 100644 (file)
@@ -43,7 +43,7 @@
  * Version 1.7, December 1995.
  *
  * $FreeBSD: src/sys/i386/isa/spigot.c,v 1.44 2000/01/29 16:17:36 peter Exp $
  * Version 1.7, December 1995.
  *
  * $FreeBSD: src/sys/i386/isa/spigot.c,v 1.44 2000/01/29 16:17:36 peter Exp $
- * $DragonFly: src/sys/dev/misc/spigot/spigot.c,v 1.8 2004/05/13 23:49:17 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/spigot/spigot.c,v 1.9 2004/05/19 22:52:44 dillon Exp $
  *
  */
 
  *
  */
 
@@ -120,13 +120,10 @@ static ointhand2_t        spigintr;
 static int
 spigot_probe(struct isa_device *devp)
 {
 static int
 spigot_probe(struct isa_device *devp)
 {
-int                    status;
-struct spigot_softc    *ss=(struct spigot_softc *)&spigot_softc[devp->id_unit];
-static int once;
-
-       if (!once++)
-               cdevsw_add(&spigot_cdevsw);
+       struct spigot_softc *ss;
+       int status;
 
 
+       ss = (struct spigot_softc *)&spigot_softc[devp->id_unit];
        ss->flags = 0;
        ss->maddr = 0;
        ss->irq = 0;
        ss->flags = 0;
        ss->maddr = 0;
        ss->irq = 0;
@@ -150,6 +147,7 @@ spigot_attach(struct isa_device *devp)
        devp->id_ointr = spigintr;
        ss->maddr = kvtop(devp->id_maddr);
        ss->irq = devp->id_irq;
        devp->id_ointr = spigintr;
        ss->maddr = kvtop(devp->id_maddr);
        ss->irq = devp->id_irq;
+       cdevsw_add(&spigot_cdevsw, -1, unit);
        make_dev(&spigot_cdevsw, unit, 0, 0, 0644, "spigot%d", unit);
        return 1;
 }
        make_dev(&spigot_cdevsw, unit, 0, 0, 0644, "spigot%d", unit);
        return 1;
 }
index f58076d..84e5e92 100644 (file)
@@ -31,7 +31,7 @@
  * in 3.0-980524-SNAP then hacked a bit (but probably not enough :-).
  *
  * $FreeBSD: src/sys/dev/streams/streams.c,v 1.16.2.1 2001/02/26 04:23:07 jlemon Exp $
  * in 3.0-980524-SNAP then hacked a bit (but probably not enough :-).
  *
  * $FreeBSD: src/sys/dev/streams/streams.c,v 1.16.2.1 2001/02/26 04:23:07 jlemon Exp $
- * $DragonFly: src/sys/dev/misc/streams/Attic/streams.c,v 1.11 2004/05/13 23:49:17 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/streams/Attic/streams.c,v 1.12 2004/05/19 22:52:44 dillon Exp $
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -96,9 +96,6 @@ enum {
        dev_unix_ord_stream     = 40
 };
 
        dev_unix_ord_stream     = 40
 };
 
-dev_t dt_ptm, dt_arp, dt_icmp, dt_ip, dt_tcp, dt_udp, dt_rawip,
-       dt_unix_dgram, dt_unix_stream, dt_unix_ord_stream;
-
 static struct fileops svr4_netops = {
        NULL,   /* port */
        NULL,   /* clone */
 static struct fileops svr4_netops = {
        NULL,   /* port */
        NULL,   /* clone */
@@ -140,46 +137,23 @@ streams_modevent(module_t mod, int type, void *unused)
        switch (type) {
        case MOD_LOAD:
                /* XXX should make sure it isn't already loaded first */
        switch (type) {
        case MOD_LOAD:
                /* XXX should make sure it isn't already loaded first */
-               dt_ptm = make_dev(&streams_cdevsw, dev_ptm, 0, 0, 0666,
-                       "ptm");
-               dt_arp = make_dev(&streams_cdevsw, dev_arp, 0, 0, 0666,
-                       "arp");
-               dt_icmp = make_dev(&streams_cdevsw, dev_icmp, 0, 0, 0666,
-                       "icmp");
-               dt_ip = make_dev(&streams_cdevsw, dev_ip, 0, 0, 0666,
-                       "ip");
-               dt_tcp = make_dev(&streams_cdevsw, dev_tcp, 0, 0, 0666,
-                       "tcp");
-               dt_udp = make_dev(&streams_cdevsw, dev_udp, 0, 0, 0666,
-                       "udp");
-               dt_rawip = make_dev(&streams_cdevsw, dev_rawip, 0, 0, 0666,
-                       "rawip");
-               dt_unix_dgram = make_dev(&streams_cdevsw, dev_unix_dgram,
-                       0, 0, 0666, "ticlts");
-               dt_unix_stream = make_dev(&streams_cdevsw, dev_unix_stream,
+               cdevsw_add(&streams_cdevsw, 0, 0);
+               make_dev(&streams_cdevsw, dev_ptm, 0, 0, 0666, "ptm");
+               make_dev(&streams_cdevsw, dev_arp, 0, 0, 0666, "arp");
+               make_dev(&streams_cdevsw, dev_icmp, 0, 0, 0666, "icmp");
+               make_dev(&streams_cdevsw, dev_ip, 0, 0, 0666, "ip");
+               make_dev(&streams_cdevsw, dev_tcp, 0, 0, 0666, "tcp");
+               make_dev(&streams_cdevsw, dev_udp, 0, 0, 0666, "udp");
+               make_dev(&streams_cdevsw, dev_rawip, 0, 0, 0666, "rawip");
+               make_dev(&streams_cdevsw, dev_unix_dgram, 0, 0, 0666, "ticlts");
+               make_dev(&streams_cdevsw, dev_unix_stream, 
                        0, 0, 0666, "ticots");
                        0, 0, 0666, "ticots");
-               dt_unix_ord_stream = make_dev(&streams_cdevsw,
-                       dev_unix_ord_stream, 0, 0, 0666, "ticotsord");
-
-               if (! (dt_ptm && dt_arp && dt_icmp && dt_ip && dt_tcp &&
-                               dt_udp && dt_rawip && dt_unix_dgram &&
-                               dt_unix_stream && dt_unix_ord_stream)) {
-                       printf("WARNING: device config for STREAMS failed\n");
-                       printf("Suggest unloading streams KLD\n");
-               }
+               make_dev(&streams_cdevsw, dev_unix_ord_stream, 
+                       0, 0, 0666, "ticotsord");
                return 0;
        case MOD_UNLOAD:
                /* XXX should check to see if it's busy first */
                return 0;
        case MOD_UNLOAD:
                /* XXX should check to see if it's busy first */
-               destroy_dev(dt_ptm);
-               destroy_dev(dt_arp);
-               destroy_dev(dt_icmp);
-               destroy_dev(dt_ip);
-               destroy_dev(dt_tcp);
-               destroy_dev(dt_udp);
-               destroy_dev(dt_rawip);
-               destroy_dev(dt_unix_dgram);
-               destroy_dev(dt_unix_stream);
-               destroy_dev(dt_unix_ord_stream);
+               cdevsw_remove(&streams_cdevsw, 0, 0);
 
                return 0;
        default:
 
                return 0;
        default:
index 381bdb1..ae2e48c 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/dev/syscons/syscons.c,v 1.336.2.17 2004/03/25 08:41:09 ru Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/dev/syscons/syscons.c,v 1.336.2.17 2004/03/25 08:41:09 ru Exp $
- * $DragonFly: src/sys/dev/misc/syscons/syscons.c,v 1.10 2004/05/13 23:49:17 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/syscons/syscons.c,v 1.11 2004/05/19 22:52:44 dillon Exp $
  */
 
 #include "use_splash.h"
  */
 
 #include "use_splash.h"
@@ -216,8 +216,8 @@ static struct cdevsw sc_cdevsw = {
        /* poll */      ttypoll,
        /* mmap */      scmmap,
        /* strategy */  nostrategy,
        /* poll */      ttypoll,
        /* mmap */      scmmap,
        /* strategy */  nostrategy,
-       /* psize */     nopsize,
        /* dump */      nodump,
        /* dump */      nodump,
+       /* psize */     nopsize,
        /* kqfilter */  ttykqfilter
 };
 
        /* kqfilter */  ttykqfilter
 };
 
@@ -378,6 +378,12 @@ sc_attach_unit(int unit, int flags)
        EVENTHANDLER_REGISTER(shutdown_pre_sync, scshutdown, 
                              (void *)(uintptr_t)unit, SHUTDOWN_PRI_DEFAULT);
 
        EVENTHANDLER_REGISTER(shutdown_pre_sync, scshutdown, 
                              (void *)(uintptr_t)unit, SHUTDOWN_PRI_DEFAULT);
 
+    /* 
+     * create devices.  cdevsw_add() must be called to make devices under
+     * this major number available to userland.
+     */
+    cdevsw_add(&sc_cdevsw, ~(MAXCONS - 1), unit * MAXCONS);
+
     for (vc = 0; vc < sc->vtys; vc++) {
        dev = make_dev(&sc_cdevsw, vc + unit * MAXCONS,
            UID_ROOT, GID_WHEEL, 0600, "ttyv%r", vc + unit * MAXCONS);
     for (vc = 0; vc < sc->vtys; vc++) {
        dev = make_dev(&sc_cdevsw, vc + unit * MAXCONS,
            UID_ROOT, GID_WHEEL, 0600, "ttyv%r", vc + unit * MAXCONS);
@@ -389,6 +395,7 @@ sc_attach_unit(int unit, int flags)
         */
     }
 
         */
     }
 
+    cdevsw_add(&sc_cdevsw, -1, SC_CONSOLECTL); /* XXX */
     dev = make_dev(&sc_cdevsw, SC_CONSOLECTL,
                   UID_ROOT, GID_WHEEL, 0600, "consolectl");
     dev->si_tty = sc_console_tty = ttymalloc(sc_console_tty);
     dev = make_dev(&sc_cdevsw, SC_CONSOLECTL,
                   UID_ROOT, GID_WHEEL, 0600, "consolectl");
     dev->si_tty = sc_console_tty = ttymalloc(sc_console_tty);
@@ -1328,7 +1335,8 @@ sccnprobe(struct consdev *cp)
        return;
 
     /* initialize required fields */
        return;
 
     /* initialize required fields */
-    cp->cn_dev = makedev(CDEV_MAJOR, SC_CONSOLECTL);
+    cp->cn_dev = make_dev(&sc_cdevsw, SC_CONSOLECTL,
+                  UID_ROOT, GID_WHEEL, 0600, "consolectl");
 #endif /* __i386__ */
 
 #if __alpha__
 #endif /* __i386__ */
 
 #if __alpha__
@@ -1408,7 +1416,8 @@ sccnattach(void)
     scinit(unit, flags | SC_KERNEL_CONSOLE);
     sc_console_unit = unit;
     sc_console = SC_STAT(sc_get_softc(unit, SC_KERNEL_CONSOLE)->dev[0]);
     scinit(unit, flags | SC_KERNEL_CONSOLE);
     sc_console_unit = unit;
     sc_console = SC_STAT(sc_get_softc(unit, SC_KERNEL_CONSOLE)->dev[0]);
-    consdev.cn_dev = makedev(CDEV_MAJOR, 0);
+    consdev.cn_dev = make_dev(&sc_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600,
+                               "ttyv%r", 0);
     cn_tab = &consdev;
 }
 
     cn_tab = &consdev;
 }
 
@@ -2559,7 +2568,8 @@ scinit(int unit, int flags)
        sc->vtys = MAXCONS;             /* XXX: should be configurable */
        if (flags & SC_KERNEL_CONSOLE) {
            sc->dev = main_devs;
        sc->vtys = MAXCONS;             /* XXX: should be configurable */
        if (flags & SC_KERNEL_CONSOLE) {
            sc->dev = main_devs;
-           sc->dev[0] = makedev(CDEV_MAJOR, unit*MAXCONS);
+           sc->dev[0] = make_dev(&sc_cdevsw, unit*MAXCONS, UID_ROOT, 
+                               GID_WHEEL, 0600, "ttyv%r", unit*MAXCONS);
            sc->dev[0]->si_tty = &main_tty;
            ttyregister(&main_tty);
            scp = &main_console;
            sc->dev[0]->si_tty = &main_tty;
            ttyregister(&main_tty);
            scp = &main_console;
@@ -2575,7 +2585,8 @@ scinit(int unit, int flags)
            /* assert(sc_malloc) */
            sc->dev = malloc(sizeof(dev_t)*sc->vtys, M_DEVBUF, M_WAITOK);
            bzero(sc->dev, sizeof(dev_t)*sc->vtys);
            /* assert(sc_malloc) */
            sc->dev = malloc(sizeof(dev_t)*sc->vtys, M_DEVBUF, M_WAITOK);
            bzero(sc->dev, sizeof(dev_t)*sc->vtys);
-           sc->dev[0] = makedev(CDEV_MAJOR, unit*MAXCONS);
+           sc->dev[0] = make_dev(&sc_cdevsw, unit*MAXCONS, UID_ROOT, 
+                               GID_WHEEL, 0600, "ttyv%r", unit*MAXCONS);
            sc->dev[0]->si_tty = ttymalloc(sc->dev[0]->si_tty);
            scp = alloc_scp(sc, sc->first_vty);
        }
            sc->dev[0]->si_tty = ttymalloc(sc->dev[0]->si_tty);
            scp = alloc_scp(sc, sc->first_vty);
        }
index 3cb235a..ae6a346 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/syscons/syscons.h,v 1.60.2.6 2002/09/15 22:30:45 dd Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/syscons/syscons.h,v 1.60.2.6 2002/09/15 22:30:45 dd Exp $
- * $DragonFly: src/sys/dev/misc/syscons/syscons.h,v 1.5 2003/11/12 22:08:04 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/syscons/syscons.h,v 1.6 2004/05/19 22:52:44 dillon Exp $
  */
 
 #ifndef _DEV_SYSCONS_SYSCONS_H_
  */
 
 #ifndef _DEV_SYSCONS_SYSCONS_H_
@@ -45,7 +45,7 @@
 /* default values for configuration options */
 
 #ifndef MAXCONS
 /* default values for configuration options */
 
 #ifndef MAXCONS
-#define MAXCONS                16
+#define MAXCONS                16      /* power of 2 */
 #endif
 
 #ifdef SC_NO_SYSMOUSE
 #endif
 
 #ifdef SC_NO_SYSMOUSE
index a335fb9..dbc0859 100644 (file)
@@ -24,7 +24,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/syscons/sysmouse.c,v 1.2.2.2 2001/07/16 05:21:24 yokota Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/syscons/sysmouse.c,v 1.2.2.2 2001/07/16 05:21:24 yokota Exp $
- * $DragonFly: src/sys/dev/misc/syscons/sysmouse.c,v 1.7 2004/05/13 23:49:17 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/syscons/sysmouse.c,v 1.8 2004/05/19 22:52:44 dillon Exp $
  */
 
 #include "opt_syscons.h"
  */
 
 #include "opt_syscons.h"
@@ -259,6 +259,7 @@ sm_attach_mouse(void *unused)
 {
        dev_t dev;
 
 {
        dev_t dev;
 
+       cdevsw_add(&sm_cdevsw, -1, SC_MOUSE);
        dev = make_dev(&sm_cdevsw, SC_MOUSE, UID_ROOT, GID_WHEEL, 0600,
                       "sysmouse");
        /* sysmouse doesn't have scr_stat */
        dev = make_dev(&sm_cdevsw, SC_MOUSE, UID_ROOT, GID_WHEEL, 0600,
                       "sysmouse");
        /* sysmouse doesn't have scr_stat */
index d85a4b9..bfbd571 100644 (file)
@@ -29,7 +29,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/tw.c,v 1.38 2000/01/29 16:00:32 peter Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/tw.c,v 1.38 2000/01/29 16:00:32 peter Exp $
- * $DragonFly: src/sys/dev/misc/tw/tw.c,v 1.9 2004/05/13 23:49:18 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/tw/tw.c,v 1.10 2004/05/19 22:52:45 dillon Exp $
  *
  */
 
  *
  */
 
@@ -347,10 +347,7 @@ static int twprobe(idp)
   struct tw_sc sc;
   int d;
   int tries;
   struct tw_sc sc;
   int d;
   int tries;
-  static int once;
 
 
-  if (!once++)
-       cdevsw_add(&tw_cdevsw);
   sc.sc_port = idp->id_iobase;
   /* Search for the zero crossing signal at ports, bit combinations. */
   tw_zcport = tw_control;
   sc.sc_port = idp->id_iobase;
   /* Search for the zero crossing signal at ports, bit combinations. */
   tw_zcport = tw_control;
@@ -406,6 +403,7 @@ static int twattach(idp)
   sc->sc_state = 0;
   sc->sc_rcount = 0;
   callout_handle_init(&sc->abortrcv_ch);
   sc->sc_state = 0;
   sc->sc_rcount = 0;
   callout_handle_init(&sc->abortrcv_ch);
+  cdevsw_add(&tw_cdevsw, -1, unit);
   make_dev(&tw_cdevsw, unit, 0, 0, 0600, "tw%d", unit);
   return (1);
 }
   make_dev(&tw_cdevsw, unit, 0, 0, 0600, "tw%d", unit);
   return (1);
 }
index 956f05d..2ca96f2 100644 (file)
@@ -7,7 +7,7 @@
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/sys/pci/xrpu.c,v 1.19.2.1 2000/08/02 22:19:57 peter Exp $
  * ----------------------------------------------------------------------------
  *
  * $FreeBSD: src/sys/pci/xrpu.c,v 1.19.2.1 2000/08/02 22:19:57 peter Exp $
- * $DragonFly: src/sys/dev/misc/xrpu/Attic/xrpu.c,v 1.7 2004/05/13 23:49:18 dillon Exp $
+ * $DragonFly: src/sys/dev/misc/xrpu/Attic/xrpu.c,v 1.8 2004/05/19 22:52:45 dillon Exp $
  *
  * A very simple device driver for PCI cards based on Xilinx 6200 series
  * FPGA/RPU devices.  Current Functionality is to allow you to open and
  *
  * A very simple device driver for PCI cards based on Xilinx 6200 series
  * FPGA/RPU devices.  Current Functionality is to allow you to open and
@@ -253,7 +253,8 @@ xrpu_attach(device_t self)
                printf("Mapped physbase %#lx to virbase %#lx\n",
                    (u_long)sc->physbase, (u_long)sc->virbase);
 
                printf("Mapped physbase %#lx to virbase %#lx\n",
                    (u_long)sc->physbase, (u_long)sc->virbase);
 
-       make_dev(&xrpu_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "xrpu%d", unit);
+       cdevsw_add(&xrpu_cdevsw, -1, unit);
+       make_dev(&xrpu_cdevsw, unit, UID_ROOT, GID_WHEEL, 0600, "xrpu%d", unit);
        return 0;
 }
 
        return 0;
 }
 
index 0a80ef9..0674d10 100644 (file)
@@ -16,7 +16,7 @@
  * Version 1.9, Wed Oct  4 18:58:15 MSK 1995
  *
  * $FreeBSD: src/sys/i386/isa/cx.c,v 1.45.2.1 2001/02/26 04:23:09 jlemon Exp $
  * Version 1.9, Wed Oct  4 18:58:15 MSK 1995
  *
  * $FreeBSD: src/sys/i386/isa/cx.c,v 1.45.2.1 2001/02/26 04:23:09 jlemon Exp $
- * $DragonFly: src/sys/dev/netif/cx/cx.c,v 1.11 2004/05/13 23:49:18 dillon Exp $
+ * $DragonFly: src/sys/dev/netif/cx/cx.c,v 1.12 2004/05/19 22:52:45 dillon Exp $
  *
  */
 #undef DEBUG
  *
  */
 #undef DEBUG
@@ -945,13 +945,13 @@ void cxtimeout (void *a)
 
 
 #if defined(__DragonFly__) || (defined(__FreeBSD__) && (__FreeBSD__ > 1 ))
 
 
 #if defined(__DragonFly__) || (defined(__FreeBSD__) && (__FreeBSD__ > 1 ))
-static void    cx_drvinit(void *unused)
-{
 
 
-       cdevsw_add(&cx_cdevsw);
+static 
+void
+cx_drvinit(void *unused)
+{
 }
 
 SYSINIT(cxdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cx_drvinit,NULL)
 
 }
 
 SYSINIT(cxdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cx_drvinit,NULL)
 
-
 #endif
 #endif
index bb21905..897f6e7 100644 (file)
@@ -17,7 +17,7 @@
  * Version 1.9, Wed Oct  4 18:58:15 MSK 1995
  *
  * $FreeBSD: src/sys/i386/isa/if_cx.c,v 1.32 1999/11/18 08:36:42 peter Exp $
  * Version 1.9, Wed Oct  4 18:58:15 MSK 1995
  *
  * $FreeBSD: src/sys/i386/isa/if_cx.c,v 1.32 1999/11/18 08:36:42 peter Exp $
- * $DragonFly: src/sys/dev/netif/cx/if_cx.c,v 1.11 2004/05/04 12:12:13 hmp Exp $
+ * $DragonFly: src/sys/dev/netif/cx/if_cx.c,v 1.12 2004/05/19 22:52:45 dillon Exp $
  *
  */
 #undef DEBUG
  *
  */
 #undef DEBUG
@@ -294,6 +294,7 @@ cxattach (struct isa_device *id)
                timeout (cxtimeout, 0, hz*5);
 
        printf ("cx%d: <Cronyx-%s>\n", unit, b->name);
                timeout (cxtimeout, 0, hz*5);
 
        printf ("cx%d: <Cronyx-%s>\n", unit, b->name);
+       cdevsw_add(&cx_cdevsw, -1, unit);
        make_dev(&cx_cdevsw, unit, UID_ROOT, GID_WHEEL, 0600, "cx%d", unit);
        return (1);
 }
        make_dev(&cx_cdevsw, unit, UID_ROOT, GID_WHEEL, 0600, "cx%d", unit);
        return (1);
 }
index 98d144c..8cd0cd4 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/aac/aac.c,v 1.9.2.14 2003/04/08 13:22:08 scottl Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/aac/aac.c,v 1.9.2.14 2003/04/08 13:22:08 scottl Exp $
- *     $DragonFly: src/sys/dev/raid/aac/aac.c,v 1.11 2004/05/13 23:49:18 dillon Exp $
+ *     $DragonFly: src/sys/dev/raid/aac/aac.c,v 1.12 2004/05/19 22:52:46 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -296,6 +296,7 @@ aac_attach(struct aac_softc *sc)
         * Make the control device.
         */
        unit = device_get_unit(sc->aac_dev);
         * Make the control device.
         */
        unit = device_get_unit(sc->aac_dev);
+       cdevsw_add(&aac_cdevsw, -1, unit);
        sc->aac_dev_t = make_dev(&aac_cdevsw, unit, UID_ROOT, GID_WHEEL, 0644,
                                 "aac%d", unit);
 #if defined(__FreeBSD__) && __FreeBSD_version > 500005
        sc->aac_dev_t = make_dev(&aac_cdevsw, unit, UID_ROOT, GID_WHEEL, 0644,
                                 "aac%d", unit);
 #if defined(__FreeBSD__) && __FreeBSD_version > 500005
@@ -303,6 +304,7 @@ aac_attach(struct aac_softc *sc)
        (void)make_dev_alias(sc->aac_dev_t, "hpn%d", unit);
 #endif
        sc->aac_dev_t->si_drv1 = sc;
        (void)make_dev_alias(sc->aac_dev_t, "hpn%d", unit);
 #endif
        sc->aac_dev_t->si_drv1 = sc;
+       reference_dev(sc->aac_dev_t);
 
        /* Create the AIF thread */
 #if defined(__FreeBSD__) && __FreeBSD_version > 500005
 
        /* Create the AIF thread */
 #if defined(__FreeBSD__) && __FreeBSD_version > 500005
@@ -466,9 +468,11 @@ aac_free(struct aac_softc *sc)
                bus_dma_tag_destroy(sc->aac_parent_dmat);
 
        /* release the register window mapping */
                bus_dma_tag_destroy(sc->aac_parent_dmat);
 
        /* release the register window mapping */
-       if (sc->aac_regs_resource != NULL)
+       if (sc->aac_regs_resource != NULL) {
                bus_release_resource(sc->aac_dev, SYS_RES_MEMORY,
                                     sc->aac_regs_rid, sc->aac_regs_resource);
                bus_release_resource(sc->aac_dev, SYS_RES_MEMORY,
                                     sc->aac_regs_rid, sc->aac_regs_resource);
+       }
+       cdevsw_remove(&aac_cdevsw, -1, device_get_unit(sc->aac_dev));
 }
 
 /*
 }
 
 /*
index c40c032..5ec4c97 100644 (file)
@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/aac/aac_disk.c,v 1.3.2.8 2003/01/11 18:39:39 scottl Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/aac/aac_disk.c,v 1.3.2.8 2003/01/11 18:39:39 scottl Exp $
- *     $DragonFly: src/sys/dev/raid/aac/aac_disk.c,v 1.7 2004/05/13 23:49:18 dillon Exp $
+ *     $DragonFly: src/sys/dev/raid/aac/aac_disk.c,v 1.8 2004/05/19 22:52:46 dillon Exp $
  */
 
 #include "opt_aac.h"
  */
 
 #include "opt_aac.h"
@@ -221,13 +221,12 @@ aac_disk_strategy(struct bio *bp)
  * for the controller to complete the requests.
  */
 static int
  * for the controller to complete the requests.
  */
 static int
-aac_disk_dump(dev_t dev)
+aac_disk_dump(dev_t dev, u_int count, u_int blkno, u_int secsize)
 {
        struct aac_disk *ad;
        struct aac_softc *sc;
        vm_offset_t addr;
        long blkcnt;
 {
        struct aac_disk *ad;
        struct aac_softc *sc;
        vm_offset_t addr;
        long blkcnt;
-       unsigned int count, blkno, secsize;
        int dumppages;
        int i, error;
 
        int dumppages;
        int i, error;
 
@@ -235,9 +234,6 @@ aac_disk_dump(dev_t dev)
        addr = 0;
        dumppages = AAC_MAXIO / PAGE_SIZE;
 
        addr = 0;
        dumppages = AAC_MAXIO / PAGE_SIZE;
 
-       if ((error = disk_dumpcheck(dev, &count, &blkno, &secsize)))
-               return (error);
-
        if (ad == NULL)
                return (ENXIO);
 
        if (ad == NULL)
                return (ENXIO);
 
index f7d171f..5dcfb6b 100644 (file)
@@ -53,7 +53,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/amr/amr.c,v 1.7.2.13 2003/01/15 13:41:18 emoore Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/amr/amr.c,v 1.7.2.13 2003/01/15 13:41:18 emoore Exp $
- *     $DragonFly: src/sys/dev/raid/amr/amr.c,v 1.9 2004/05/13 23:49:18 dillon Exp $
+ *     $DragonFly: src/sys/dev/raid/amr/amr.c,v 1.10 2004/05/19 22:52:46 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -253,9 +253,12 @@ amr_attach(struct amr_softc *sc)
     /*
      * Create the control device.
      */
     /*
      * Create the control device.
      */
-    sc->amr_dev_t = make_dev(&amr_cdevsw, device_get_unit(sc->amr_dev), UID_ROOT, GID_OPERATOR,
-                            S_IRUSR | S_IWUSR, "amr%d", device_get_unit(sc->amr_dev));
+    cdevsw_add(&amr_cdevsw, -1, device_get_unit(sc->amr_dev));
+    sc->amr_dev_t = make_dev(&amr_cdevsw, device_get_unit(sc->amr_dev), 
+                           UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR,
+                           "amr%d", device_get_unit(sc->amr_dev));
     sc->amr_dev_t->si_drv1 = sc;
     sc->amr_dev_t->si_drv1 = sc;
+    reference_dev(sc->amr_dev_t);
 
     /*
      * Schedule ourselves to bring the controller up once interrupts are
 
     /*
      * Schedule ourselves to bring the controller up once interrupts are
@@ -360,6 +363,7 @@ amr_free(struct amr_softc *sc)
     /* destroy control device */
     if( sc->amr_dev_t != (dev_t)NULL)
            destroy_dev(sc->amr_dev_t);
     /* destroy control device */
     if( sc->amr_dev_t != (dev_t)NULL)
            destroy_dev(sc->amr_dev_t);
+    cdevsw_remove(&amr_cdevsw, -1, device_get_unit(sc->amr_dev));
 }
 
 /*******************************************************************************
 }
 
 /*******************************************************************************
index 7a0df68..d494656 100644 (file)
@@ -54,7 +54,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/amr/amr_disk.c,v 1.5.2.5 2002/12/20 15:12:04 emoore Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/amr/amr_disk.c,v 1.5.2.5 2002/12/20 15:12:04 emoore Exp $
- * $DragonFly: src/sys/dev/raid/amr/amr_disk.c,v 1.8 2004/05/13 23:49:18 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/amr/amr_disk.c,v 1.9 2004/05/19 22:52:46 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -195,12 +195,11 @@ amrd_ioctl(dev_t dev, u_long cmd, caddr_t addr, int32_t flag, d_thread_t *td)
  * System crashdump support
  */
 int
  * System crashdump support
  */
 int
-amrd_dump(dev_t dev)
+amrd_dump(dev_t dev, u_int count, u_int blkno, u_int secsize)
 {
     
     struct amrd_softc  *amrd_sc = (struct amrd_softc *)dev->si_drv1;
     struct amr_softc   *amr_sc;
 {
     
     struct amrd_softc  *amrd_sc = (struct amrd_softc *)dev->si_drv1;
     struct amr_softc   *amr_sc;
-    u_int              count, blkno, secsize;
     vm_paddr_t         addr = 0;
     long               blkcnt;
     int                        dumppages = MAXDUMPPGS;
     vm_paddr_t         addr = 0;
     long               blkcnt;
     int                        dumppages = MAXDUMPPGS;
@@ -210,9 +209,6 @@ amrd_dump(dev_t dev)
 
     debug_called(1);
 
 
     debug_called(1);
 
-    if ((error = disk_dumpcheck(dev, &count, &blkno, &secsize)))
-        return(error);
-
     amr_sc  = (struct amr_softc *)amrd_sc->amrd_controller;
 
     if (!amrd_sc || !amr_sc)
     amr_sc  = (struct amr_softc *)amrd_sc->amrd_controller;
 
     if (!amrd_sc || !amr_sc)
index 811bb30..a7d880e 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/dev/asr/asr.c,v 1.3.2.2 2001/08/23 05:21:29 scottl Exp $ */
 /* $FreeBSD: src/sys/dev/asr/asr.c,v 1.3.2.2 2001/08/23 05:21:29 scottl Exp $ */
-/* $DragonFly: src/sys/dev/raid/asr/asr.c,v 1.13 2004/03/15 03:05:08 dillon Exp $ */
+/* $DragonFly: src/sys/dev/raid/asr/asr.c,v 1.14 2004/05/19 22:52:46 dillon Exp $ */
 /*
  * Copyright (c) 1996-2000 Distributed Processing Technology Corporation
  * Copyright (c) 2000-2001 Adaptec Corporation
 /*
  * Copyright (c) 1996-2000 Distributed Processing Technology Corporation
  * Copyright (c) 2000-2001 Adaptec Corporation
@@ -602,8 +602,7 @@ STATIC u_int32_t         asr_time_delta (IN struct timeval start,
  * Initialize the dynamic cdevsw hooks.
  */
 STATIC void
  * Initialize the dynamic cdevsw hooks.
  */
 STATIC void
-asr_drvinit (
-        void * unused)
+asr_drvinit (void * unused)
 {
         static int asr_devsw_installed = 0;
 
 {
         static int asr_devsw_installed = 0;
 
@@ -614,25 +613,28 @@ asr_drvinit (
         /*
          * Find a free spot (the report during driver load used by
          * osd layer in engine to generate the controlling nodes).
         /*
          * Find a free spot (the report during driver load used by
          * osd layer in engine to generate the controlling nodes).
+        *
+        * XXX this is garbage code, store a unit number in asr_cdevsw
+        * and iterate through that instead?
          */
          */
-        while ((asr_cdevsw.d_maj < NUMCDEVSW)
-         && (dev_dport(makedev(asr_cdevsw.d_maj,0)) != NULL)) {
+        while (asr_cdevsw.d_maj < NUMCDEVSW &&
+               cdevsw_get(asr_cdevsw.d_maj, -1) != NULL
+       ) {
                 ++asr_cdevsw.d_maj;
         }
                 ++asr_cdevsw.d_maj;
         }
-        if (asr_cdevsw.d_maj >= NUMCDEVSW) for (
-          asr_cdevsw.d_maj = 0;
-          (asr_cdevsw.d_maj < CDEV_MAJOR)
-           && (dev_dport(makedev(asr_cdevsw.d_maj,0)) != NULL);
-          ++asr_cdevsw.d_maj);
+        if (asr_cdevsw.d_maj >= NUMCDEVSW) {
+               asr_cdevsw.d_maj = 0;
+               while (asr_cdevsw.d_maj < CDEV_MAJOR &&
+                       cdevsw_get(asr_cdevsw.d_maj, -1) != NULL
+               ) {
+                       ++asr_cdevsw.d_maj;
+               }
+       }
+
         /*
          *      Come to papa
          */
         /*
          *      Come to papa
          */
-        cdevsw_add(&asr_cdevsw);
-        /*
-         *      delete any nodes that would attach to the primary adapter,
-         * let the adapter scans add them.
-         */
-        destroy_dev(makedev(asr_cdevsw.d_maj,0));
+        cdevsw_add(&asr_cdevsw, 0, 0);
 } /* asr_drvinit */
 
 /* Must initialize before CAM layer picks up our HBA driver */
 } /* asr_drvinit */
 
 /* Must initialize before CAM layer picks up our HBA driver */
@@ -3176,8 +3178,7 @@ asr_attach (ATTACH_ARGS)
         /*
          *      Generate the device node information
          */
         /*
          *      Generate the device node information
          */
-        (void)make_dev(&asr_cdevsw, unit, 0, 0, S_IRWXU, "rasr%d", unit);
-        destroy_dev(makedev(asr_cdevsw.d_maj,unit+1));
+        make_dev(&asr_cdevsw, unit, 0, 0, S_IRWXU, "rasr%d", unit);
         ATTACH_RETURN(0);
 } /* asr_attach */
 
         ATTACH_RETURN(0);
 } /* asr_attach */
 
index 0920524..cd541a9 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.2.2.6 2003/02/18 22:27:41 ps Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.2.2.6 2003/02/18 22:27:41 ps Exp $
- *     $DragonFly: src/sys/dev/raid/ciss/ciss.c,v 1.7 2004/05/13 23:49:18 dillon Exp $
+ *     $DragonFly: src/sys/dev/raid/ciss/ciss.c,v 1.8 2004/05/19 22:52:46 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -407,6 +407,7 @@ ciss_attach(device_t dev)
    /*
      * Create the control device.
      */
    /*
      * Create the control device.
      */
+    cdevsw_add(&ciss_cdevsw, -1, device_get_unit(sc->ciss_dev));
     sc->ciss_dev_t = make_dev(&ciss_cdevsw, device_get_unit(sc->ciss_dev),
                              UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR,
                              "ciss%d", device_get_unit(sc->ciss_dev));
     sc->ciss_dev_t = make_dev(&ciss_cdevsw, device_get_unit(sc->ciss_dev),
                              UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR,
                              "ciss%d", device_get_unit(sc->ciss_dev));
index 7ef8877..00c77cd 100644 (file)
@@ -37,7 +37,7 @@
  */
 
 #ident "$FreeBSD: src/sys/dev/dpt/dpt_control.c,v 1.16 1999/09/25 18:23:48 phk Exp $"
  */
 
 #ident "$FreeBSD: src/sys/dev/dpt/dpt_control.c,v 1.16 1999/09/25 18:23:48 phk Exp $"
-#ident "$DragonFly: src/sys/dev/raid/dpt/dpt_control.c,v 1.6 2004/05/13 23:49:18 dillon Exp $"
+#ident "$DragonFly: src/sys/dev/raid/dpt/dpt_control.c,v 1.7 2004/05/19 22:52:47 dillon Exp $"
 
 #include "opt_dpt.h"
 
 
 #include "opt_dpt.h"
 
@@ -849,14 +849,13 @@ static          dpt_devsw_installed = 0;
 static void
 dpt_drvinit(void *unused)
 {
 static void
 dpt_drvinit(void *unused)
 {
-
        if (!dpt_devsw_installed) {
                if (bootverbose)
                        printf("DPT:  RAID Manager driver, Version %d.%d.%d\n",
                               DPT_CTL_RELEASE, DPT_CTL_VERSION, DPT_CTL_PATCH);
 
                /* Add the I/O (data) channel */
        if (!dpt_devsw_installed) {
                if (bootverbose)
                        printf("DPT:  RAID Manager driver, Version %d.%d.%d\n",
                               DPT_CTL_RELEASE, DPT_CTL_VERSION, DPT_CTL_PATCH);
 
                /* Add the I/O (data) channel */
-               cdevsw_add(&dpt_cdevsw);
+               cdevsw_add(&dpt_cdevsw, 0, 0);
 
                dpt_devsw_installed = 1;
        }
 
                dpt_devsw_installed = 1;
        }
index 138d8f6..e2c6869 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ida/ida_disk.c,v 1.12.2.6 2001/11/27 20:21:02 ps Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ida/ida_disk.c,v 1.12.2.6 2001/11/27 20:21:02 ps Exp $
- * $DragonFly: src/sys/dev/raid/ida/ida_disk.c,v 1.7 2004/05/13 23:49:18 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/ida/ida_disk.c,v 1.8 2004/05/19 22:52:47 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -200,18 +200,14 @@ done:
 }
 
 static int
 }
 
 static int
-idad_dump(dev_t dev)
+idad_dump(dev_t dev, u_int count, u_int blkno, u_int secsize)
 {
        struct idad_softc *drv;
 {
        struct idad_softc *drv;
-       u_int count, blkno, secsize;
        long blkcnt;
        int i, error, dumppages;
         caddr_t va;
        vm_offset_t addr, a;
 
        long blkcnt;
        int i, error, dumppages;
         caddr_t va;
        vm_offset_t addr, a;
 
-       if ((error = disk_dumpcheck(dev, &count, &blkno, &secsize)))
-               return (error);
-
        drv = idad_getsoftc(dev);
        if (drv == NULL)
                return (ENXIO);
        drv = idad_getsoftc(dev);
        if (drv == NULL)
                return (ENXIO);
index 233581b..20e794e 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/dev/iir/iir_ctrl.c,v 1.2.2.4 2002/05/05 08:18:12 asmodai Exp $ */
 /* $FreeBSD: src/sys/dev/iir/iir_ctrl.c,v 1.2.2.4 2002/05/05 08:18:12 asmodai Exp $ */
-/* $DragonFly: src/sys/dev/raid/iir/iir_ctrl.c,v 1.6 2004/05/13 23:49:19 dillon Exp $ */
+/* $DragonFly: src/sys/dev/raid/iir/iir_ctrl.c,v 1.7 2004/05/19 22:52:47 dillon Exp $ */
 /*
  *       Copyright (c) 2000-01 Intel Corporation
  *       All Rights Reserved
 /*
  *       Copyright (c) 2000-01 Intel Corporation
  *       All Rights Reserved
@@ -115,6 +115,7 @@ gdt_make_dev(int unit)
                    S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH, "iir");
     sdev_made = 1;
 #endif
                    S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH, "iir");
     sdev_made = 1;
 #endif
+    reference_dev(dev);
     return (dev);
 }
 
     return (dev);
 }
 
@@ -366,7 +367,7 @@ iir_drvinit(void *unused)
                 
     if (!iir_devsw_installed) {
         /* Add the I/O (data) channel */
                 
     if (!iir_devsw_installed) {
         /* Add the I/O (data) channel */
-        cdevsw_add(&iir_cdevsw);
+        cdevsw_add(&iir_cdevsw, 0, 0);
         iir_devsw_installed = 1;
     }
 }
         iir_devsw_installed = 1;
     }
 }
index 8ede491..90c9bdc 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ips/ips.c,v 1.6 2003/11/27 08:37:36 mbr
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ips/ips.c,v 1.6 2003/11/27 08:37:36 mbr
- * $DragonFly: src/sys/dev/raid/ips/ips.c,v 1.3 2004/05/13 23:49:19 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/ips/ips.c,v 1.4 2004/05/19 22:52:47 dillon Exp $
  */
 
 #include <sys/cdefs.h>
  */
 
 #include <sys/cdefs.h>
@@ -416,6 +416,7 @@ int
 ips_adapter_init(ips_softc_t *sc)
 {
        int i;
 ips_adapter_init(ips_softc_t *sc)
 {
        int i;
+       dev_t dev;
 
        DEVICE_PRINTF(1, sc->dev, "initializing\n");
        if (bus_dma_tag_create( /* parent    */ sc->adapter_dmatag,
 
        DEVICE_PRINTF(1, sc->dev, "initializing\n");
        if (bus_dma_tag_create( /* parent    */ sc->adapter_dmatag,
@@ -494,10 +495,11 @@ ips_adapter_init(ips_softc_t *sc)
                    "failed to initialize command buffers\n");
                goto error;
        }
                    "failed to initialize command buffers\n");
                goto error;
        }
-       sc->device_file = make_dev(&ips_cdevsw, device_get_unit(sc->dev),
+       cdevsw_add(&ips_cdevsw, -1, device_get_unit(sc->dev));
+       dev = make_dev(&ips_cdevsw, device_get_unit(sc->dev),
                                   UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR,
                                   "ips%d", device_get_unit(sc->dev));
                                   UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR,
                                   "ips%d", device_get_unit(sc->dev));
-       sc->device_file->si_drv1 = sc;
+       dev->si_drv1 = sc;
        ips_diskdev_init(sc);
        sc->timer = timeout(ips_timeout, sc, 10*hz);
        return 0;
        ips_diskdev_init(sc);
        sc->timer = timeout(ips_timeout, sc, 10*hz);
        return 0;
@@ -587,8 +589,7 @@ ips_adapter_free(ips_softc_t *sc)
                bus_dma_tag_destroy(sc->sg_dmatag);
        if (sc->command_dmatag)
                bus_dma_tag_destroy(sc->command_dmatag);
                bus_dma_tag_destroy(sc->sg_dmatag);
        if (sc->command_dmatag)
                bus_dma_tag_destroy(sc->command_dmatag);
-       if (sc->device_file)
-               destroy_dev(sc->device_file);
+       cdevsw_remove(&ips_cdevsw, -1, device_get_unit(sc->dev));
        return 0;
 }
 
        return 0;
 }
 
index f730251..5baa9a0 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ips/ips.h,v 1.5 2003/11/27 08:37:36 mbr Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/ips/ips.h,v 1.5 2003/11/27 08:37:36 mbr Exp $
- * $DragonFly: src/sys/dev/raid/ips/ips.h,v 1.1 2004/01/15 15:41:23 drhodus Exp $
+ * $DragonFly: src/sys/dev/raid/ips/ips.h,v 1.2 2004/05/19 22:52:47 dillon Exp $
  */
 
 
  */
 
 
@@ -460,7 +460,6 @@ typedef struct ips_softc {
        bus_dma_tag_t           command_dmatag;
        bus_dma_tag_t           sg_dmatag;
        device_t                dev;
        bus_dma_tag_t           command_dmatag;
        bus_dma_tag_t           sg_dmatag;
        device_t                dev;
-       dev_t                   device_file;
        struct callout_handle   timer;
        u_int16_t               adapter_type;
        ips_adapter_info_t      adapter_info;
        struct callout_handle   timer;
        u_int16_t               adapter_type;
        ips_adapter_info_t      adapter_info;
index cdb87e6..47022e6 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/mlx/mlx.c,v 1.14.2.5 2001/09/11 09:49:53 kris Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/mlx/mlx.c,v 1.14.2.5 2001/09/11 09:49:53 kris Exp $
- *     $DragonFly: src/sys/dev/raid/mlx/mlx.c,v 1.7 2004/05/13 23:49:19 dillon Exp $
+ *     $DragonFly: src/sys/dev/raid/mlx/mlx.c,v 1.8 2004/05/19 22:52:47 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -208,9 +208,7 @@ mlx_free(struct mlx_softc *sc)
     if (sc->mlx_enq2 != NULL)
        free(sc->mlx_enq2, M_DEVBUF);
 
     if (sc->mlx_enq2 != NULL)
        free(sc->mlx_enq2, M_DEVBUF);
 
-    /* destroy control device */
-    if (sc->mlx_dev_t != (dev_t)NULL)
-       destroy_dev(sc->mlx_dev_t);
+    cdevsw_remove(&mlx_cdevsw, -1, device_get_unit(sc->mlx_dev));
 }
 
 /********************************************************************************
 }
 
 /********************************************************************************
@@ -483,8 +481,10 @@ mlx_attach(struct mlx_softc *sc)
     /*
      * Create the control device.
      */
     /*
      * Create the control device.
      */
-    sc->mlx_dev_t = make_dev(&mlx_cdevsw, device_get_unit(sc->mlx_dev), UID_ROOT, GID_OPERATOR, 
-                            S_IRUSR | S_IWUSR, "mlx%d", device_get_unit(sc->mlx_dev));
+    cdevsw_add(&mlx_cdevsw, -1, device_get_unit(sc->mlx_dev));
+    make_dev(&mlx_cdevsw, device_get_unit(sc->mlx_dev), 
+           UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR,
+           "mlx%d", device_get_unit(sc->mlx_dev));
 
     /*
      * Start the timeout routine.
 
     /*
      * Start the timeout routine.
index 2569678..468334d 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/mlx/mlxvar.h,v 1.5.2.3 2001/06/25 04:37:51 msmith Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/mlx/mlxvar.h,v 1.5.2.3 2001/06/25 04:37:51 msmith Exp $
- *     $DragonFly: src/sys/dev/raid/mlx/mlxvar.h,v 1.3 2003/06/23 17:55:32 dillon Exp $
+ *     $DragonFly: src/sys/dev/raid/mlx/mlxvar.h,v 1.4 2004/05/19 22:52:47 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -108,7 +108,6 @@ struct mlx_softc
 {
     /* bus connections */
     device_t           mlx_dev;
 {
     /* bus connections */
     device_t           mlx_dev;
-    dev_t              mlx_dev_t;
     struct resource    *mlx_mem;       /* mailbox interface window */
     int                        mlx_mem_rid;
     int                        mlx_mem_type;
     struct resource    *mlx_mem;       /* mailbox interface window */
     int                        mlx_mem_rid;
     int                        mlx_mem_type;
index adb2e04..f72cc8c 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/mly/mly.c,v 1.3.2.3 2001/03/05 20:17:24 msmith Exp $
  * SUCH DAMAGE.
  *
  *     $FreeBSD: src/sys/dev/mly/mly.c,v 1.3.2.3 2001/03/05 20:17:24 msmith Exp $
- *     $DragonFly: src/sys/dev/raid/mly/mly.c,v 1.8 2004/05/13 23:49:19 dillon Exp $
+ *     $DragonFly: src/sys/dev/raid/mly/mly.c,v 1.9 2004/05/19 22:52:48 dillon Exp $
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -206,8 +206,10 @@ mly_attach(struct mly_softc *sc)
     /*
      * Create the control device.
      */
     /*
      * Create the control device.
      */
-    sc->mly_dev_t = make_dev(&mly_cdevsw, device_get_unit(sc->mly_dev), UID_ROOT, GID_OPERATOR,
-                            S_IRUSR | S_IWUSR, "mly%d", device_get_unit(sc->mly_dev));
+    cdevsw_add(&mly_cdevsw, -1, device_get_unit(sc->mly_dev));
+    sc->mly_dev_t = make_dev(&mly_cdevsw, device_get_unit(sc->mly_dev),
+                               UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR, 
+                               "mly%d", device_get_unit(sc->mly_dev));
     sc->mly_dev_t->si_drv1 = sc;
 
     /* enable interrupts now */
     sc->mly_dev_t->si_drv1 = sc;
 
     /* enable interrupts now */
index e6e3c51..37f972d 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD$
  * SUCH DAMAGE.
  *
  *     $FreeBSD$
- * $DragonFly: src/sys/dev/raid/twa/twa.h,v 1.1 2004/04/16 20:13:16 drhodus Exp $
+ * $DragonFly: src/sys/dev/raid/twa/twa.h,v 1.2 2004/05/19 22:52:48 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -175,7 +175,6 @@ struct twa_softc {
                                        between ioctl calls */
     
        device_t                twa_bus_dev;    /* bus device */
                                        between ioctl calls */
     
        device_t                twa_bus_dev;    /* bus device */
-       dev_t                   twa_ctrl_dev;   /* control device */
        struct resource         *twa_io_res;    /* register interface window */
        bus_space_handle_t      twa_bus_handle; /* bus space handle */
        bus_space_tag_t         twa_bus_tag;    /* bus space tag */
        struct resource         *twa_io_res;    /* register interface window */
        bus_space_handle_t      twa_bus_handle; /* bus space handle */
        bus_space_tag_t         twa_bus_tag;    /* bus space tag */
index 25dba4f..b7b7a0c 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  *     $FreeBSD$
  * SUCH DAMAGE.
  *
  *     $FreeBSD$
- * $DragonFly: src/sys/dev/raid/twa/twa_freebsd.c,v 1.1 2004/04/16 20:13:16 drhodus Exp $
+ * $DragonFly: src/sys/dev/raid/twa/twa_freebsd.c,v 1.2 2004/05/19 22:52:48 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -232,6 +232,7 @@ twa_attach(device_t dev)
        u_int32_t               command;
        int                     res_id;
        int                     error;
        u_int32_t               command;
        int                     res_id;
        int                     error;
+       dev_t                   xdev;
 
        twa_dbg_dprint_enter(3, sc);
 
 
        twa_dbg_dprint_enter(3, sc);
 
@@ -298,10 +299,11 @@ twa_attach(device_t dev)
        twa_describe_controller(sc);
 
        /* Create the control device. */
        twa_describe_controller(sc);
 
        /* Create the control device. */
-       sc->twa_ctrl_dev = make_dev(&twa_cdevsw, device_get_unit(sc->twa_bus_dev),
-                                       UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR,
-                                       "twa%d", device_get_unit(sc->twa_bus_dev));
-       sc->twa_ctrl_dev->si_drv1 = sc;
+       cdevsw_add(&twa_cdevsw, -1, device_get_unit(sc->twa_bus_dev));
+       xdev = make_dev(&twa_cdevsw, device_get_unit(sc->twa_bus_dev),
+                       UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR,
+                       "twa%d", device_get_unit(sc->twa_bus_dev));
+       xdev->si_drv1 = sc;
 
        /*
         * Schedule ourselves to bring the controller up once interrupts are
 
        /*
         * Schedule ourselves to bring the controller up once interrupts are
@@ -376,9 +378,7 @@ twa_free(struct twa_softc *sc)
                bus_release_resource(sc->twa_bus_dev, SYS_RES_IOPORT,
                                        TWA_IO_CONFIG_REG, sc->twa_io_res);
 
                bus_release_resource(sc->twa_bus_dev, SYS_RES_IOPORT,
                                        TWA_IO_CONFIG_REG, sc->twa_io_res);
 
-       /* Destroy the control device. */
-       if (sc->twa_ctrl_dev != (dev_t)NULL)
-               destroy_dev(sc->twa_ctrl_dev);
+       cdevsw_remove(&twa_cdevsw, -1, device_get_unit(sc->twa_bus_dev));
 
        sysctl_ctx_free(&sc->twa_sysctl_ctx);
 }
 
        sysctl_ctx_free(&sc->twa_sysctl_ctx);
 }
index ba6b5bd..4b01ce7 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/twe/twe_compat.h,v 1.1.2.3 2002/03/07 09:57:02 msmith Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/twe/twe_compat.h,v 1.1.2.3 2002/03/07 09:57:02 msmith Exp $
- * $DragonFly: src/sys/dev/raid/twe/twe_compat.h,v 1.8 2004/02/21 06:37:06 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/twe/twe_compat.h,v 1.9 2004/05/19 22:52:48 dillon Exp $
  */
 /*
  * Portability and compatibility interfaces.
  */
 /*
  * Portability and compatibility interfaces.
  */
 #define TWE_PLATFORM_SOFTC                                                             \
     device_t                   twe_dev;                /* bus device */                \
  */
 #define TWE_PLATFORM_SOFTC                                                             \
     device_t                   twe_dev;                /* bus device */                \
-    dev_t                      twe_dev_t;              /* control device */            \
     struct resource            *twe_io;                /* register interface window */ \
     bus_space_handle_t         twe_bhandle;            /* bus space handle */          \
     bus_space_tag_t            twe_btag;               /* bus space tag */             \
     struct resource            *twe_io;                /* register interface window */ \
     bus_space_handle_t         twe_bhandle;            /* bus space handle */          \
     bus_space_tag_t            twe_btag;               /* bus space tag */             \
index 750542f..c7c999c 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/twe/twe_freebsd.c,v 1.2.2.5 2002/03/07 09:57:02 msmith Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/twe/twe_freebsd.c,v 1.2.2.5 2002/03/07 09:57:02 msmith Exp $
- * $DragonFly: src/sys/dev/raid/twe/twe_freebsd.c,v 1.9 2004/05/13 23:49:19 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/twe/twe_freebsd.c,v 1.10 2004/05/19 22:52:48 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -200,6 +200,7 @@ twe_attach(device_t dev)
     struct twe_softc   *sc;
     int                        rid, error;
     u_int32_t          command;
     struct twe_softc   *sc;
     int                        rid, error;
     u_int32_t          command;
+    dev_t              xdev;
 
     debug_called(4);
 
 
     debug_called(4);
 
@@ -310,9 +311,12 @@ twe_attach(device_t dev)
     /*
      * Create the control device.
      */
     /*
      * Create the control device.
      */
-    sc->twe_dev_t = make_dev(&twe_cdevsw, device_get_unit(sc->twe_dev), UID_ROOT, GID_OPERATOR,
-                            S_IRUSR | S_IWUSR, "twe%d", device_get_unit(sc->twe_dev));
-    sc->twe_dev_t->si_drv1 = sc;
+    cdevsw_add(&twe_cdevsw, -1, device_get_unit(sc->twe_dev));
+    xdev = make_dev(&twe_cdevsw, device_get_unit(sc->twe_dev), 
+                           UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR, 
+                           "twe%d", device_get_unit(sc->twe_dev));
+    xdev->si_drv1 = sc;
+
     /*
      * Schedule ourselves to bring the controller up once interrupts are available.
      * This isn't strictly necessary, since we disable interrupts while probing the
     /*
      * Schedule ourselves to bring the controller up once interrupts are available.
      * This isn't strictly necessary, since we disable interrupts while probing the
@@ -364,9 +368,7 @@ twe_free(struct twe_softc *sc)
     if (sc->twe_io != NULL)
        bus_release_resource(sc->twe_dev, SYS_RES_IOPORT, TWE_IO_CONFIG_REG, sc->twe_io);
 
     if (sc->twe_io != NULL)
        bus_release_resource(sc->twe_dev, SYS_RES_IOPORT, TWE_IO_CONFIG_REG, sc->twe_io);
 
-    /* destroy control device */
-    if (sc->twe_dev_t != (dev_t)NULL)
-       destroy_dev(sc->twe_dev_t);
+    cdevsw_remove(&twe_cdevsw, -1, device_get_unit(sc->twe_dev));
 
     sysctl_ctx_free(&sc->sysctl_ctx);
 }
 
     sysctl_ctx_free(&sc->sysctl_ctx);
 }
@@ -727,20 +729,16 @@ twed_strategy(twe_bio *bp)
  * System crashdump support
  */
 int
  * System crashdump support
  */
 int
-twed_dump(dev_t dev)
+twed_dump(dev_t dev, u_int count, u_int blkno, u_int secsize)
 {
     struct twed_softc  *twed_sc = (struct twed_softc *)dev->si_drv1;
     struct twe_softc   *twe_sc  = (struct twe_softc *)twed_sc->twed_controller;
 {
     struct twed_softc  *twed_sc = (struct twed_softc *)dev->si_drv1;
     struct twe_softc   *twe_sc  = (struct twe_softc *)twed_sc->twed_controller;
-    u_int              count, blkno, secsize;
     vm_paddr_t         addr = 0;
     long               blkcnt;
     int                        dumppages = MAXDUMPPGS;
     int                        error;
     int                        i;
 
     vm_paddr_t         addr = 0;
     long               blkcnt;
     int                        dumppages = MAXDUMPPGS;
     int                        error;
     int                        i;
 
-    if ((error = disk_dumpcheck(dev, &count, &blkno, &secsize)))
-        return(error);
-
     if (!twed_sc || !twe_sc)
        return(ENXIO);
 
     if (!twed_sc || !twe_sc)
        return(ENXIO);
 
index 4595faf..37c97bf 100644 (file)
@@ -37,7 +37,7 @@
  *
  * $Id: vinum.c,v 1.33 2001/01/09 06:19:15 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinum.c,v 1.38.2.3 2003/01/07 12:14:16 joerg Exp $
  *
  * $Id: vinum.c,v 1.33 2001/01/09 06:19:15 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinum.c,v 1.38.2.3 2003/01/07 12:14:16 joerg Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinum.c,v 1.10 2004/05/13 23:49:19 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/vinum/vinum.c,v 1.11 2004/05/19 22:52:48 dillon Exp $
  */
 
 #define STATIC static                                      /* nothing while we're testing XXX */
  */
 
 #define STATIC static                                      /* nothing while we're testing XXX */
@@ -54,7 +54,7 @@ extern struct mc malloced[];
 #endif
 #include "request.h"
 
 #endif
 #include "request.h"
 
-STATIC struct cdevsw vinum_cdevsw =
+struct cdevsw vinum_cdevsw =
 {
     /* name */ "vinum",
     /* cmaj */ VINUM_CDEV_MAJOR, 
 {
     /* name */ "vinum",
     /* cmaj */ VINUM_CDEV_MAJOR, 
@@ -96,7 +96,7 @@ vinumattach(void *dummy)
     daemonq = NULL;                                        /* initialize daemon's work queue */
     dqend = NULL;
 
     daemonq = NULL;                                        /* initialize daemon's work queue */
     dqend = NULL;
 
-    cdevsw_add(&vinum_cdevsw);                             /* add the cdevsw entry */
+    cdevsw_add(&vinum_cdevsw, 0, 0);                       /* add the cdevsw entry */
 
     /* allocate space: drives... */
     DRIVE = (struct drive *) Malloc(sizeof(struct drive) * INITIAL_DRIVES);
 
     /* allocate space: drives... */
     DRIVE = (struct drive *) Malloc(sizeof(struct drive) * INITIAL_DRIVES);
@@ -153,8 +153,10 @@ vinumattach(void *dummy)
        for (i = 0; i < vinum_conf.volumes_used; i++) {
            vol = &vinum_conf.volume[i];
            if ((vol->state == volume_up)
        for (i = 0; i < vinum_conf.volumes_used; i++) {
            vol = &vinum_conf.volume[i];
            if ((vol->state == volume_up)
-               && (strcmp (vol->name, cp) == 0) ) {
-               rootdev = makedev(VINUM_CDEV_MAJOR, i); 
+               && (strcmp (vol->name, cp) == 0) 
+           ) {
+               rootdev = make_dev(&vinum_cdevsw, i, UID_ROOT, GID_OPERATOR,
+                               0640, "vinum");
                log(LOG_INFO, "vinum: using volume %s for root device\n", cp);
                break;
            }
                log(LOG_INFO, "vinum: using volume %s for root device\n", cp);
                break;
            }
@@ -276,7 +278,7 @@ vinum_modevent(module_t mod, modeventtype_t type, void *unused)
            }
        }
 #endif
            }
        }
 #endif
-       cdevsw_remove(&vinum_cdevsw);
+       cdevsw_remove(&vinum_cdevsw, 0, 0);
        log(LOG_INFO, "vinum: unloaded\n");                 /* tell the world */
        return 0;
     default:
        log(LOG_INFO, "vinum: unloaded\n");                 /* tell the world */
        return 0;
     default:
@@ -496,7 +498,7 @@ vinumsize(dev_t dev)
 }
 
 int
 }
 
 int
-vinumdump(dev_t dev)
+vinumdump(dev_t dev, u_int count, u_int blkno, u_int secsize)
 {
     /* Not implemented. */
     return ENXIO;
 {
     /* Not implemented. */
     return ENXIO;
index 91ab0e0..b3d20d7 100644 (file)
@@ -35,7 +35,7 @@
  *
  * $Id: vinumext.h,v 1.26 2000/05/16 07:38:08 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumext.h,v 1.25.2.3 2001/05/11 02:11:06 grog Exp $
  *
  * $Id: vinumext.h,v 1.26 2000/05/16 07:38:08 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumext.h,v 1.25.2.3 2001/05/11 02:11:06 grog Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinumext.h,v 1.3 2003/06/29 03:28:42 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/vinum/vinumext.h,v 1.4 2004/05/19 22:52:48 dillon Exp $
  */
 
 /* vinumext.h: external definitions */
  */
 
 /* vinumext.h: external definitions */
@@ -147,6 +147,7 @@ void sdio(struct buf *bp);
 int vinumpart(dev_t);
 
 extern jmp_buf command_fail;                               /* return here if config fails */
 int vinumpart(dev_t);
 
 extern jmp_buf command_fail;                               /* return here if config fails */
+extern struct cdevsw vinum_cdevsw;
 
 #ifdef VINUMDEBUG
 /* Memory allocation and request tracing */
 
 #ifdef VINUMDEBUG
 /* Memory allocation and request tracing */
@@ -154,12 +155,12 @@ void vinum_meminfo(caddr_t data);
 int vinum_mallocinfo(caddr_t data);
 int vinum_rqinfo(caddr_t data);
 void LongJmp(jmp_buf, int);
 int vinum_mallocinfo(caddr_t data);
 int vinum_rqinfo(caddr_t data);
 void LongJmp(jmp_buf, int);
-char *basename(char *);
 #else
 void longjmp(jmp_buf, int);                                /* the kernel doesn't define this */
 #endif
 int setjmp(jmp_buf);
 
 #else
 void longjmp(jmp_buf, int);                                /* the kernel doesn't define this */
 #endif
 int setjmp(jmp_buf);
 
+char *basename(char *);
 void expand_table(void **, int, int);
 
 struct request;
 void expand_table(void **, int, int);
 
 struct request;
index d676e07..b36888a 100644 (file)
@@ -35,7 +35,7 @@
  *
  * $Id: vinumio.c,v 1.30 2000/05/10 23:23:30 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumio.c,v 1.52.2.6 2002/05/02 08:43:44 grog Exp $
  *
  * $Id: vinumio.c,v 1.30 2000/05/10 23:23:30 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumio.c,v 1.52.2.6 2002/05/02 08:43:44 grog Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinumio.c,v 1.5 2003/08/07 21:17:09 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/vinum/vinumio.c,v 1.6 2004/05/19 22:52:48 dillon Exp $
  */
 
 #include "vinumhdr.h"
  */
 
 #include "vinumhdr.h"
@@ -134,15 +134,13 @@ open_drive(struct drive *drive, struct proc *p, int verbose)
     if ((devminor & 7) == 2)                               /* partition c */
        return ENOTTY;                                      /* not buying that */
 
     if ((devminor & 7) == 2)                               /* partition c */
        return ENOTTY;                                      /* not buying that */
 
-    drive->dev = makedev(devmajor, devminor);              /* find the device */
-    if (drive->dev == NULL)                                /* didn't find anything */
-       return ENODEV;
+    drive->dev = udev2dev(makeudev(devmajor, devminor), 0);
 
     drive->dev->si_iosize_max = DFLTPHYS;
 
     drive->dev->si_iosize_max = DFLTPHYS;
-    if (dev_dport(drive->dev) == NULL)
-       drive->lasterror = ENOENT;
-    else
+    if (dev_is_good(drive->dev))
        drive->lasterror = dev_dopen(drive->dev, FWRITE, 0, NULL);
        drive->lasterror = dev_dopen(drive->dev, FWRITE, 0, NULL);
+    else
+       drive->lasterror = ENOENT;
 
     if (drive->lasterror != 0) {                           /* failed */
        drive->state = drive_down;                          /* just force it down */
 
     if (drive->lasterror != 0) {                           /* failed */
        drive->state = drive_down;                          /* just force it down */
@@ -771,6 +769,7 @@ write_volume_label(int volno)
     struct disklabel *dlp;
     struct volume *vol;
     int error;
     struct disklabel *dlp;
     struct volume *vol;
     int error;
+    dev_t dev;
 
     lp = (struct disklabel *) Malloc((sizeof(struct disklabel) + (DEV_BSIZE - 1)) & (DEV_BSIZE - 1));
     if (lp == 0)
 
     lp = (struct disklabel *) Malloc((sizeof(struct disklabel) + (DEV_BSIZE - 1)) & (DEV_BSIZE - 1));
     if (lp == 0)
@@ -794,7 +793,8 @@ write_volume_label(int volno)
      * unless it's already there.
      */
     bp = geteblk((int) lp->d_secsize);                     /* get a buffer */
      * unless it's already there.
      */
     bp = geteblk((int) lp->d_secsize);                     /* get a buffer */
-    bp->b_dev = makedev(VINUM_CDEV_MAJOR, vol->volno);     /* our own raw volume */
+    dev = make_adhoc_dev(&vinum_cdevsw, vol->volno);
+    bp->b_dev = dev;
     bp->b_blkno = LABELSECTOR * ((int) lp->d_secsize / DEV_BSIZE);
     bp->b_bcount = lp->d_secsize;
     bzero(bp->b_data, lp->d_secsize);
     bp->b_blkno = LABELSECTOR * ((int) lp->d_secsize / DEV_BSIZE);
     bp->b_bcount = lp->d_secsize;
     bzero(bp->b_data, lp->d_secsize);
@@ -814,7 +814,6 @@ write_volume_label(int volno)
     error = biowait(bp);
     bp->b_flags |= B_INVAL | B_AGE;
     bp->b_flags &= ~B_ERROR;
     error = biowait(bp);
     bp->b_flags |= B_INVAL | B_AGE;
     bp->b_flags &= ~B_ERROR;
-
     brelse(bp);
     return error;
 }
     brelse(bp);
     return error;
 }
index e7c542d..4d7af32 100644 (file)
@@ -39,7 +39,7 @@
  *
  * $Id: vinumvar.h,v 1.24 2000/03/01 02:34:57 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumvar.h,v 1.32.2.4 2001/05/28 05:56:27 grog Exp $
  *
  * $Id: vinumvar.h,v 1.24 2000/03/01 02:34:57 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumvar.h,v 1.32.2.4 2001/05/28 05:56:27 grog Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinumvar.h,v 1.4 2003/08/07 21:17:10 dillon Exp $
+ * $DragonFly: src/sys/dev/raid/vinum/vinumvar.h,v 1.5 2004/05/19 22:52:48 dillon Exp $
  */
 
 #include <sys/time.h>
  */
 
 #include <sys/time.h>
@@ -108,18 +108,43 @@ enum constants {
                              | (s << VINUM_SD_SHIFT)           \
                              | (t << VINUM_TYPE_SHIFT) )
 
                              | (s << VINUM_SD_SHIFT)           \
                              | (t << VINUM_TYPE_SHIFT) )
 
-    /* Create device minor numbers */
-#define VINUMDEV(v,p,s,t)  makedev (VINUM_CDEV_MAJOR, VINUMMINOR (v, p, s, t))
+/* Create device minor numbers */
 
 
-#define VINUM_PLEX(p)  makedev (VINUM_CDEV_MAJOR,                              \
-                                (VINUM_RAWPLEX_TYPE << VINUM_TYPE_SHIFT) \
-                                | (p & 0xff)                           \
-                                | ((p & ~0xff) << 8) )
+#ifdef _KERNEL
+
+#define VINUMDEV(v,p,s,t)      \
+               make_adhoc_dev (&vinum_cdevsw, VINUMMINOR (v, p, s, t))
+
+#define VINUM_PLEX(p)          \
+               make_adhoc_dev (&vinum_cdevsw,                  \
+                (VINUM_RAWPLEX_TYPE << VINUM_TYPE_SHIFT)       \
+                | (p & 0xff)                                   \
+                | ((p & ~0xff) << 8) )
+
+#define VINUM_SD(s)            \
+               make_adhoc_dev (&vinum_cdevsw,                  \
+                (VINUM_RAWSD_TYPE << VINUM_TYPE_SHIFT)         \
+                | (s & 0xff)                                   \
+                | ((s & ~0xff) << 8) )
+
+#else
 
 
-#define VINUM_SD(s)    makedev (VINUM_CDEV_MAJOR,                              \
-                                (VINUM_RAWSD_TYPE << VINUM_TYPE_SHIFT) \
-                                | (s & 0xff)                           \
-                                | ((s & ~0xff) << 8) )
+#define VINUMDEV(v,p,s,t)      \
+               makedev(VINUM_CDEV_MAJOR, VINUMMINOR (v, p, s, t))
+
+#define VINUM_PLEX(p)          \
+               makedev(VINUM_CDEV_MAJOR,                       \
+                (VINUM_RAWPLEX_TYPE << VINUM_TYPE_SHIFT)       \
+                | (p & 0xff)                                   \
+                | ((p & ~0xff) << 8) )
+
+#define VINUM_SD(s)            \
+               makedev(VINUM_CDEV_MAJOR,                       \
+                (VINUM_RAWSD_TYPE << VINUM_TYPE_SHIFT)         \
+                | (s & 0xff)                                   \
+                | ((s & ~0xff) << 8) )
+
+#endif
 
     /* Create a bit mask for x bits */
 #define MASK(x)         ((1 << (x)) - 1)
 
     /* Create a bit mask for x bits */
 #define MASK(x)         ((1 << (x)) - 1)
@@ -130,8 +155,6 @@ enum constants {
                             << (VINUM_PLEX_SHIFT + VINUM_VOL_WIDTH))           \
                          | (t << VINUM_TYPE_SHIFT) )
 
                             << (VINUM_PLEX_SHIFT + VINUM_VOL_WIDTH))           \
                          | (t << VINUM_TYPE_SHIFT) )
 
-#define VINUMRBDEV(d,t)        makedev (VINUM_BDEV_MAJOR, VINUMRMINOR (d, t))
-
     /* extract device type */
 #define DEVTYPE(x) ((minor (x) >> VINUM_TYPE_SHIFT) & 7)
 
     /* extract device type */
 #define DEVTYPE(x) ((minor (x) >> VINUM_TYPE_SHIFT) & 7)
 
index 4371b59..5bbfb0f 100644 (file)
@@ -28,7 +28,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/cy.c,v 1.97.2.2 2001/08/22 13:04:58 bde Exp $
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/cy.c,v 1.97.2.2 2001/08/22 13:04:58 bde Exp $
- * $DragonFly: src/sys/dev/serial/cy/cy.c,v 1.10 2004/05/13 23:49:19 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/cy/cy.c,v 1.11 2004/05/19 22:52:48 dillon Exp $
  */
 
 #include "opt_compat.h"
  */
 
 #include "opt_compat.h"
@@ -621,11 +621,11 @@ cyattach_common(cy_iobase, cy_align)
        splx(s);
 
        if (!sio_registered) {
        splx(s);
 
        if (!sio_registered) {
-               cdevsw_add(&sio_cdevsw);
                register_swi(SWI_TTY, siopoll, NULL, "cy");
                sio_registered = TRUE;
        }
        minorbase = UNIT_TO_MINOR(unit);
                register_swi(SWI_TTY, siopoll, NULL, "cy");
                sio_registered = TRUE;
        }
        minorbase = UNIT_TO_MINOR(unit);
+       cdevsw_add(&sio_cdevsw, UNIT_TO_MINOR(-1), minorbase);
        make_dev(&sio_cdevsw, minorbase,
                UID_ROOT, GID_WHEEL, 0600, "ttyc%r%r", adapter,
                unit % CY_MAX_PORTS);
        make_dev(&sio_cdevsw, minorbase,
                UID_ROOT, GID_WHEEL, 0600, "ttyc%r%r", adapter,
                unit % CY_MAX_PORTS);
index 0bf065a..07e8fe4 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * $FreeBSD: src/sys/dev/dgb/dgm.c,v 1.31.2.3 2001/10/07 09:02:25 brian Exp $
 /*-
  * $FreeBSD: src/sys/dev/dgb/dgm.c,v 1.31.2.3 2001/10/07 09:02:25 brian Exp $
- * $DragonFly: src/sys/dev/serial/dgb/dgm.c,v 1.8 2004/05/13 23:49:19 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/dgb/dgm.c,v 1.9 2004/05/19 22:52:49 dillon Exp $
  *
  *  This driver and the associated header files support the ISA PC/Xem
  *  Digiboards.  Its evolutionary roots are described below.
  *
  *  This driver and the associated header files support the ISA PC/Xem
  *  Digiboards.  Its evolutionary roots are described below.
 #define IO_SIZE                        0x04
 #define MEM_SIZE               0x8000
 
 #define IO_SIZE                        0x04
 #define MEM_SIZE               0x8000
 
+#define DGM_UNITMASK           0x30000
+#define DGM_UNIT(unit)         ((unit) << 16)
+
 struct dgm_softc;
 
 /* digiboard port structure */
 struct dgm_softc;
 
 /* digiboard port structure */
@@ -261,11 +264,8 @@ dgmmodhandler(module_t mod, int event, void *arg)
 
        switch (event) {
        case MOD_LOAD:
 
        switch (event) {
        case MOD_LOAD:
-               cdevsw_add(&dgm_cdevsw);
                break;
                break;
-
        case MOD_UNLOAD:
        case MOD_UNLOAD:
-               cdevsw_remove(&dgm_cdevsw);
                break;
        }
 
                break;
        }
 
@@ -421,7 +421,15 @@ dgmprobe(device_t dev)
        struct dgm_softc *sc = device_get_softc(dev);
        int i, v;
 
        struct dgm_softc *sc = device_get_softc(dev);
        int i, v;
 
+       /*
+        * Assign unit number.  Due to bits we use in the minor number for
+        * the various tty types, only 4 units are supported.
+        */
        sc->unit = device_get_unit(dev);
        sc->unit = device_get_unit(dev);
+       if (sc->unit > 3) {
+               device_printf(dev, "Too many units, only 4 supported\n");
+               return(ENXIO);
+       }
 
        /* Check that we've got a valid i/o address */
        if ((sc->port = bus_get_resource_start(dev, SYS_RES_IOPORT, 0)) == 0)
 
        /* Check that we've got a valid i/o address */
        if ((sc->port = bus_get_resource_start(dev, SYS_RES_IOPORT, 0)) == 0)
@@ -775,6 +783,7 @@ dgmattach(device_t dev)
        else
                shrinkmem = 0;
 
        else
                shrinkmem = 0;
 
+       cdevsw_add(&dgm_cdevsw, DGM_UNITMASK, DGM_UNIT(sc->unit));
        for (i = 0; i < sc->numports; i++, bc++) {
                DPRINT3(DB_INFO, "dgm%d: Set up port %d\n", sc->unit, i);
                port = &sc->ports[i];
        for (i = 0; i < sc->numports; i++, bc++) {
                DPRINT3(DB_INFO, "dgm%d: Set up port %d\n", sc->unit, i);
                port = &sc->ports[i];
@@ -887,14 +896,12 @@ dgmdetach(device_t dev)
 
        DPRINT2(DB_INFO, "dgm%d: detach\n", sc->unit);
 
 
        DPRINT2(DB_INFO, "dgm%d: detach\n", sc->unit);
 
-       for (i = 0; i < sc->numports; i++) {
-               destroy_dev(makedev(CDEV_MAJOR, sc->unit * 65536 + i));
-               destroy_dev(makedev(CDEV_MAJOR, sc->unit * 65536 + i + 64));
-               destroy_dev(makedev(CDEV_MAJOR, sc->unit * 65536 + i + 128));
-               destroy_dev(makedev(CDEV_MAJOR, sc->unit * 65536 + i + 262144));
-               destroy_dev(makedev(CDEV_MAJOR, sc->unit * 65536 + i + 262208));
-               destroy_dev(makedev(CDEV_MAJOR, sc->unit * 65536 + i + 262272));
-       }
+       /*
+        * The cdevsw_remove() call will destroy all associated devices
+        * and dereference any ad-hoc-created devices, but does not
+        * dereference devices created via make_dev().
+        */
+       cdevsw_remove(&dgm_cdevsw, DGM_UNITMASK, DGM_UNIT(sc->unit));
 
        untimeout(dgmpoll, (void *)(int)sc->unit, sc->toh);
        callout_handle_init(&sc->toh);
 
        untimeout(dgmpoll, (void *)(int)sc->unit, sc->toh);
        callout_handle_init(&sc->toh);
index 5287cd0..30bba37 100644 (file)
@@ -25,7 +25,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/rc.c,v 1.53.2.1 2001/02/26 04:23:10 jlemon Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/rc.c,v 1.53.2.1 2001/02/26 04:23:10 jlemon Exp $
- * $DragonFly: src/sys/dev/serial/rc/rc.c,v 1.10 2004/05/13 23:49:20 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/rc/rc.c,v 1.11 2004/05/19 22:52:49 dillon Exp $
  *
  */
 
  *
  */
 
@@ -266,7 +266,7 @@ rcattach(dvp)
        }
        rcb->rcb_probed = RC_ATTACHED;
        if (!rc_started) {
        }
        rcb->rcb_probed = RC_ATTACHED;
        if (!rc_started) {
-               cdevsw_add(&rc_cdevsw);
+               cdevsw_add(&rc_cdevsw, -1, rcb->rcb_unit);
                register_swi(SWI_TTY, rcpoll, NULL, "rcpoll");
                rc_wakeup((void *)NULL);
                rc_started = 1;
                register_swi(SWI_TTY, rcpoll, NULL, "rcpoll");
                rc_wakeup((void *)NULL);
                rc_started = 1;
index 95e15d6..e6ce7a8 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/rp/rp.c,v 1.45.2.2 2002/11/07 22:26:59 tegge Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/rp/rp.c,v 1.45.2.2 2002/11/07 22:26:59 tegge Exp $
- * $DragonFly: src/sys/dev/serial/rp/rp.c,v 1.10 2004/05/13 23:49:20 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/rp/rp.c,v 1.11 2004/05/19 22:52:49 dillon Exp $
  */
 
 /* 
  */
 
 /* 
@@ -813,7 +813,6 @@ rp_attachcommon(CONTROLLER_T *ctlp, int num_aiops, int num_ports)
        int     retval;
        struct  rp_port *rp;
        struct  tty     *tty;
        int     retval;
        struct  rp_port *rp;
        struct  tty     *tty;
-       dev_t   *dev_nodes;
 
        unit = device_get_unit(ctlp->dev);
 
 
        unit = device_get_unit(ctlp->dev);
 
@@ -847,32 +846,26 @@ rp_attachcommon(CONTROLLER_T *ctlp, int num_aiops, int num_ports)
        rp_addr(unit) = rp;
        splx(oldspl);
 
        rp_addr(unit) = rp;
        splx(oldspl);
 
-       dev_nodes = ctlp->dev_nodes = malloc(sizeof(*(ctlp->dev_nodes)) * rp_num_ports[unit] * 6, M_DEVBUF, M_NOWAIT | M_ZERO);
-       if(ctlp->dev_nodes == NULL) {
-               device_printf(ctlp->dev, "rp_attachcommon: Could not malloc device node structures.\n");
-               retval = ENOMEM;
-               goto nogo;
-       }
-
+       cdevsw_add(&rp_cdevsw, 0xffff0000, (unit + 1) << 16);
        for (i = 0 ; i < rp_num_ports[unit] ; i++) {
        for (i = 0 ; i < rp_num_ports[unit] ; i++) {
-               *(dev_nodes++) = make_dev(&rp_cdevsw, ((unit + 1) << 16) | i,
-                                         UID_ROOT, GID_WHEEL, 0666, "ttyR%c",
-                                         i <= 9 ? '0' + i : 'a' + i - 10);
-               *(dev_nodes++) = make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0x20,
-                                         UID_ROOT, GID_WHEEL, 0666, "ttyiR%c",
-                                         i <= 9 ? '0' + i : 'a' + i - 10);
-               *(dev_nodes++) = make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0x40,
-                                         UID_ROOT, GID_WHEEL, 0666, "ttylR%c",
-                                         i <= 9 ? '0' + i : 'a' + i - 10);
-               *(dev_nodes++) = make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0x80,
-                                         UID_ROOT, GID_WHEEL, 0666, "cuaR%c",
-                                         i <= 9 ? '0' + i : 'a' + i - 10);
-               *(dev_nodes++) = make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0xa0,
-                                         UID_ROOT, GID_WHEEL, 0666, "cuaiR%c",
-                                         i <= 9 ? '0' + i : 'a' + i - 10);
-               *(dev_nodes++) = make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0xc0,
-                                         UID_ROOT, GID_WHEEL, 0666, "cualR%c",
-                                         i <= 9 ? '0' + i : 'a' + i - 10);
+               make_dev(&rp_cdevsw, ((unit + 1) << 16) | i,
+                         UID_ROOT, GID_WHEEL, 0666, "ttyR%c",
+                         i <= 9 ? '0' + i : 'a' + i - 10);
+               make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0x20,
+                         UID_ROOT, GID_WHEEL, 0666, "ttyiR%c",
+                         i <= 9 ? '0' + i : 'a' + i - 10);
+               make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0x40,
+                         UID_ROOT, GID_WHEEL, 0666, "ttylR%c",
+                         i <= 9 ? '0' + i : 'a' + i - 10);
+               make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0x80,
+                         UID_ROOT, GID_WHEEL, 0666, "cuaR%c",
+                         i <= 9 ? '0' + i : 'a' + i - 10);
+               make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0xa0,
+                         UID_ROOT, GID_WHEEL, 0666, "cuaiR%c",
+                         i <= 9 ? '0' + i : 'a' + i - 10);
+               make_dev(&rp_cdevsw, ((unit + 1) << 16) | i | 0xc0,
+                         UID_ROOT, GID_WHEEL, 0666, "cualR%c",
+                         i <= 9 ? '0' + i : 'a' + i - 10);
        }
 
        port = 0;
        }
 
        port = 0;
@@ -950,12 +943,9 @@ rp_releaseresource(CONTROLLER_t *ctlp)
                free(ctlp->tty, M_DEVBUF);
                ctlp->tty = NULL;
        }
                free(ctlp->tty, M_DEVBUF);
                ctlp->tty = NULL;
        }
-       if (ctlp->dev != NULL) {
-               for (i = 0 ; i < rp_num_ports[unit] * 6 ; i++)
-                       destroy_dev(ctlp->dev_nodes[i]);
-               free(ctlp->dev_nodes, M_DEVBUF);
+       if (ctlp->dev != NULL)
                ctlp->dev = NULL;
                ctlp->dev = NULL;
-       }
+       cdevsw_remove(&rp_cdevsw, 0xffff0000, (unit + 1) << 16);
 }
 
 int
 }
 
 int
index 9efcb05..e3673b5 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/rp/rpreg.h,v 1.4.2.1 2002/06/18 03:11:46 obrien Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/dev/rp/rpreg.h,v 1.4.2.1 2002/06/18 03:11:46 obrien Exp $
- * $DragonFly: src/sys/dev/serial/rp/rpreg.h,v 1.2 2003/06/17 04:28:29 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/rp/rpreg.h,v 1.3 2004/05/19 22:52:49 dillon Exp $
  */
 
 /*
  */
 
 /*
@@ -371,9 +371,6 @@ struct CONTROLLER_str
        struct rp_port          *rp;            /* port */
        struct tty              *tty;           /* tty */
 
        struct rp_port          *rp;            /* port */
        struct tty              *tty;           /* tty */
 
-       /* Device nodes */
-       dev_t                   *dev_nodes;
-
        /* Bus-specific properties */
        void                    *bus_ctlp;
 
        /* Bus-specific properties */
        void                    *bus_ctlp;
 
index 62e67d5..2b2d0c9 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/rp.c,v 1.33.2.2 2001/02/26 04:23:10 jlemon Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/rp.c,v 1.33.2.2 2001/02/26 04:23:10 jlemon Exp $
- * $DragonFly: src/sys/dev/serial/rp2/Attic/rp.c,v 1.11 2004/05/13 23:49:20 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/rp2/Attic/rp.c,v 1.12 2004/05/19 22:52:49 dillon Exp $
  */
 
 /* 
  */
 
 /* 
@@ -1131,7 +1131,7 @@ rp_pciattach(pcici_t tag, int unit)
        rp_addr(unit) = rp;
        splx(oldspl);
 
        rp_addr(unit) = rp;
        splx(oldspl);
 
-       cdevsw_add(&rp_cdevsw);
+       cdevsw_add(&rp_cdevsw, 0, 0);
 
        port = 0;
        for(aiop=0; aiop < num_aiops; aiop++) {
 
        port = 0;
        for(aiop=0; aiop < num_aiops; aiop++) {
@@ -1234,7 +1234,7 @@ struct    isa_device      *dev;
        rp_addr(unit) = rp;
        splx(oldspl);
 
        rp_addr(unit) = rp;
        splx(oldspl);
 
-       cdevsw_add(&rp_cdevsw);
+       cdevsw_add(&rp_cdevsw, 0, 0);
 
        port = 0;
        for(aiop=0; aiop < num_aiops; aiop++) {
 
        port = 0;
        for(aiop=0; aiop < num_aiops; aiop++) {
index 50715b8..02d83ad 100644 (file)
@@ -31,7 +31,7 @@
  * NO EVENT SHALL THE AUTHORS BE LIABLE.
  *
  * $FreeBSD: src/sys/dev/si/si.c,v 1.101.2.1 2001/02/26 04:23:06 jlemon Exp $
  * NO EVENT SHALL THE AUTHORS BE LIABLE.
  *
  * $FreeBSD: src/sys/dev/si/si.c,v 1.101.2.1 2001/02/26 04:23:06 jlemon Exp $
- * $DragonFly: src/sys/dev/serial/si/si.c,v 1.9 2004/05/13 23:49:20 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/si/si.c,v 1.10 2004/05/19 22:52:49 dillon Exp $
  */
 
 #ifndef lint
  */
 
 #ifndef lint
@@ -599,6 +599,7 @@ try_next2:
                done_chartimes = 1;
        }
 
                done_chartimes = 1;
        }
 
+       cdevsw_add(&si_cdevsw, 0x7f, unit);
 /*     path    name    devsw           minor   type   uid gid perm*/
        for (x = 0; x < sc->sc_nport; x++) {
                /* sync with the manuals that start at 1 */
 /*     path    name    devsw           minor   type   uid gid perm*/
        for (x = 0; x < sc->sc_nport; x++) {
                /* sync with the manuals that start at 1 */
index 4990c53..e69e6e3 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/sio.c,v 1.291.2.35 2003/05/18 08:51:15 murray Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/isa/sio.c,v 1.291.2.35 2003/05/18 08:51:15 murray Exp $
- * $DragonFly: src/sys/dev/serial/sio/sio.c,v 1.15 2004/05/13 23:49:20 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/sio/sio.c,v 1.16 2004/05/19 22:52:49 dillon Exp $
  *     from: @(#)com.c 7.5 (Berkeley) 5/16/91
  *     from: i386/isa sio.c,v 1.234
  */
  *     from: @(#)com.c 7.5 (Berkeley) 5/16/91
  *     from: i386/isa sio.c,v 1.234
  */
@@ -1182,6 +1182,7 @@ determined_type: ;
                sio_registered = TRUE;
        }
        minorbase = UNIT_TO_MINOR(unit);
                sio_registered = TRUE;
        }
        minorbase = UNIT_TO_MINOR(unit);
+       cdevsw_add(&sio_cdevsw, UNIT_TO_MINOR(-1), minorbase);
        make_dev(&sio_cdevsw, minorbase,
            UID_ROOT, GID_WHEEL, 0600, "ttyd%r", unit);
        make_dev(&sio_cdevsw, minorbase | CONTROL_INIT_STATE,
        make_dev(&sio_cdevsw, minorbase,
            UID_ROOT, GID_WHEEL, 0600, "ttyd%r", unit);
        make_dev(&sio_cdevsw, minorbase | CONTROL_INIT_STATE,
@@ -2963,7 +2964,9 @@ siocnprobe(cp)
 
                        splx(s);
                        if (COM_CONSOLE(flags) && !COM_LLCONSOLE(flags)) {
 
                        splx(s);
                        if (COM_CONSOLE(flags) && !COM_LLCONSOLE(flags)) {
-                               cp->cn_dev = makedev(CDEV_MAJOR, unit);
+                               cp->cn_dev = make_dev(&sio_cdevsw, unit,
+                                               UID_ROOT, GID_WHEEL, 0600,
+                                               "ttyd%r", unit);
                                cp->cn_pri = COM_FORCECONSOLE(flags)
                                             || boothowto & RB_SERIAL
                                             ? CN_REMOTE : CN_NORMAL;
                                cp->cn_pri = COM_FORCECONSOLE(flags)
                                             || boothowto & RB_SERIAL
                                             ? CN_REMOTE : CN_NORMAL;
@@ -2975,7 +2978,9 @@ siocnprobe(cp)
                                siogdbiobase = iobase;
                                siogdbunit = unit;
 #if DDB > 0
                                siogdbiobase = iobase;
                                siogdbunit = unit;
 #if DDB > 0
-                               gdbdev = makedev(CDEV_MAJOR, unit);
+                               gdbdev = make_dev(&sio_cdevsw, unit,
+                                               UID_ROOT, GID_WHEEL, 0600,
+                                               "ttyd%r", unit);
                                gdb_getc = siocngetc;
                                gdb_putc = siocnputc;
 #endif
                                gdb_getc = siocngetc;
                                gdb_putc = siocnputc;
 #endif
@@ -2996,7 +3001,9 @@ siocnprobe(cp)
                printf("configuration file (currently sio only).\n");
                siogdbiobase = siocniobase;
                siogdbunit = siocnunit;
                printf("configuration file (currently sio only).\n");
                siogdbiobase = siocniobase;
                siogdbunit = siocnunit;
-               gdbdev = makedev(CDEV_MAJOR, siocnunit);
+               gdbdev = make_dev(&sio_cdevsw, siocnunit,
+                               UID_ROOT, GID_WHEEL, 0600,
+                               "ttyd%r", siocnunit);
                gdb_getc = siocngetc;
                gdb_putc = siocnputc;
        }
                gdb_getc = siocngetc;
                gdb_putc = siocnputc;
        }
@@ -3021,7 +3028,8 @@ siocnattach(port, speed)
        siocniobase = port;
        comdefaultrate = speed;
        sio_consdev.cn_pri = CN_NORMAL;
        siocniobase = port;
        comdefaultrate = speed;
        sio_consdev.cn_pri = CN_NORMAL;
-       sio_consdev.cn_dev = makedev(CDEV_MAJOR, 0);
+       sio_consdev.cn_dev = make_dev(&sio_cdevsw, 0, UID_ROOT, GID_WHEEL, 
+                                       0600, "ttyd%r", 0);
 
        s = spltty();
 
 
        s = spltty();
 
index e1b5542..b28598b 100644 (file)
@@ -34,7 +34,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/stallion.c,v 1.39.2.2 2001/08/30 12:29:57 murray Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/stallion.c,v 1.39.2.2 2001/08/30 12:29:57 murray Exp $
- * $DragonFly: src/sys/dev/serial/stl/stallion.c,v 1.9 2004/05/13 23:49:20 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/stl/stallion.c,v 1.10 2004/05/19 22:52:49 dillon Exp $
  */
 
 /*****************************************************************************/
  */
 
 /*****************************************************************************/
@@ -767,8 +767,6 @@ static struct cdevsw stl_cdevsw = {
 
 static void stl_drvinit(void *unused)
 {
 
 static void stl_drvinit(void *unused)
 {
-
-       cdevsw_add(&stl_cdevsw);
 }
 
 SYSINIT(sidev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,stl_drvinit,NULL)
 }
 
 SYSINIT(sidev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,stl_drvinit,NULL)
@@ -880,6 +878,7 @@ static int stlattach(struct isa_device *idp)
 
        /* register devices for DEVFS */
        boardnr = brdp->brdnr;
 
        /* register devices for DEVFS */
        boardnr = brdp->brdnr;
+       cdevsw_add(&stl_cdevsw, 31, boardnr);
        make_dev(&stl_cdevsw, boardnr + 0x1000000, UID_ROOT, GID_WHEEL,
                 0600, "staliomem%d", boardnr);
 
        make_dev(&stl_cdevsw, boardnr + 0x1000000, UID_ROOT, GID_WHEEL,
                 0600, "staliomem%d", boardnr);
 
index b200078..9051df7 100644 (file)
@@ -34,7 +34,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/istallion.c,v 1.36.2.2 2001/08/30 12:29:57 murray Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/istallion.c,v 1.36.2.2 2001/08/30 12:29:57 murray Exp $
- * $DragonFly: src/sys/dev/serial/stli/istallion.c,v 1.10 2004/05/13 23:49:20 dillon Exp $
+ * $DragonFly: src/sys/dev/serial/stli/istallion.c,v 1.11 2004/05/19 22:52:50 dillon Exp $
  */
 
 /*****************************************************************************/
  */
 
 /*****************************************************************************/
@@ -816,10 +816,6 @@ static int stliprobe(struct isa_device *idp)
 {
        stlibrd_t       *brdp;
        int             btype, bclass;
 {
        stlibrd_t       *brdp;
        int             btype, bclass;
-       static int once;
-
-       if (!once++)
-               cdevsw_add(&stli_cdevsw);
 
 #if STLDEBUG
        printf("stliprobe(idp=%x): unit=%d iobase=%x flags=%x\n", (int) idp,
 
 #if STLDEBUG
        printf("stliprobe(idp=%x): unit=%d iobase=%x flags=%x\n", (int) idp,
@@ -3543,6 +3539,7 @@ static int stli_brdattach(stlibrd_t *brdp)
        printf("stli%d: %s (driver version %s), unit=%d nrpanels=%d "
                "nrports=%d\n", brdp->unitid, stli_brdnames[brdp->brdtype],
                stli_drvversion, brdp->brdnr, brdp->nrpanels, brdp->nrports);
        printf("stli%d: %s (driver version %s), unit=%d nrpanels=%d "
                "nrports=%d\n", brdp->unitid, stli_brdnames[brdp->brdtype],
                stli_drvversion, brdp->brdnr, brdp->nrpanels, brdp->nrports);
+       cdevsw_add(&stli_cdevsw, -1, brdp->unitid);
        return(0);
 }
 
        return(0);
 }
 
index e258dd9..d3274d1 100644 (file)
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/pcaudio.c,v 1.58 2000/01/25 21:58:43 dfr Exp $
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/pcaudio.c,v 1.58 2000/01/25 21:58:43 dfr Exp $
- * $DragonFly: src/sys/dev/sound/isa/i386/pca/Attic/pcaudio.c,v 1.9 2004/05/13 23:49:21 dillon Exp $
+ * $DragonFly: src/sys/dev/sound/isa/i386/pca/Attic/pcaudio.c,v 1.10 2004/05/19 22:52:50 dillon Exp $
  */
 
 #include <sys/param.h>
  */
 
 #include <sys/param.h>
@@ -345,6 +345,7 @@ static int
 pcaattach(device_t dev)
 {
        pca_init();
 pcaattach(device_t dev)
 {
        pca_init();
+       cdevsw_add(&pca_cdevsw, 0, 0);
        make_dev(&pca_cdevsw, 0, 0, 0, 0600, "pcaudio");
        make_dev(&pca_cdevsw, 128, 0, 0, 0600, "pcaudioctl");
        return 0;
        make_dev(&pca_cdevsw, 0, 0, 0, 0600, "pcaudio");
        make_dev(&pca_cdevsw, 128, 0, 0, 0600, "pcaudioctl");
        return 0;
index 6a9fd80..7b12c5c 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/sound/soundcard.c,v 1.87 1999/12/20 18:05:01 eivind Exp $
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/i386/isa/sound/soundcard.c,v 1.87 1999/12/20 18:05:01 eivind Exp $
- * $DragonFly: src/sys/dev/sound/isa/i386/Attic/soundcard.c,v 1.6 2004/05/13 23:49:20 dillon Exp $
+ * $DragonFly: src/sys/dev/sound/isa/i386/Attic/soundcard.c,v 1.7 2004/05/19 22:52:50 dillon Exp $
  *
  */
 #include "use_snd.h"
  *
  */
 #include "use_snd.h"
@@ -501,7 +501,7 @@ sndattach(struct isa_device * dev)
        sequencer_init();
     }
&nbs