summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>1995-12-08 11:19:42 +0000
committerjulian <julian@FreeBSD.org>1995-12-08 11:19:42 +0000
commit1900eea896e2aaeae8a9fa8affa5fded2068c9b4 (patch)
tree5150d199464d64c1021f91b2c2f112d48546a8bf /sys/i386/isa
parentaaf9d7f10ecc63adae1dc4f55cfd31a2926c605a (diff)
downloadFreeBSD-src-1900eea896e2aaeae8a9fa8affa5fded2068c9b4.zip
FreeBSD-src-1900eea896e2aaeae8a9fa8affa5fded2068c9b4.tar.gz
Pass 3 of the great devsw changes
most devsw referenced functions are now static, as they are in the same file as their devsw structure. I've also added DEVFS support for nearly every device in the system, however many of the devices have 'incorrect' names under DEVFS because I couldn't quickly work out the correct naming conventions. (but devfs won't be coming on line for a month or so anyhow so that doesn't matter) If you "OWN" a device which would normally have an entry in /dev then search for the devfs_add_devsw() entries and munge to make them right.. check out similar devices to see what I might have done in them in you can't see what's going on.. for a laugh compare conf.c conf.h defore and after... :) I have not doen DEVFS entries for any DISKSLICE devices yet as that will be a much more complicated job.. (pass 5 :) pass 4 will be to make the devsw tables of type (cdevsw * ) rather than (cdevsw) seems to work here.. complaints to the usual places.. :)
Diffstat (limited to 'sys/i386/isa')
-rw-r--r--sys/i386/isa/asc.c105
-rw-r--r--sys/i386/isa/b004.c112
-rw-r--r--sys/i386/isa/b004.h1
-rw-r--r--sys/i386/isa/ctx.c64
-rw-r--r--sys/i386/isa/cx.c41
-rw-r--r--sys/i386/isa/cy.c68
-rw-r--r--sys/i386/isa/fd.c75
-rw-r--r--sys/i386/isa/gpib.c64
-rw-r--r--sys/i386/isa/gsc.c95
-rw-r--r--sys/i386/isa/if_cx.c7
-rw-r--r--sys/i386/isa/joy.c72
-rw-r--r--sys/i386/isa/labpc.c60
-rw-r--r--sys/i386/isa/lpt.c77
-rw-r--r--sys/i386/isa/matcd/matcd.c115
-rw-r--r--sys/i386/isa/mcd.c97
-rw-r--r--sys/i386/isa/mse.c76
-rw-r--r--sys/i386/isa/pcaudio.c58
-rw-r--r--sys/i386/isa/pcvt/pcvt_drv.c2
-rw-r--r--sys/i386/isa/psm.c76
-rw-r--r--sys/i386/isa/rc.c76
-rw-r--r--sys/i386/isa/scd.c111
-rw-r--r--sys/i386/isa/si.c113
-rw-r--r--sys/i386/isa/sio.c106
-rw-r--r--sys/i386/isa/sound/soundcard.c115
-rw-r--r--sys/i386/isa/spigot.c76
-rw-r--r--sys/i386/isa/spkr.c38
-rw-r--r--sys/i386/isa/syscons.c21
-rw-r--r--sys/i386/isa/tw.c57
-rw-r--r--sys/i386/isa/wcd.c108
-rw-r--r--sys/i386/isa/wd.c57
-rw-r--r--sys/i386/isa/wt.c83
31 files changed, 1293 insertions, 933 deletions
diff --git a/sys/i386/isa/asc.c b/sys/i386/isa/asc.c
index 2050c76..b072c5f 100644
--- a/sys/i386/isa/asc.c
+++ b/sys/i386/isa/asc.c
@@ -34,7 +34,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
- * $Id: asc.c,v 1.8 1995/11/29 14:39:31 julian Exp $
+ * $Id: asc.c,v 1.9 1995/12/06 23:42:22 bde Exp $
*/
#include "asc.h"
@@ -68,6 +68,11 @@
#include <sys/tty.h>
#include <sys/uio.h>
#include <sys/syslog.h>
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/asc_ioctl.h>
@@ -76,15 +81,6 @@
#include <i386/isa/isa_device.h>
#include <i386/isa/ascreg.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 71
-#endif /*JREMOD*/
-
#endif /* FREEBSD_1_X */
/***
@@ -184,6 +180,12 @@ struct asc_unit {
#endif
int height; /* height, for pnm modes */
size_t bcount; /* bytes to read, for pnm modes */
+#ifdef DEVFS
+ void *devfs_asc; /* storage for devfs tokens (handles) */
+ void *devfs_ascp;
+ void *devfs_ascd;
+ void *devfs_ascpd;
+#endif
} unittab[NASC];
/*** I could not find a reasonable buffer size limit other than by
@@ -202,6 +204,20 @@ int ascattach(struct isa_device *isdp);
struct isa_driver ascdriver = { ascprobe, ascattach, "asc" };
#ifndef FREEBSD_1_X
+
+static d_open_t ascopen;
+static d_close_t ascclose;
+static d_read_t ascread;
+static d_ioctl_t ascioctl;
+static d_select_t ascselect;
+
+#define CDEV_MAJOR 71
+
+static struct cdevsw asc_cdevsw =
+ { ascopen, ascclose, ascread, nowrite, /*71*/
+ ascioctl, nostop, nullreset, nodevtotty, /* asc */
+ ascselect, nommap, NULL, "asc", NULL, -1 };
+
struct asc_softc {
struct isa_device *dev;
} asc_softc[NASC];
@@ -226,6 +242,9 @@ asc_registerdev(struct isa_device *id)
kdc_asc[id->id_unit].kdc_isa = id;
dev_attach(&kdc_asc[id->id_unit]);
}
+#define STATIC static
+#else
+#define STATIC
#endif /* ! FREEBSD_1_X */
/***
@@ -447,8 +466,7 @@ ascattach(struct isa_device *isdp)
int unit = isdp->id_unit;
struct asc_unit *scu = unittab + unit;
#ifdef DEVFS
- char buf[32];
- void *x;
+ char name[32];
#endif
scu->flags |= DEBUG;
@@ -472,18 +490,24 @@ ascattach(struct isa_device *isdp)
asc_registerdev(isdp);
#endif
#ifdef DEVFS
- sprintf(buf,"asc%d",unit);
+#define ASC_UID 0
+#define ASC_GID 13
+ sprintf(name,"asc%d",unit);
/* path name devsw minor type uid gid perm*/
- x=dev_add("/misc", buf, ascopen, unit<<6, DV_CHR, 0, 0, 0666);
- sprintf(buf,"asc%dp",unit);
- x=dev_add("/misc", buf, ascopen, ((unit<<6) + FRMT_PBM),
- DV_CHR, 0, 0, 0666);
- sprintf(buf,"asc%dd",unit);
- x=dev_add("/misc", buf, ascopen, ((unit<<6) + DBUG_MASK),
- DV_CHR, 0, 0, 0666);
- sprintf(buf,"asc%dpd",unit);
- x=dev_add("/misc", buf, ascopen, ((unit<<6) + DBUG_MASK + FRMT_PBM),
- DV_CHR, 0, 0, 0666);
+ scu->devfs_asc = devfs_add_devsw("/", name, &asc_cdevsw, unit<<6,
+ DV_CHR, ASC_UID, ASC_GID, 0666);
+ sprintf(name,"asc%dp",unit);
+ scu->devfs_ascp = devfs_add_devsw("/", name, &asc_cdevsw,
+ ((unit<<6) + FRMT_PBM),
+ DV_CHR, ASC_UID, ASC_GID, 0666);
+ sprintf(name,"asc%dd",unit);
+ scu->devfs_ascd = devfs_add_devsw("/", name, &asc_cdevsw,
+ ((unit<<6) + DBUG_MASK),
+ DV_CHR, ASC_UID, ASC_GID, 0666);
+ sprintf(name,"asc%dpd",unit);
+ scu->devfs_ascpd = devfs_add_devsw("/", name, &asc_cdevsw,
+ ((unit<<6) + DBUG_MASK + FRMT_PBM),
+ DV_CHR, ASC_UID, ASC_GID, 0666);
#endif /*DEVFS*/
return 1; /* attach must not fail */
}
@@ -546,7 +570,7 @@ ascintr(int unit)
*** don't switch scanner on, wait until first read or ioctls go before
***/
-int
+STATIC int
ascopen(dev_t dev, int flags, int fmt, struct proc *p)
{
int unit = UNIT(minor(dev)) & UNIT_MASK;
@@ -620,7 +644,7 @@ asc_startread(struct asc_unit *scu)
*** should probably terminate dma ops, release int and dma. lr 12mar95
***/
-int
+STATIC int
ascclose(dev_t dev, int flags, int fmt, struct proc *p)
{
int unit = UNIT(minor(dev));
@@ -678,7 +702,7 @@ pbm_init(struct asc_unit *scu)
*** ascread
***/
-int
+STATIC int
ascread(dev_t dev, struct uio *uio, int ioflag)
{
int unit = UNIT(minor(dev));
@@ -766,7 +790,7 @@ ascread(dev_t dev, struct uio *uio, int ioflag)
*** ascioctl
***/
-int
+STATIC int
ascioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *p)
{
int unit = UNIT(minor(dev));
@@ -831,7 +855,7 @@ ascioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *p)
return SUCCESS;
}
-int
+STATIC int
ascselect(dev_t dev, int rw, struct proc *p)
{
int unit = UNIT(minor(dev));
@@ -863,42 +887,21 @@ ascselect(dev_t dev, int rw, struct proc *p)
}
-#ifdef JREMOD
-struct cdevsw asc_cdevsw =
- { ascopen, ascclose, ascread, nowrite, /*71*/
- ascioctl, nostop, nullreset, nodevtotty, /* asc */
- ascselect, nommap, NULL };
-
static asc_devsw_installed = 0;
-static void asc_drvinit(void *unused)
+static void
+asc_drvinit(void *unused)
{
dev_t dev;
- dev_t dev_chr;
if( ! asc_devsw_installed ) {
dev = makedev(CDEV_MAJOR,0);
cdevsw_add(&dev,&asc_cdevsw,NULL);
- dev_chr = dev;
-#if defined(BDEV_MAJOR)
- dev = makedev(BDEV_MAJOR,0);
- bdevsw_add(&dev,&asc_bdevsw,NULL);
-#endif /*BDEV_MAJOR*/
asc_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "asc", major(dev_chr), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(ascdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,asc_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NASC > 0 */
diff --git a/sys/i386/isa/b004.c b/sys/i386/isa/b004.c
index 59a25dd..d39231a 100644
--- a/sys/i386/isa/b004.c
+++ b/sys/i386/isa/b004.c
@@ -53,6 +53,11 @@
#include <sys/proc.h>
#include <sys/uio.h>
#include <sys/devconf.h>
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/clock.h>
@@ -60,14 +65,6 @@
#include <i386/isa/isa.h>
#include <i386/isa/isa_device.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 8
-#endif /*JREMOD*/
static u_char d_inb(u_int port);
static void d_outb(u_int port, u_char data);
@@ -125,6 +122,19 @@ struct isa_driver bqudriver = {
bquprobe, bquattach, "bqu"
};
+static d_open_t bquopen;
+static d_close_t bquclose;
+static d_read_t bquread;
+static d_write_t bquwrite;
+static d_ioctl_t bquioctl;
+static d_select_t bquselect;
+
+#define CDEV_MAJOR 8
+struct cdevsw bqu_cdevsw =
+ { bquopen, bquclose, bquread, bquwrite, /*8*/
+ bquioctl, nostop, nullreset, nodevtotty,/* tputer */
+ bquselect, nommap, NULL, "bqu", NULL, -1 };
+
static int b004_sleep; /* wait address */
static struct b004_struct b004_table[NBQU];
@@ -239,7 +249,7 @@ bquanalyse( const int dev_min )
*
*****************************************************************************/
-int
+static int
bquread(dev_t dev, struct uio *uio, int flag)
{
unsigned int dev_min = minor(dev) & 7;
@@ -330,7 +340,7 @@ bquread(dev_t dev, struct uio *uio, int flag)
* int bquwrite() - write to the link interface.
*/
-int
+static int
bquwrite(dev_t dev, struct uio *uio, int flag)
{
unsigned int dev_min = minor(dev) & 7;
@@ -427,7 +437,7 @@ bquwrite(dev_t dev, struct uio *uio, int flag)
*
*/
-int
+static int
bquopen(dev_t dev, int flags, int fmt, struct proc *p)
{
unsigned int dev_min = minor(dev) & 7;
@@ -456,7 +466,7 @@ bquopen(dev_t dev, int flags, int fmt, struct proc *p)
* int b004close() -- close the link device.
*/
-int
+static int
bquclose(dev_t dev, int flags, int fmt, struct proc *p)
{
unsigned int dev_min = minor(dev) & 7;
@@ -471,7 +481,7 @@ bquclose(dev_t dev, int flags, int fmt, struct proc *p)
return 0;
}
-int
+static int
bquselect(dev_t dev, int rw, struct proc *p)
{
/* still unimplemented */
@@ -488,7 +498,7 @@ bquselect(dev_t dev, int rw, struct proc *p)
* - set timeout
*/
-int
+static int
bquioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p)
{
unsigned int dev_min = minor(dev) & 7;
@@ -535,17 +545,51 @@ bquioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p)
static inline void
bqu_registerdev(struct isa_device *id)
{
- if(id->id_unit)
- kdc_bqu[id->id_unit] = kdc_bqu[0];
- kdc_bqu[id->id_unit].kdc_unit = id->id_unit;
- kdc_bqu[id->id_unit].kdc_parentdata = id;
- dev_attach(&kdc_bqu[id->id_unit]);
+ int unit = id->id_unit;
+
+ kdc_bqu[unit] = kdc_bqu[0]; /* XXX */ /* ??Eh?? */
+ kdc_bqu[unit].kdc_unit = unit;
+ kdc_bqu[unit].kdc_parentdata = id;
+ dev_attach(&kdc_bqu[unit]);
}
static int
bquattach(struct isa_device *idp)
{
- kdc_bqu[idp->id_unit].kdc_state = DC_IDLE;
+ int unit = idp->id_unit;
+ struct b004_struct *bp;
+ char name[32];
+ int i;
+
+ kdc_bqu[unit].kdc_state = DC_IDLE;
+
+#ifdef DEVFS
+#define BQU_UID 66
+#define BQU_GID 66
+#define BQU_PERM 0600
+ bp = &b004_table[unit];
+ for ( i = 0; i < 8; i++) {
+#ifdef NOTYET
+ /* if (we've done all the ports found) break; */
+#endif
+ sprintf(name,"ttyba%d" ,i);
+ bp->devfs_token[i][0]=devfs_add_devsw(
+ "/", name, &bqu_cdevsw, i, DV_CHR,
+ BQU_UID, BQU_GID, BQU_PERM);
+ sprintf(name,"ttybd%d" ,i);
+ bp->devfs_token[i][0]=devfs_add_devsw(
+ "/", name, &bqu_cdevsw, i+64, DV_CHR,
+ BQU_UID, BQU_GID, BQU_PERM);
+ sprintf(name,"ttybc%d" ,i);
+ bp->devfs_token[i][0]=devfs_add_devsw(
+ "/", name, &bqu_cdevsw, i+128, DV_CHR,
+ BQU_UID, BQU_GID, BQU_PERM);
+ sprintf(name,"ttybd%d" ,i);
+ bp->devfs_token[i][0]=devfs_add_devsw(
+ "/", name, &bqu_cdevsw, i+192, DV_CHR,
+ BQU_UID, BQU_GID, BQU_PERM);
+ }
+#endif
return 1;
}
@@ -567,7 +611,10 @@ bquprobe(struct isa_device *idp)
register
*/
#ifdef undef
-printf("bquprobe::\nIOBASE 0x%x\nIRQ %d\nDRQ %d\nMSIZE %d\nUNIT %d\nFLAGS x0%x\nALIVE %d\n",idp->id_iobase,idp->id_irq,idp->id_drq,idp->id_msize,idp->id_unit,idp->id_flags,idp->id_alive);
+ printf(
+ "bquprobe::\nIOBASE 0x%x\nIRQ %d\nDRQ %d\nMSIZE %d\nUNIT %d\nFLAGS"
+ "x0%x\nALIVE %d\n",idp->id_iobase,idp->id_irq,
+ idp->id_drq,idp->id_msize,idp->id_unit,idp->id_flags,idp->id_alive);
#endif
if(first_time){
for(i=0;i<NBQU;i++) B004_F(i) &= ~B004_EXIST;
@@ -636,36 +683,21 @@ printf("bquprobe::\nIOBASE 0x%x\nIRQ %d\nDRQ %d\nMSIZE %d\nUNIT %d\nFLAGS x0%x\n
} /* bquprobe() */
-#ifdef JREMOD
-struct cdevsw bqu_cdevsw =
- { bquopen, bquclose, bquread, bquwrite, /*8*/
- bquioctl, nostop, nullreset, nodevtotty,/* tputer */
- bquselect, nommap, NULL };
-
static bqu_devsw_installed = 0;
-static void bqu_drvinit(void *unused)
+static void
+bqu_drvinit(void *unused)
{
dev_t dev;
if( ! bqu_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&bqu_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&bqu_cdevsw, NULL);
bqu_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "bqu", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(bqudev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,bqu_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NBQU */
diff --git a/sys/i386/isa/b004.h b/sys/i386/isa/b004.h
index ee80d46..9c5576c 100644
--- a/sys/i386/isa/b004.h
+++ b/sys/i386/isa/b004.h
@@ -93,6 +93,7 @@ struct b004_struct {
int osr; /* address of the output status register */
unsigned int timeout; /* timeout for writing/reading the link */
int boardtype; /* what kind of board is installed */
+ void *devfs_token[8][4]; /* tokens for 4 types for 8 ports */
};
/*
diff --git a/sys/i386/isa/ctx.c b/sys/i386/isa/ctx.c
index 19b9671..817d539 100644
--- a/sys/i386/isa/ctx.c
+++ b/sys/i386/isa/ctx.c
@@ -8,7 +8,7 @@
* of this software, nor does the author assume any responsibility
* for damages incurred with its use.
*
- * $Id: ctx.c,v 1.10 1995/11/29 14:39:33 julian Exp $
+ * $Id: ctx.c,v 1.11 1995/12/06 23:42:26 bde Exp $
*/
/*
@@ -120,20 +120,17 @@
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/devconf.h>
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <i386/isa/isa.h>
#include <i386/isa/isa_device.h>
#include <i386/isa/ctxreg.h>
#include <machine/ioctl_ctx.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 40
-#endif /*JREMOD*/
int waitvb(short);
@@ -145,6 +142,19 @@ int waitvb(short);
int ctxprobe(), ctxattach();
struct isa_driver ctxdriver = {ctxprobe, ctxattach, "ctx"};
+static d_open_t ctxopen;
+static d_close_t ctxclose;
+static d_read_t ctxread;
+static d_write_t ctxwrite;
+static d_ioctl_t ctxioctl;
+#define CDEV_MAJOR 40
+
+struct cdevsw ctx_cdevsw =
+ { ctxopen, ctxclose, ctxread, ctxwrite, /*40*/
+ ctxioctl, nostop, nullreset, nodevtotty,/* cortex */
+ seltrue, nommap, NULL, "ctx", NULL, -1 };
+
+
#define LUTSIZE 256 /* buffer size for Look Up Table (LUT) */
#define PAGESIZE 65536 /* size of one video page, 1/4 of the screen */
@@ -160,6 +170,7 @@ struct ctx_soft_registers {
short iobase;
caddr_t maddr;
int msize;
+ void *devfs_token;
} ctx_sr[NCTX];
@@ -203,6 +214,7 @@ int
ctxattach(struct isa_device * devp)
{
struct ctx_soft_registers *sr;
+ char name[32];
sr = &(ctx_sr[devp->id_unit]);
sr->cp0 = 0; /* zero out the shadow registers */
@@ -213,9 +225,14 @@ ctxattach(struct isa_device * devp)
sr->msize = devp->id_msize;
kdc_ctx[devp->id_unit].kdc_state = DC_IDLE;
return (1);
+#ifdef DEVFS
+ sprintf(name,"ctx%d",devp->id_unit);
+ sr->devfs_token = devfs_add_devsw( "/", name, &ctx_cdevsw, 0,
+ DV_CHR, 0, 0, 0600);
+#endif /* DEVFS */
}
-int
+static int
ctxopen(dev_t dev, int flags, int fmt, struct proc *p)
{
struct ctx_soft_registers *sr;
@@ -271,7 +288,7 @@ ctxopen(dev_t dev, int flags, int fmt, struct proc *p)
return (0); /* successful open. All ready to go. */
}
-int
+static int
ctxclose(dev_t dev, int flags, int fmt, struct proc *p)
{
int unit;
@@ -284,7 +301,7 @@ ctxclose(dev_t dev, int flags, int fmt, struct proc *p)
return (0);
}
-int
+static int
ctxwrite(dev_t dev, struct uio * uio, int ioflag)
{
int unit, status = 0;
@@ -329,7 +346,7 @@ ctxwrite(dev_t dev, struct uio * uio, int ioflag)
return (status);
}
-int
+static int
ctxread(dev_t dev, struct uio * uio, int ioflag)
{
int unit, status = 0;
@@ -372,7 +389,7 @@ ctxread(dev_t dev, struct uio * uio, int ioflag)
return (status);
}
-int
+static int
ctxioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *p)
{
int error;
@@ -451,15 +468,10 @@ waitvb(short port)
-#ifdef JREMOD
-struct cdevsw ctx_cdevsw =
- { ctxopen, ctxclose, ctxread, ctxwrite, /*40*/
- ctxioctl, nostop, nullreset, nodevtotty,/* cortex */
- seltrue, nommap, NULL };
-
static ctx_devsw_installed = 0;
-static void ctx_drvinit(void *unused)
+static void
+ctx_drvinit(void *unused)
{
dev_t dev;
@@ -467,20 +479,10 @@ static void ctx_drvinit(void *unused)
dev = makedev(CDEV_MAJOR,0);
cdevsw_add(&dev,&ctx_cdevsw,NULL);
ctx_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "ctx", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(ctxdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,ctx_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NCTX > 0 */
diff --git a/sys/i386/isa/cx.c b/sys/i386/isa/cx.c
index 73ad274..b634db0 100644
--- a/sys/i386/isa/cx.c
+++ b/sys/i386/isa/cx.c
@@ -39,12 +39,6 @@
# include <machine/pio.h>
# define RB_GETC(q) getc(q)
# else /* BSD 4.4 Lite */
-# ifdef JREMOD
-# define CDEV_MAJOR 42
-# if defined(DEVFS)
-# include <sys/devfsext.h>
-# endif /*DEVFS*/
-# endif /*JREMOD*/
# include <sys/devconf.h>
# endif
#endif
@@ -83,6 +77,23 @@ extern cx_chan_t *cxchan [NCX*NCHAN]; /* unit to channel struct pointer */
#if __FreeBSD__ >= 2
extern struct kern_devconf kdc_cx [NCX];
struct tty cx_tty [NCX*NCHAN]; /* tty data */
+
+static d_open_t cxopen;
+static d_close_t cxclose;
+static d_read_t cxread;
+static d_write_t cxwrite;
+static d_ioctl_t cxioctl;
+static d_stop_t cxstop;
+static d_select_t cxselect;
+static d_ttycv_t cxdevtotty;
+
+# define CDEV_MAJOR 42
+
+struct cdevsw cx_cdevsw =
+ { cxopen, cxclose, cxread, cxwrite, /*42*/
+ cxioctl, cxstop, nullreset, cxdevtotty,/* cronyx */
+ cxselect, nommap, NULL, "cx", NULL, -1 };
+
#else
struct tty *cx_tty [NCX*NCHAN]; /* tty data */
#endif
@@ -968,14 +979,9 @@ void cxtimeout (void *a)
timeout (cxtimeout, 0, hz*5);
}
-#ifdef JREMOD
-struct cdevsw cx_cdevsw =
- { cxopen, cxclose, cxread, cxwrite, /*42*/
- cxioctl, cxstop, nullreset, cxdevtotty,/* cronyx */
- cxselect, nommap, NULL };
+#if defined(__FreeBSD__) && (__FreeBSD__ > 1 )
static cx_devsw_installed = 0;
-
static void cx_drvinit(void *unused)
{
dev_t dev;
@@ -984,20 +990,11 @@ static void cx_drvinit(void *unused)
dev = makedev(CDEV_MAJOR,0);
cdevsw_add(&dev,&cx_cdevsw,NULL);
cx_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "cx", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(cxdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cx_drvinit,NULL)
-#endif /* JREMOD */
+#endif
#endif /* NCX */
diff --git a/sys/i386/isa/cy.c b/sys/i386/isa/cy.c
index ae025c0..acd4db6 100644
--- a/sys/i386/isa/cy.c
+++ b/sys/i386/isa/cy.c
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cy.c,v 1.22 1995/11/29 14:39:37 julian Exp $
+ * $Id: cy.c,v 1.23 1995/12/06 23:42:34 bde Exp $
*/
#include "cy.h"
@@ -315,6 +315,10 @@ struct com_s {
u_char obuf1[256];
u_char obuf2[256];
+#ifdef DEVFS
+ void *devfs_token; /* one for now */
+#endif
+
struct kern_devconf kdc;
};
@@ -358,6 +362,21 @@ static struct com_s *p_com_addr[NSIO];
static struct timeval intr_timestamp;
+static d_open_t cyopen;
+static d_close_t cyclose;
+static d_read_t cyread;
+static d_write_t cywrite;
+static d_ioctl_t cyioctl;
+static d_stop_t cystop;
+static d_ttycv_t cydevtotty;
+
+#define CDEV_MAJOR 48
+struct cdevsw cy_cdevsw =
+ { cyopen, cyclose, cyread, cywrite, /*48*/
+ cyioctl, cystop, nxreset, cydevtotty,/*cyclades*/
+ ttselect, nxmmap, NULL, "cy", NULL, -1 };
+
+
struct isa_driver siodriver = {
sioprobe, sioattach, "cy"
};
@@ -396,12 +415,9 @@ static int cy_nr_cd1400s[NCY];
#undef RxFifoThreshold
static int volatile RxFifoThreshold = (CD1400_RX_FIFO_SIZE / 2);
-#ifdef JREMOD
#ifdef DEVFS
#include <sys/devfsext.h>
#endif /*DEVFS*/
-#define CDEV_MAJOR 48
-#endif /*JREMOD*/
static struct kern_devconf kdc_sio[NCY] = { {
0, 0, 0, /* filled in by dev_attach */
@@ -502,6 +518,7 @@ sioattach(isdp)
cy_addr iobase;
int ncyu;
int unit;
+ char name [32];
unit = isdp->id_unit;
if ((u_int)unit >= NCY)
@@ -575,6 +592,13 @@ sioattach(isdp)
s = spltty();
com_addr(unit) = com;
splx(s);
+#ifdef DEVFS
+/* XXX */ /* Fix this when you work out what the f*ck it looks like */
+ sprintf(name, "cy%d", unit);
+ com->devfs_token =
+ devfs_add_devsw( "/", name, &cy_cdevsw, unit,
+ DV_CHR, 0, 0, 0600);
+#endif
}
}
kdc_sio[isdp->id_unit].kdc_state = DC_BUSY; /* XXX */
@@ -585,7 +609,7 @@ sioattach(isdp)
return (1);
}
-int
+static int
sioopen(dev, flag, mode, p)
dev_t dev;
int flag;
@@ -786,7 +810,7 @@ out:
return (error);
}
-int
+static int
sioclose(dev, flag, mode, p)
dev_t dev;
int flag;
@@ -887,7 +911,7 @@ comhardclose(com)
splx(s);
}
-int
+static int
sioread(dev, uio, flag)
dev_t dev;
struct uio *uio;
@@ -903,7 +927,7 @@ sioread(dev, uio, flag)
return ((*linesw[tp->t_line].l_read)(tp, uio, flag));
}
-int
+static int
siowrite(dev, uio, flag)
dev_t dev;
struct uio *uio;
@@ -1320,7 +1344,7 @@ siointr1(com)
{
}
-int
+static int
sioioctl(dev, cmd, data, flag, p)
dev_t dev;
int cmd;
@@ -2105,7 +2129,7 @@ comstart(tp)
splx(s);
}
-void
+static void
siostop(tp, rw)
struct tty *tp;
int rw;
@@ -2520,36 +2544,20 @@ cystatus(unit)
-#ifdef JREMOD
-struct cdevsw cy_cdevsw =
- { cyopen, cyclose, cyread, cywrite, /*48*/
- cyioctl, cystop, nxreset, cydevtotty,/*cyclades*/
- ttselect, nxmmap, NULL };
-
static cy_devsw_installed = 0;
-static void cy_drvinit(void *unused)
+static void
+cy_drvinit(void *unused)
{
dev_t dev;
if( ! cy_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&cy_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&cy_cdevsw, NULL);
cy_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "cy", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(cydev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cy_drvinit,NULL)
-#endif /* JREMOD */
-
#endif /* NCY > 0 */
diff --git a/sys/i386/isa/fd.c b/sys/i386/isa/fd.c
index 1af2cbf..e1b3436 100644
--- a/sys/i386/isa/fd.c
+++ b/sys/i386/isa/fd.c
@@ -1,4 +1,4 @@
-/*-
+/*
* Copyright (c) 1990 The Regents of the University of California.
* All rights reserved.
*
@@ -43,7 +43,7 @@
* SUCH DAMAGE.
*
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
- * $Id: fd.c,v 1.71 1995/11/20 12:41:38 phk Exp $
+ * $Id: fd.c,v 1.72 1995/11/28 09:41:00 julian Exp $
*
*/
@@ -87,11 +87,7 @@
#include <sys/devfsext.h>
#endif
-#ifdef JREMOD
-#define CDEV_MAJOR 9
-#define BDEV_MAJOR 2
-static void fd_devsw_install();
-#endif /*JREMOD */
+
static int fd_goaway(struct kern_devconf *, int);
static int fdc_goaway(struct kern_devconf *, int);
static int fd_externalize(struct kern_devconf *, struct sysctl_req *);
@@ -250,6 +246,10 @@ struct fd_data {
int track; /* where we think the head is */
int options; /* user configurable options, see ioctl_fd.h */
int dkunit; /* disk stats unit number */
+#ifdef DEVFS
+ void *rfd_devfs_token;
+ void *fd_devfs_token;
+#endif
} fd_data[NFD];
/***********************************************************************\
@@ -342,6 +342,24 @@ struct isa_driver fdcdriver = {
fdprobe, fdattach, "fdc",
};
+static d_open_t Fdopen; /* NOTE, not fdopen */
+static d_close_t fdclose;
+static d_ioctl_t fdioctl;
+static d_strategy_t fdstrategy;
+
+#define CDEV_MAJOR 9
+#define BDEV_MAJOR 2
+extern struct cdevsw fd_cdevsw;
+struct bdevsw fd_bdevsw =
+ { Fdopen, fdclose, fdstrategy, fdioctl, /*2*/
+ nxdump, zerosize, 0, "fd", &fd_cdevsw, -1 };
+
+struct cdevsw fd_cdevsw =
+ { Fdopen, fdclose, rawread, rawwrite, /*9*/
+ fdioctl, nostop, nullreset, nodevtotty,
+ seltrue, nommap, fdstrategy, "fd",
+ &fd_bdevsw, -1 };
+
struct isa_device *fdcdevs[NFDC];
/*
@@ -518,9 +536,6 @@ fdprobe(struct isa_device *dev)
#ifndef DEV_LKM
fdc_registerdev(dev);
#endif
-#ifdef JREMOD
- fd_devsw_install();
-#endif /*JREMOD*/
/* First - lets reset the floppy controller */
outb(dev->id_iobase+FDOUT, 0);
@@ -554,7 +569,6 @@ fdattach(struct isa_device *dev)
int ic_type = 0;
#ifdef DEVFS
char name[64];
- void *key;
#endif /* DEVFS */
fdc->fdcu = fdcu;
@@ -750,10 +764,12 @@ fdattach(struct isa_device *dev)
}
kdc_fd[fdu].kdc_state = DC_IDLE;
#ifdef DEVFS
- key = dev_add("/disks/rfloppy",name,(caddr_t)Fdopen,fdu * 8,
- DV_CHR,0,0,0644);
- key = dev_add("/disks/floppy",name,(caddr_t)Fdopen,fdu * 8,
- DV_BLK,0,0,0644);
+ fd->rfd_devfs_token = devfs_add_devsw(
+ "/",name,&fd_cdevsw, fdu * 8,
+ DV_CHR,0,0,0644);
+ fd->fd_devfs_token = devfs_add_devsw(
+ "/",name, &fd_bdevsw, fdu * 8,
+ DV_BLK,0,0,0644);
#endif /* DEVFS */
if (dk_ndrive < DK_NDRIVE) {
sprintf(dk_names[dk_ndrive], "fd%d", fdu);
@@ -1893,32 +1909,23 @@ fdioctl(dev, cmd, addr, flag, p)
}
-#ifdef JREMOD
-struct bdevsw fd_bdevsw =
- { Fdopen, fdclose, fdstrategy, fdioctl, /*2*/
- nxdump, zerosize, 0 };
-
-struct cdevsw fd_cdevsw =
- { Fdopen, fdclose, rawread, rawwrite, /*9*/
- fdioctl, nostop, nullreset, nodevtotty,/* Fd (!=fd) */
- seltrue, nommap, fdstrategy };
-
static fd_devsw_installed = 0;
-static void fd_devsw_install()
+static void fd_drvinit(void *notused )
{
- dev_t descript;
+ dev_t dev;
+
if( ! fd_devsw_installed ) {
- descript = makedev(CDEV_MAJOR,0);
- cdevsw_add(&descript,&fd_cdevsw,NULL);
-#if defined(BDEV_MAJOR)
- descript = makedev(BDEV_MAJOR,0);
- bdevsw_add(&descript,&fd_bdevsw,NULL);
-#endif /*BDEV_MAJOR*/
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&fd_cdevsw, NULL);
+ dev = makedev(BDEV_MAJOR, 0);
+ bdevsw_add(&dev,&fd_bdevsw, NULL);
fd_devsw_installed = 1;
}
}
-#endif /* JREMOD */
+
+SYSINIT(fddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,fd_drvinit,NULL)
+
#endif
/*
* Hello emacs, these are the
diff --git a/sys/i386/isa/gpib.c b/sys/i386/isa/gpib.c
index 1d0b1ac..76e11d9 100644
--- a/sys/i386/isa/gpib.c
+++ b/sys/i386/isa/gpib.c
@@ -33,6 +33,11 @@
#include "uio.h"
#include "kernel.h"
#include "malloc.h"
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/clock.h>
@@ -47,14 +52,6 @@
#define SLEEP_MAX 1000
#define SLEEP_MIN 4
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 44
-#endif /*JREMOD*/
int initgpib(void);
@@ -79,6 +76,17 @@ int gpattach();
struct isa_driver gpdriver = {gpprobe, gpattach, "gp"};
+static d_open_t gpopen;
+static d_close_t gpclose;
+static d_write_t gpwrite;
+static d_ioctl_t gpioctl;
+
+#define CDEV_MAJOR 44
+struct cdevsw gp_cdevsw =
+ { gpopen, gpclose, noread, gpwrite, /*44*/
+ gpioctl, nostop, nullreset, nodevtotty,/* GPIB */
+ seltrue, nommap, NULL, "gp", NULL, -1 };
+
#define BUFSIZE 1024
#define ATTACHED 0x08
#define OPEN 0x04
@@ -92,7 +100,10 @@ static struct gpib_softc {
u_char sc_flags; /* flags (open and internal) */
char sc_unit; /* gpib device number */
char *sc_inbuf; /* buffer for data */
-} gpib_sc;
+#ifdef DEVFS
+ void *devfs_token; /* handle for devfs entry */
+#endif
+} gpib_sc; /* only support one of these? */
static int oldcount;
static char oldbytes[2];
/*Probe routine*/
@@ -134,6 +145,10 @@ gpattach(isdp)
printf ("gp%d: type AT-GPIB chip NAT4882A\n",sc->sc_unit);
sc->sc_flags |=ATTACHED;
+#ifdef DEVFS
+ sc->devfs_token = devfs_add_devsw( "/", "gp", &gp_cdevsw, 0,
+ DV_CHR, 0, 0, 0600);
+#endif
return (1);
}
@@ -144,7 +159,7 @@ gpattach(isdp)
* More than 1 open is not allowed on the entire device.
* i.e. even if gpib5 is open, we can't open another minor device
*/
-int
+static int
gpopen(dev, flags, fmt, p)
dev_t dev;
int flags;
@@ -222,7 +237,7 @@ enableremote(unit);
* gpclose()
* Close gpib device.
*/
-int
+static int
gpclose(dev, flags, fmt, p)
dev_t dev;
int flags;
@@ -325,7 +340,7 @@ while (!(inb(ISR1)&2)&&(status==EWOULDBLOCK));
* Copy from user's buffer, then write to GPIB device referenced
* by minor(dev).
*/
-int
+static int
gpwrite(dev, uio, ioflag)
dev_t dev;
struct uio *uio;
@@ -378,7 +393,7 @@ gpwrite(dev, uio, ioflag)
An exception would be a plotter or printer that you can just
write to using a minor device = its GPIB address */
-int
+static int
gpioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *p)
{
struct gpibdata *gd = (struct gpibdata *)data;
@@ -1264,36 +1279,21 @@ outb(CDOR,95); /*untalk*/
}
-#ifdef JREMOD
-struct cdevsw gp_cdevsw =
- { gpopen, gpclose, noread, gpwrite, /*44*/
- gpioctl, nostop, nullreset, nodevtotty,/* GPIB */
- seltrue, nommap, NULL };
-
static gp_devsw_installed = 0;
-static void gp_drvinit(void *unused)
+static void
+gp_drvinit(void *unused)
{
dev_t dev;
if( ! gp_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&gp_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&gp_cdevsw, NULL);
gp_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "gp", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(gpdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,gp_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NGPIB > 0 */
diff --git a/sys/i386/isa/gsc.c b/sys/i386/isa/gsc.c
index e8dfade..f8369e5 100644
--- a/sys/i386/isa/gsc.c
+++ b/sys/i386/isa/gsc.c
@@ -45,6 +45,11 @@
#include <sys/ioctl.h>
#include <sys/uio.h>
#include <sys/syslog.h>
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/gsc.h>
@@ -57,14 +62,6 @@
* CONSTANTS & DEFINES
*
***********************************************************************/
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 47
-#endif /*JREMOD*/
#define PROBE_FAIL 0
#define PROBE_SUCCESS 1
@@ -159,6 +156,12 @@ struct gsc_unit {
int height; /* height, for pnm modes */
size_t bcount; /* bytes to read, for pnm modes */
struct _sbuf hbuf; /* buffer for pnm header data */
+#ifdef DEVFS
+ void *devfs_gsc; /* storage for devfs tokens (handles) */
+ void *devfs_gscp;
+ void *devfs_gscd;
+ void *devfs_gscpd;
+#endif
} unittab[NGSC];
/* I could not find a reasonable buffer size limit other than by
@@ -175,11 +178,23 @@ struct gsc_unit {
*
***********************************************************************/
-int gscprobe (struct isa_device *isdp);
-int gscattach(struct isa_device *isdp);
+static int gscprobe (struct isa_device *isdp);
+static int gscattach(struct isa_device *isdp);
struct isa_driver gscdriver = { gscprobe, gscattach, "gsc" };
+static d_open_t gscopen;
+static d_close_t gscclose;
+static d_read_t gscread;
+static d_ioctl_t gscioctl;
+
+#define CDEV_MAJOR 47
+struct cdevsw gsc_cdevsw =
+ { gscopen, gscclose, gscread, nowrite, /*47*/
+ gscioctl, nostop, nullreset, nodevtotty,/* gsc */
+ seltrue, nommap, NULL, "gsc", NULL, -1 };
+
+
/***********************************************************************
*
* LOCALLY USED SUBROUTINES
@@ -379,7 +394,7 @@ buffer_read(struct gsc_unit *scu)
* - if DMA channel matches (status byte has correct value)
*/
-int
+static int
gscprobe (struct isa_device *isdp)
{
int unit = isdp->id_unit;
@@ -476,11 +491,12 @@ gscprobe (struct isa_device *isdp)
* get geometry value
*/
-int
+static int
gscattach(struct isa_device *isdp)
{
int unit = isdp->id_unit;
struct gsc_unit *scu = unittab + unit;
+ char name[32];
scu->flags |= DEBUG;
@@ -507,6 +523,26 @@ gscattach(struct isa_device *isdp)
scu->flags |= ATTACHED;
lprintf("gsc%d.attach: ok\n", unit);
scu->flags &= ~DEBUG;
+#ifdef DEVFS
+#define GSC_UID 0
+#define GSC_GID 13
+ sprintf(name,"gsc%d",unit);
+/* path name devsw minor type uid gid perm*/
+ scu->devfs_gsc = devfs_add_devsw("/", name, &gsc_cdevsw, unit<<6,
+ DV_CHR, GSC_UID, GSC_GID, 0666);
+ sprintf(name,"gsc%dp",unit);
+ scu->devfs_gscp = devfs_add_devsw("/", name, &gsc_cdevsw,
+ ((unit<<6) + FRMT_PBM),
+ DV_CHR, GSC_UID, GSC_GID, 0666);
+ sprintf(name,"gsc%dd",unit);
+ scu->devfs_gscd = devfs_add_devsw("/", name, &gsc_cdevsw,
+ ((unit<<6) + DBUG_MASK),
+ DV_CHR, GSC_UID, GSC_GID, 0666);
+ sprintf(name,"gsc%dpd",unit);
+ scu->devfs_gscpd = devfs_add_devsw("/", name, &gsc_cdevsw,
+ ((unit<<6) + DBUG_MASK + FRMT_PBM),
+ DV_CHR, GSC_UID, GSC_GID, 0666);
+#endif /*DEVFS*/
return SUCCESS; /* attach must not fail */
}
@@ -520,7 +556,8 @@ gscattach(struct isa_device *isdp)
* don't switch scanner on, wait until first read ioctls go before
*/
-int gscopen (dev_t dev, int flags, int fmt, struct proc *p)
+static int
+gscopen (dev_t dev, int flags, int fmt, struct proc *p)
{
int unit = UNIT(minor(dev)) & UNIT_MASK;
struct gsc_unit *scu = unittab + unit;
@@ -573,7 +610,8 @@ int gscopen (dev_t dev, int flags, int fmt, struct proc *p)
* release the buffer
*/
-int gscclose (dev_t dev, int flags, int fmt, struct proc *p)
+static int
+gscclose (dev_t dev, int flags, int fmt, struct proc *p)
{
int unit = UNIT(minor(dev));
struct gsc_unit *scu = unittab + unit;
@@ -606,7 +644,8 @@ int gscclose (dev_t dev, int flags, int fmt, struct proc *p)
* gscread
*/
-int gscread (dev_t dev, struct uio *uio, int ioflag)
+static int
+gscread (dev_t dev, struct uio *uio, int ioflag)
{
int unit = UNIT(minor(dev));
struct gsc_unit *scu = unittab + unit;
@@ -695,7 +734,8 @@ int gscread (dev_t dev, struct uio *uio, int ioflag)
*
*/
-int gscioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
+static int
+gscioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
{
int unit = UNIT(minor(dev));
struct gsc_unit *scu = unittab + unit;
@@ -782,36 +822,21 @@ int gscioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
}
-#ifdef JREMOD
-struct cdevsw gsc_cdevsw =
- { gscopen, gscclose, gscread, nowrite, /*47*/
- gscioctl, nostop, nullreset, nodevtotty,/* gsc */
- seltrue, nommap, NULL };
-
static gsc_devsw_installed = 0;
-static void gsc_drvinit(void *unused)
+static void
+gsc_drvinit(void *unused)
{
dev_t dev;
if( ! gsc_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&gsc_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&gsc_cdevsw, NULL);
gsc_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "gsc", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(gscdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,gsc_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NGSC > 0 */
diff --git a/sys/i386/isa/if_cx.c b/sys/i386/isa/if_cx.c
index 1520f95..8ea6810 100644
--- a/sys/i386/isa/if_cx.c
+++ b/sys/i386/isa/if_cx.c
@@ -45,9 +45,9 @@
# include <machine/pio.h>
# else
# ifdef DEVFS
+extern struct cdevsw cx_cdevsw;
# include <sys/devfsext.h>
# endif /*DEVFS*/
-# define CDEV_MAJOR 42 /*XXX*/ /* replace with variable ASAP*/
# include <sys/devconf.h>
# endif
# define watchdog_func_t void(*)(struct ifnet *)
@@ -372,11 +372,10 @@ void cxattach (struct device *parent, struct device *self, void *aux)
printf ("cx%d: <Cronyx-%s>\n", unit, b->name);
#ifdef DEVFS
{
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
+ void *x;
x=devfs_add_devsw(
/* path name devsw minor type uid gid perm*/
- "/", "cx", major(CDEV_MAJOR), 0, DV_CHR, 0, 0, 0600);
+ "/", "cx", &cx_cdevsw, 0, DV_CHR, 0, 0, 0600);
}
#endif
return (1);
diff --git a/sys/i386/isa/joy.c b/sys/i386/isa/joy.c
index 25d2311..2955d1c 100644
--- a/sys/i386/isa/joy.c
+++ b/sys/i386/isa/joy.c
@@ -34,6 +34,11 @@
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/joystick.h>
@@ -41,15 +46,6 @@
#include <i386/isa/isa_device.h>
#include <i386/isa/timerreg.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 51
-#endif /*JREMOD*/
-
/* The game port can manage 4 buttons and 4 variable resistors (usually 2
* joysticks, each with 2 buttons and 2 pots.) via the port at address 0x201.
* Getting the state of the buttons is done by reading the game port:
@@ -77,6 +73,9 @@ static struct {
int port;
int x_off[2], y_off[2];
int timeout[2];
+#ifdef DEVFS
+ void *devfs_token;
+#endif
} joy[NJOY];
@@ -86,6 +85,17 @@ int joyprobe (struct isa_device *), joyattach (struct isa_device *);
struct isa_driver joydriver = {joyprobe, joyattach, "joy"};
+#define CDEV_MAJOR 51
+static d_open_t joyopen;
+static d_close_t joyclose;
+static d_read_t joyread;
+static d_ioctl_t joyioctl;
+
+struct cdevsw joy_cdevsw =
+ { joyopen, joyclose, joyread, nowrite, /*51*/
+ joyioctl, nostop, nullreset, nodevtotty,/*joystick */
+ seltrue, nommap, NULL, "joy", NULL, -1 };
+
static int get_tick ();
@@ -104,14 +114,22 @@ joyprobe (struct isa_device *dev)
int
joyattach (struct isa_device *dev)
{
- joy[dev->id_unit].port = dev->id_iobase;
- joy[dev->id_unit].timeout[0] = joy[dev->id_unit].timeout[1] = 0;
- printf("joy%d: joystick\n", dev->id_unit);
-
+ int unit = dev->id_unit;
+ char name[32];
+
+ joy[unit].port = dev->id_iobase;
+ joy[unit].timeout[0] = joy[unit].timeout[1] = 0;
+ printf("joy%d: joystick\n", unit);
+#ifdef DEVFS
+ sprintf(name, "joy%d", unit);
+ joy[dev->id_unit].devfs_token = devfs_add_devsw( "/", "joy",
+ &joy_cdevsw, 0,
+ DV_CHR, 0, 0, 0600);
+#endif
return 1;
}
-int
+static int
joyopen (dev_t dev, int flags, int fmt, struct proc *p)
{
int unit = UNIT (dev);
@@ -123,7 +141,7 @@ joyopen (dev_t dev, int flags, int fmt, struct proc *p)
joy[unit].timeout[i] = JOY_TIMEOUT;
return 0;
}
-int
+static int
joyclose (dev_t dev, int flags, int fmt, struct proc *p)
{
int unit = UNIT (dev);
@@ -133,7 +151,7 @@ joyclose (dev_t dev, int flags, int fmt, struct proc *p)
return 0;
}
-int
+static int
joyread (dev_t dev, struct uio *uio, int flag)
{
int unit = UNIT(dev);
@@ -169,7 +187,9 @@ joyread (dev_t dev, struct uio *uio, int flag)
c.b2 = ~(state >> 1) & 1;
return uiomove ((caddr_t)&c, sizeof(struct joystick), uio);
}
-int joyioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
+
+static int
+joyioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
{
int unit = UNIT (dev);
int i = joypart (dev);
@@ -202,6 +222,7 @@ int joyioctl (dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
}
return 0;
}
+
static int
get_tick ()
{
@@ -215,12 +236,6 @@ get_tick ()
}
-#ifdef JREMOD
-struct cdevsw joy_cdevsw =
- { joyopen, joyclose, joyread, nowrite, /*51*/
- joyioctl, nostop, nullreset, nodevtotty,/*joystick */
- seltrue, nommap, NULL};
-
static joy_devsw_installed = 0;
static void joy_drvinit(void *unused)
@@ -231,20 +246,9 @@ static void joy_drvinit(void *unused)
dev = makedev(CDEV_MAJOR,0);
cdevsw_add(&dev,&joy_cdevsw,NULL);
joy_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "joy", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(joydev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,joy_drvinit,NULL)
-#endif /* JREMOD */
-
#endif /* NJOY > 0 */
diff --git a/sys/i386/isa/labpc.c b/sys/i386/isa/labpc.c
index 430be96..97984ee 100644
--- a/sys/i386/isa/labpc.c
+++ b/sys/i386/isa/labpc.c
@@ -53,20 +53,17 @@
#include <sys/errno.h>
#include <sys/buf.h>
#include <sys/dataacq.h>
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/devconf.h>
#include <machine/clock.h>
#include <i386/isa/isa_device.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 66
-#endif /*JREMOD*/
/* Miniumum timeout:
@@ -151,6 +148,9 @@ struct ctlr
/* Device configuration structure:
*/
struct kern_devconf kdc;
+#ifdef DEVFS
+ void *devfs_token;
+#endif
};
#ifdef LOUTB
@@ -283,6 +283,17 @@ extern int labpcprobe(struct isa_device *dev);
struct isa_driver labpcdriver =
{ labpcprobe, labpcattach, "labpc", 0 /* , labpcdetach */ };
+static d_open_t labpcopen;
+static d_close_t labpcclose;
+static d_ioctl_t labpcioctl;
+static d_strategy_t labpcstrategy;
+
+#define CDEV_MAJOR 66
+struct cdevsw labpc_cdevsw =
+ { labpcopen, labpcclose, rawread, rawwrite, /*66*/
+ labpcioctl, nostop, nullreset, nodevtotty,/* labpc */
+ seltrue, nommap, labpcstrategy, "labpc", NULL, -1 };
+
static void start(struct ctlr *ctlr);
static void
@@ -495,6 +506,8 @@ int labpcprobe(struct isa_device *dev)
int labpcattach(struct isa_device *dev)
{
struct ctlr *ctlr = labpcs[dev->id_unit];
+ char name[32];
+
ctlr->sample_us = (1000000.0 / (double)LABPC_DEFAULT_HERZ) + .50;
reset(ctlr);
labpc_registerdev(dev);
@@ -505,6 +518,13 @@ int labpcattach(struct isa_device *dev)
ctlr->dcr_is = 0x80;
loutb(DCR(ctlr), ctlr->dcr_val);
+#ifdef DEVFS
+ sprintf(name, "labpc%d",dev->id_unit);
+ /* path name devsw minor */
+ ctlr->devfs_token = devfs_add_devsw( "/", name, &labpc_cdevsw, 0,
+ /* what UID GID PERM */
+ DV_CHR, 0, 0, 0600);
+#endif
return 1;
}
@@ -734,7 +754,7 @@ lockout_multiple_open(dev_t current, dev_t next)
return ! (DIGITAL(current) && DIGITAL(next));
}
-int
+static int
labpcopen(dev_t dev, int flags, int fmt, struct proc *p)
{
u_short unit = UNIT(dev);
@@ -772,7 +792,7 @@ labpcopen(dev_t dev, int flags, int fmt, struct proc *p)
return 0;
}
-int
+static int
labpcclose(dev_t dev, int flags, int fmt, struct proc *p)
{
struct ctlr *ctlr = labpcs[UNIT(dev)];
@@ -1007,7 +1027,7 @@ digital_in_strategy(struct buf *bp, struct ctlr *ctlr)
}
-void
+static void
labpcstrategy(struct buf *bp)
{
struct ctlr *ctlr = labpcs[UNIT(bp->b_dev)];
@@ -1045,7 +1065,7 @@ labpcstrategy(struct buf *bp)
}
}
-int
+static int
labpcioctl(dev_t dev, int cmd, caddr_t arg, int mode, struct proc *p)
{
struct ctlr *ctlr = labpcs[UNIT(dev)];
@@ -1107,12 +1127,6 @@ labpcioctl(dev_t dev, int cmd, caddr_t arg, int mode, struct proc *p)
}
-#ifdef JREMOD
-struct cdevsw labpc_cdevsw =
- { labpcopen, labpcclose, rawread, rawwrite, /*66*/
- labpcioctl, nostop, nullreset, nodevtotty,/* labpc */
- seltrue, nommap, labpcstrategy };
-
static labpc_devsw_installed = 0;
static void labpc_drvinit(void *unused)
@@ -1123,19 +1137,9 @@ static void labpc_drvinit(void *unused)
dev = makedev(CDEV_MAJOR,0);
cdevsw_add(&dev,&labpc_cdevsw,NULL);
labpc_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "labpc", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(labpcdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,labpc_drvinit,NULL)
-#endif /* JREMOD */
diff --git a/sys/i386/isa/lpt.c b/sys/i386/isa/lpt.c
index 3c0b4b4..81d503b 100644
--- a/sys/i386/isa/lpt.c
+++ b/sys/i386/isa/lpt.c
@@ -46,7 +46,7 @@
* SUCH DAMAGE.
*
* from: unknown origin, 386BSD 0.1
- * $Id: lpt.c,v 1.44 1995/12/06 23:50:14 bde Exp $
+ * $Id: lpt.c,v 1.45 1995/12/07 12:46:03 davidg Exp $
*/
/*
@@ -113,6 +113,9 @@
#include <sys/uio.h>
#include <sys/syslog.h>
#include <sys/devconf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/clock.h>
#include <machine/lpt.h>
@@ -144,14 +147,6 @@
#endif
#endif /* INET */
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 16
-#endif /*JREMOD*/
#define LPINITRDY 4 /* wait up to 4 seconds for a ready */
#define LPTOUTTIME 4 /* wait up to 4 seconds for a ready */
@@ -232,7 +227,9 @@ struct lpt_softc {
u_char *sc_ifbuf;
int sc_iferrs;
#endif /* ENDIF */
-
+#ifdef DEVFS
+ void *devfs_token;
+#endif
} lpt_sc[NLPT] ;
/* bits for state */
@@ -289,6 +286,18 @@ struct isa_driver lptdriver = {
lptprobe, lptattach, "lpt"
};
+static d_open_t lptopen;
+static d_close_t lptclose;
+static d_write_t lptwrite;
+static d_ioctl_t lptioctl;
+
+#define CDEV_MAJOR 16
+struct cdevsw lpt_cdevsw =
+ { lptopen, lptclose, noread, lptwrite, /*16*/
+ lptioctl, nullstop, nullreset, nodevtotty,/* lpt */
+ seltrue, nommap, nostrat, "lpt", NULL, -1 };
+
+
static struct kern_devconf kdc_lpt[NLPT] = { {
0, 0, 0, /* filled in by dev_attach */
"lpt", 0, { MDDT_ISA, 0, "tty" },
@@ -443,8 +452,11 @@ int
lptattach(struct isa_device *isdp)
{
struct lpt_softc *sc;
+ int unit;
+ char name[32];
- sc = lpt_sc + isdp->id_unit;
+ unit = isdp->id_unit;
+ sc = lpt_sc + unit;
sc->sc_port = isdp->id_iobase;
sc->sc_primed = 0; /* not primed yet */
outb(sc->sc_port+lpt_control, LPC_NINIT);
@@ -453,18 +465,25 @@ lptattach(struct isa_device *isdp)
lprintf("oldirq %x\n", sc->sc_irq);
if (isdp->id_irq) {
sc->sc_irq = LP_HAS_IRQ | LP_USE_IRQ | LP_ENABLE_IRQ;
- printf("lpt%d: Interrupt-driven port\n", isdp->id_unit);
+ printf("lpt%d: Interrupt-driven port\n", unit);
#ifdef INET
- lpattach(sc, isdp->id_unit);
+ lpattach(sc, unit);
#endif
} else {
sc->sc_irq = 0;
- lprintf("lpt%d: Polled port\n", isdp->id_unit);
+ lprintf("lpt%d: Polled port\n", unit);
}
lprintf("irq %x\n", sc->sc_irq);
- kdc_lpt[isdp->id_unit].kdc_state = DC_IDLE;
+ kdc_lpt[unit].kdc_state = DC_IDLE;
+#ifdef DEVFS
+/* XXX */ /* what to do about the flags in the minor number? */
+ sprintf(name,"lpt%d",unit);
+ /* path name devsw minor type uid gid perm*/
+ sc->devfs_token = devfs_add_devsw( "/", name, &lpt_cdevsw, unit,
+ DV_CHR, 0, 0, 0600);
+#endif
return (1);
}
@@ -474,7 +493,7 @@ lptattach(struct isa_device *isdp)
* printer -- this is just used for passing ioctls.
*/
-int
+static int
lptopen (dev_t dev, int flags, int fmt, struct proc *p)
{
struct lpt_softc *sc;
@@ -608,7 +627,7 @@ lptout (struct lpt_softc * sc)
* Check for interrupted write call added.
*/
-int
+static int
lptclose(dev_t dev, int flags, int fmt, struct proc *p)
{
struct lpt_softc *sc = lpt_sc + LPTUNIT(minor(dev));
@@ -707,7 +726,7 @@ pushbytes(struct lpt_softc * sc)
* Flagging of interrupted write added.
*/
-int
+static int
lptwrite(dev_t dev, struct uio * uio, int ioflag)
{
register unsigned n;
@@ -805,7 +824,7 @@ lptintr(int unit)
lprintf("sts %x ", sts);
}
-int
+static int
lptioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *p)
{
int error = 0;
@@ -1355,12 +1374,6 @@ lpoutput (struct ifnet *ifp, struct mbuf *m,
#endif /* INET */
-#ifdef JREMOD
-struct cdevsw lpt_cdevsw =
- { lptopen, lptclose, noread, lptwrite, /*16*/
- lptioctl, nullstop, nullreset, nodevtotty,/* lpt */
- seltrue, nommap, nostrat};
-
static lpt_devsw_installed = 0;
static void lpt_drvinit(void *unused)
@@ -1368,21 +1381,11 @@ static void lpt_drvinit(void *unused)
dev_t dev;
if( ! lpt_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&lpt_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&lpt_cdevsw, NULL);
lpt_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "lpt", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(lptdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,lpt_drvinit,NULL)
-#endif /* JREMOD */
diff --git a/sys/i386/isa/matcd/matcd.c b/sys/i386/isa/matcd/matcd.c
index f4e29fa..20f5116 100644
--- a/sys/i386/isa/matcd/matcd.c
+++ b/sys/i386/isa/matcd/matcd.c
@@ -323,6 +323,11 @@ Edit number code marking begins here - earlier edits were during development.
Also, disable the audio-related ioctls based on the BOOTMFS
conditional to help make the boot floppy kernel smaller.
18-Oct-95 Frank Durda IV bsdmail@nemesis.lonestar.org
+
+<27> Incorporated changes needed to move the cdevsw and bdevsw
+ entries into the drivers (including this one). Also
+ include a quick first pass cut at DEVFS suppport.
+
---------------------------------------------------------------------------*/
/*Match this format: Version_dc(d)__dd-mmm-yy */
@@ -332,6 +337,7 @@ static char MATCDVERSION[]="Version 1(26) 18-Oct-95";
static char MATCDCOPYRIGHT[] = "Matsushita CD-ROM driver, Copr. 1994,1995 Frank Durda IV";
/* The proceeding strings may not be changed*/
+/* $Id:$ */
/*---------------------------------------------------------------------------
Include declarations
@@ -356,9 +362,14 @@ static char MATCDCOPYRIGHT[] = "Matsushita CD-ROM driver, Copr. 1994,1995 Frank
#ifdef FREE2
#include <sys/devconf.h> /*<16>*/
+#include <sys/conf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#else /*FREE2*/
-#include "i386/isa/isa.h" /*<16>*/
-#include "i386/isa/isa_device.h" /*<16>*/
+#include <i386/isa/isa.h> /*<16>*/
+#include <i386/isa/isa_device.h> /*<16>*/
#endif /*FREE2*/
/*---------------------------------------------------------------------------
@@ -433,6 +444,12 @@ static struct matcd_data { /*<18>*/
struct matcd_mbx mbx;
u_char patch[2]; /*<12>Last known audio routing*/
u_char volume[2]; /*<12>Last known volume setting*/
+#ifdef DEVFS
+ void *ra_devfs_token; /* handle for devfs entry */
+ void *rc_devfs_token;
+ void *a_devfs_token;
+ void *c_devfs_token;
+#endif DEVFS
} matcd_data[TOTALDRIVES];
@@ -491,15 +508,6 @@ static struct kern_devconf kdc_matcd[TOTALDRIVES] = { { /*<12>*/
"Matsushita CD-ROM Controller" /*<12>This is the description*/
} }; /*<12>*/
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 46
-#define BDEV_MAJOR 17
-#endif /*JREMOD */
#endif /*FREE2*/
@@ -535,19 +543,48 @@ static struct kern_devconf kdc_matcd[TOTALDRIVES] = { { /*<12>*/
/*---------------------------------------------------------------------------
Entry points and other connections to/from kernel - see also conf.h
+ --- not any more :)
---------------------------------------------------------------------------*/
-extern int hz;
extern int matcd_probe(struct isa_device *dev);
extern int matcd_attach(struct isa_device *dev);
struct isa_driver matcddriver={matcd_probe, matcd_attach, /*<16>*/
"matcdc"}; /*<20>*/
+#ifdef FREE2
+
+static d_open_t matcdopen;
+static d_close_t matcdclose;
+static d_ioctl_t matcdioctl;
+static d_dump_t matcddump;
+static d_psize_t matcdsize;
+static d_strategy_t matcdstrategy;
+
+#define CDEV_MAJOR 46
+#define BDEV_MAJOR 17
+
+extern struct cdevsw matcd_cdevsw;
+static struct bdevsw matcd_bdevsw =
+ { matcdopen, matcdclose, matcdstrategy, matcdioctl, /*17*/
+ nxdump, matcdsize, 0, "matcd",
+ &matcd_cdevsw, -1 };
+
+static struct cdevsw matcd_cdevsw =
+ { matcdopen, matcdclose, rawread, nowrite, /*46*/
+ matcdioctl, nostop, nullreset, nodevtotty,/* SB cd */
+ seltrue, nommap, matcdstrategy, "matcd",
+ &matcd_bdevsw, -1};
+
+#else
+extern int hz;
+#endif /* FREE2 */
+
/*---------------------------------------------------------------------------
Internal function declarations
---------------------------------------------------------------------------*/
+static void matcd_drvinit(void *unused);
static void matcd_start(struct buf *dp);
static void zero_cmd(char *);
static void matcd_pread(int port, int count, unsigned char * data);
@@ -1421,6 +1458,9 @@ int matcd_attach(struct isa_device *dev)
unsigned char data[12];
struct matcd_data *cd;
int port = dev->id_iobase; /*Take port ID selected in probe()*/
+#ifdef DEVFS
+ char name[32];
+#endif
#ifdef DIAGPORT
DIAGOUT(DIAGPORT,0x70); /*Show where we are*/
@@ -1471,6 +1511,29 @@ int matcd_attach(struct isa_device *dev)
for (i=0; i<MAXPARTITIONS; i++) {
cd->partflags[i]=0;
}
+#ifdef DEVFS
+#define MATCD_UID 0
+#define MATCD_GID 13
+ sprintf(name, "rmatcd%da",i);
+ cd->ra_devfs_token = devfs_add_devsw(
+ "/", name, &matcd_cdevsw, 0,
+ DV_CHR, MATCD_UID, MATCD_GID, 0600);
+
+ sprintf(name, "rmatcd%dc",i);
+ cd->rc_devfs_token = devfs_add_devsw(
+ "/", name, &matcd_cdevsw, RAW_PART,
+ DV_CHR, MATCD_UID, MATCD_GID, 0600);
+
+ sprintf(name, "matcd%da",i);
+ cd->a_devfs_token = devfs_add_devsw(
+ "/", name, &matcd_bdevsw, 0,
+ DV_BLK, MATCD_UID, MATCD_GID, 0600);
+
+ sprintf(name, "matcd%dc",i);
+ cd->c_devfs_token = devfs_add_devsw(
+ "/", name, &matcd_bdevsw, RAW_PART,
+ DV_BLK, MATCD_UID, MATCD_GID, 0600);
+#endif
}
}
nextcontroller++; /*Bump ctlr assign to next number*/
@@ -2749,47 +2812,27 @@ static int matcd_igot(struct ioc_capability * sqp)
audio are here*/
#endif /*FULLDRIVER*/
-#ifdef JREMOD
-struct bdevsw matcd_bdevsw =
- { matcdopen, matcdclose, matcdstrategy, matcdioctl, /*17*/
- nxdump, matcdsize, 0 };
-
-struct cdevsw matcd_cdevsw =
- { matcdopen, matcdclose, rawread, nowrite, /*46*/
- matcdioctl, nostop, nullreset, nodevtotty,/* SB cd */
- seltrue, nommap, matcdstrategy };
+#ifdef FREE2
static matcd_devsw_installed = 0;
-static void matcd_drvinit(void *unused)
+static void
+matcd_drvinit(void *unused)
{
dev_t dev;
- dev_t dev_chr;
if( ! matcd_devsw_installed ) {
dev = makedev(CDEV_MAJOR,0);
cdevsw_add(&dev,&matcd_cdevsw,NULL);
- dev_chr = dev;
dev = makedev(BDEV_MAJOR,0);
bdevsw_add(&dev,&matcd_bdevsw,NULL);
matcd_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "rmatcd", major(dev_chr), 0, DV_CHR, 0, 0, 0600);
- x=devfs_add_devsw(
- "/", "matcd", major(dev), 0, DV_BLK, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(matcddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,matcd_drvinit,NULL)
-#endif /* JREMOD */
+#endif /* FREE2 */
/*End of matcd.c*/
diff --git a/sys/i386/isa/mcd.c b/sys/i386/isa/mcd.c
index 5f7f68b..ee2e03a 100644
--- a/sys/i386/isa/mcd.c
+++ b/sys/i386/isa/mcd.c
@@ -40,7 +40,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: mcd.c,v 1.50 1995/11/29 10:47:44 julian Exp $
+ * $Id: mcd.c,v 1.51 1995/11/29 14:39:46 julian Exp $
*/
static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
@@ -61,6 +61,10 @@ static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
#include <sys/dkbad.h>
#include <sys/disklabel.h>
#include <sys/devconf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/clock.h>
@@ -70,15 +74,6 @@ static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
#include <i386/isa/isa_device.h>
#include <i386/isa/mcdreg.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 29
-#define BDEV_MAJOR 7
-#endif /*JREMOD */
#define MCD_TRACE(format, args...) \
{ \
@@ -164,6 +159,12 @@ struct mcd_data {
short debug;
struct buf head; /* head of buf queue */
struct mcd_mbx mbx;
+#ifdef DEVFS
+ void *ra_devfs_token; /* store the devfs handle here */
+ void *rc_devfs_token; /* store the devfs handle here */
+ void *a_devfs_token; /* store the devfs handle here */
+ void *c_devfs_token; /* store the devfs handle here */
+#endif
} mcd_data[NMCD];
/* reader state machine */
@@ -208,11 +209,29 @@ static int mcd_resume(int unit);
static int mcd_lock_door(int unit, int lock);
static int mcd_close_tray(int unit);
-extern int hz;
static int mcd_probe(struct isa_device *dev);
static int mcd_attach(struct isa_device *dev);
struct isa_driver mcddriver = { mcd_probe, mcd_attach, "mcd" };
+static d_open_t mcdopen;
+static d_close_t mcdclose;
+static d_ioctl_t mcdioctl;
+static d_psize_t mcdsize;
+static d_strategy_t mcdstrategy;
+
+#define CDEV_MAJOR 29
+#define BDEV_MAJOR 7
+extern struct cdevsw mcd_cdevsw;
+struct bdevsw mcd_bdevsw =
+ { mcdopen, mcdclose, mcdstrategy, mcdioctl, /*7*/
+ nxdump, mcdsize, 0, "mcd", &mcd_cdevsw, -1 };
+
+struct cdevsw mcd_cdevsw =
+ { mcdopen, mcdclose, rawread, nowrite, /*29*/
+ mcdioctl, nostop, nullreset, nodevtotty,
+ seltrue, nommap, mcdstrategy, "mcd",
+ &mcd_bdevsw, -1 };
+
#define mcd_put(port,byte) outb(port,byte)
#define MCD_RETRYS 5
@@ -253,20 +272,44 @@ mcd_registerdev(struct isa_device *id)
int mcd_attach(struct isa_device *dev)
{
- struct mcd_data *cd = mcd_data + dev->id_unit;
+ int unit = dev->id_unit;
+ struct mcd_data *cd = mcd_data + unit;
+ char name[32];
cd->iobase = dev->id_iobase;
cd->flags |= MCDINIT;
- mcd_soft_reset(dev->id_unit);
+ mcd_soft_reset(unit);
#ifdef NOTYET
/* wire controller for interrupts and dma */
mcd_configure(cd);
#endif
- kdc_mcd[dev->id_unit].kdc_state = DC_IDLE;
+ kdc_mcd[unit].kdc_state = DC_IDLE;
/* name filled in probe */
- kdc_mcd[dev->id_unit].kdc_description = mcd_data[dev->id_unit].name;
-
+ kdc_mcd[unit].kdc_description = mcd_data[unit].name;
+#ifdef DEVFS
+#define MCD_UID 0
+#define MCD_GID 13
+ sprintf(name, "rmcd%da",unit);
+ cd->ra_devfs_token = devfs_add_devsw(
+ "/", name, &mcd_cdevsw, (unit * 8 ) + 0,
+ DV_CHR, MCD_UID, MCD_GID, 0600);
+
+ sprintf(name, "rmcd%dc",unit);
+ cd->rc_devfs_token = devfs_add_devsw(
+ "/", name, &mcd_cdevsw, (unit * 8 ) + RAW_PART,
+ DV_CHR, MCD_UID, MCD_GID, 0600);
+
+ sprintf(name, "mcd%da",unit);
+ cd->a_devfs_token = devfs_add_devsw(
+ "/", name, &mcd_bdevsw, (unit * 8 ) + 0,
+ DV_BLK, MCD_UID, MCD_GID, 0600);
+
+ sprintf(name, "mcd%dc",unit);
+ cd->c_devfs_token = devfs_add_devsw(
+ "/", name, &mcd_bdevsw, (unit * 8 ) + RAW_PART,
+ DV_BLK, MCD_UID, MCD_GID, 0600);
+#endif
return 1;
}
@@ -1670,45 +1713,23 @@ mcd_resume(int unit)
return mcd_play(unit, &cd->lastpb);
}
-#ifdef JREMOD
-struct bdevsw mcd_bdevsw =
- { mcdopen, mcdclose, mcdstrategy, mcdioctl, /*7*/
- nxdump, mcdsize, 0 };
-
-struct cdevsw mcd_cdevsw =
- { mcdopen, mcdclose, rawread, nowrite, /*29*/
- mcdioctl, nostop, nullreset, nodevtotty,/* mitsumi cd */
- seltrue, nommap, mcdstrategy };
static mcd_devsw_installed = 0;
static void mcd_drvinit(void *unused)
{
dev_t dev;
- dev_t dev_chr;
if( ! mcd_devsw_installed ) {
dev = makedev(CDEV_MAJOR,0);
cdevsw_add(&dev,&mcd_cdevsw,NULL);
- dev_chr = dev;
dev = makedev(BDEV_MAJOR,0);
bdevsw_add(&dev,&mcd_bdevsw,NULL);
mcd_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
-/* path name devsw minor type uid gid perm*/
- "/", "rmcd", major(dev_chr), 0, DV_CHR, 0, 0, 0600);
- x=devfs_add_devsw(
- "/", "mcd", major(dev), 0, DV_BLK, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(mcddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,mcd_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NMCD > 0 */
diff --git a/sys/i386/isa/mse.c b/sys/i386/isa/mse.c
index 8e9fa7b..96f62e5 100644
--- a/sys/i386/isa/mse.c
+++ b/sys/i386/isa/mse.c
@@ -11,7 +11,7 @@
* this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
- * $Id: mse.c,v 1.18 1995/11/29 14:39:47 julian Exp $
+ * $Id: mse.c,v 1.19 1995/12/06 23:42:53 bde Exp $
*/
/*
* Driver for the Logitech and ATI Inport Bus mice for use with 386bsd and
@@ -55,20 +55,16 @@
#include <sys/ioctl.h>
#include <sys/uio.h>
#include <sys/devconf.h>
+#include <sys/conf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/clock.h>
#include <i386/isa/isa_device.h>
#include <i386/isa/icu.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 27
-#endif /*JREMOD*/
static int mseprobe(struct isa_device *);
static int mseattach(struct isa_device *);
@@ -77,6 +73,18 @@ struct isa_driver msedriver = {
mseprobe, mseattach, "mse"
};
+static d_open_t mseopen;
+static d_close_t mseclose;
+static d_read_t mseread;
+static d_select_t mseselect;
+
+#define CDEV_MAJOR 27
+struct cdevsw mse_cdevsw =
+ { mseopen, mseclose, mseread, nowrite, /*27*/
+ noioc, nostop, nullreset, nodevtotty,/* mse */
+ mseselect, nommap, NULL, "mse", NULL, -1 };
+
+
/*
* Software control structure for mouse. The sc_enablemouse(),
* sc_disablemouse() and sc_getmouse() routines must be called spl'd().
@@ -96,6 +104,10 @@ struct mse_softc {
int sc_buttons;
int sc_bytesread;
u_char sc_bytes[PROTOBYTES];
+#ifdef DEVFS
+ void *devfs_token;
+ void *n_devfs_token;
+#endif
} mse_sc[NMSE];
/* Flags */
@@ -238,17 +250,31 @@ int
mseattach(idp)
struct isa_device *idp;
{
- struct mse_softc *sc = &mse_sc[idp->id_unit];
+ char name[32];
+ int unit = idp->id_unit;
+ struct mse_softc *sc = &mse_sc[unit];
sc->sc_port = idp->id_iobase;
- kdc_mse[idp->id_unit].kdc_state = DC_IDLE;
+ kdc_mse[unit].kdc_state = DC_IDLE;
+#ifdef DEVFS
+ sprintf(name,"mse%d", unit);
+ /* path name devsw minor */
+ sc->devfs_token = devfs_add_devsw( "/", name, &mse_cdevsw, unit << 1,
+ /*type uid gid perm*/
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"nmse%d", unit);
+ /* path name devsw minor */
+ sc->n_devfs_token = devfs_add_devsw("/", name, &mse_cdevsw, (unit<<1)+1,
+ /*type uid gid perm*/
+ DV_CHR, 0, 0, 0600);
+#endif
return (1);
}
/*
* Exclusive open the mouse, initialize it and enable interrupts.
*/
-int
+static int
mseopen(dev, flags, fmt, p)
dev_t dev;
int flags;
@@ -281,7 +307,7 @@ mseopen(dev, flags, fmt, p)
/*
* mseclose: just turn off mouse innterrupts.
*/
-int
+static int
mseclose(dev, flags, fmt, p)
dev_t dev;
int flags;
@@ -304,7 +330,7 @@ mseclose(dev, flags, fmt, p)
* using bytes 4 and 5.
* (Yes this is cheesy, but it makes the X386 server happy, so...)
*/
-int
+static int
mseread(dev, uio, ioflag)
dev_t dev;
struct uio *uio;
@@ -366,7 +392,7 @@ mseread(dev, uio, ioflag)
/*
* mseselect: check for mouse input to be processed.
*/
-int
+static int
mseselect(dev, rw, p)
dev_t dev;
int rw;
@@ -575,12 +601,6 @@ mse_getati(port, dx, dy, but)
outb(port + MSE_PORTB, MSE_INPORT_INTREN);
}
-#ifdef JREMOD
-struct cdevsw mse_cdevsw =
- { mseopen, mseclose, mseread, nowrite, /*27*/
- noioc, nostop, nullreset, nodevtotty,/* mse */
- mseselect, nommap, NULL };
-
static mse_devsw_installed = 0;
static void mse_drvinit(void *unused)
@@ -588,23 +608,13 @@ static void mse_drvinit(void *unused)
dev_t dev;
if( ! mse_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&mse_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&mse_cdevsw, NULL);
mse_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "mse", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(msedev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,mse_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NMSE */
diff --git a/sys/i386/isa/pcaudio.c b/sys/i386/isa/pcaudio.c
index 7a285ea1..d0bb085 100644
--- a/sys/i386/isa/pcaudio.c
+++ b/sys/i386/isa/pcaudio.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: pcaudio.c,v 1.20 1995/11/30 05:58:53 julian Exp $
+ * $Id: pcaudio.c,v 1.21 1995/12/01 23:09:20 julian Exp $
*/
#include "pca.h"
@@ -39,6 +39,7 @@
#include <sys/file.h>
#include <sys/proc.h>
#include <sys/devconf.h>
+#include <sys/kernel.h>
#include <machine/clock.h>
#include <machine/pcaudioio.h>
@@ -52,11 +53,6 @@
#ifdef DEVFS
#include <sys/devfsext.h>
#endif /* DEVFS */
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#endif /* JREMOD */
-#define CDEV_MAJOR 24
#define BUF_SIZE 8192
#define SAMPLE_RATE 8000
@@ -85,6 +81,8 @@ static char buffer1[BUF_SIZE];
static char buffer2[BUF_SIZE];
static char volume_table[256];
+static void *pca_devfs_token;
+static void *pcac_devfs_token;
static int pca_sleep = 0;
static int pca_initialized = 0;
@@ -96,6 +94,18 @@ struct isa_driver pcadriver = {
pcaprobe, pcaattach, "pca",
};
+static d_open_t pcaopen;
+static d_close_t pcaclose;
+static d_write_t pcawrite;
+static d_ioctl_t pcaioctl;
+static d_select_t pcaselect;
+
+#define CDEV_MAJOR 24
+struct cdevsw pca_cdevsw =
+ { pcaopen, pcaclose, noread, pcawrite, /*24*/
+ pcaioctl, nostop, nullreset, nodevtotty,/* pcaudio */
+ pcaselect, nommap, NULL, "pca", NULL, -1 };
+
inline void conv(const void *table, void *buff, unsigned long n)
{
@@ -250,17 +260,6 @@ pca_registerdev(struct isa_device *id)
dev_attach(&kdc_pca[id->id_unit]);
}
-#ifdef DEVFS
-
-void pcadevfs_init(caddr_t data) /* data not used */
-{
- void * x;
-/* path name devsw minor type uid gid perm*/
- x=devfs_add_devsw("/", "pcaudio", CDEV_MAJOR, 0, DV_CHR, 0, 0, 0666);
- x=devfs_add_devsw("/", "pcaudioctl", CDEV_MAJOR, 128, DV_CHR, 0, 0, 0666);
-}
-#endif /*DEVFS*/
-
int
pcaattach(struct isa_device *dvp)
@@ -269,14 +268,18 @@ pcaattach(struct isa_device *dvp)
pca_init();
pca_registerdev(dvp);
#ifdef DEVFS
- pcadevfs_init(NULL);
+/* path name devsw minor type uid gid perm*/
+ pca_devfs_token = devfs_add_devsw("/", "pcaudio", &pca_cdevsw, 0,
+ DV_CHR, 0, 0, 0666);
+ pcac_devfs_token = devfs_add_devsw("/", "pcaudioctl", &pca_cdevsw, 128,
+ DV_CHR, 0, 0, 0666);
#endif /*DEVFS*/
return 1;
}
-int
+static int
pcaopen(dev_t dev, int flags, int fmt, struct proc *p)
{
/* audioctl device can always be opened */
@@ -304,7 +307,7 @@ pcaopen(dev_t dev, int flags, int fmt, struct proc *p)
}
-int
+static int
pcaclose(dev_t dev, int flags, int fmt, struct proc *p)
{
/* audioctl device can always be closed */
@@ -320,7 +323,7 @@ pcaclose(dev_t dev, int flags, int fmt, struct proc *p)
}
-int
+static int
pcawrite(dev_t dev, struct uio *uio, int flag)
{
int count, error, which;
@@ -364,7 +367,7 @@ pcawrite(dev_t dev, struct uio *uio, int flag)
}
-int
+static int
pcaioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
{
audio_info_t *auptr;
@@ -487,12 +490,6 @@ pcaselect(dev_t dev, int rw, struct proc *p)
}
}
-#ifdef JREMOD
-struct cdevsw pca_cdevsw =
- { pcaopen, pcaclose, noread, pcawrite, /*24*/
- pcaioctl, nostop, nullreset, nodevtotty,/* pcaudio */
- pcaselect, nommap, NULL };
-
static pca_devsw_installed = 0;
static void pca_drvinit(void *unused)
@@ -500,14 +497,13 @@ static void pca_drvinit(void *unused)
dev_t dev;
if( ! pca_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&pca_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&pca_cdevsw, NULL);
pca_devsw_installed = 1;
}
}
SYSINIT(pcadev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,pca_drvinit,NULL)
-#endif /* JREMOD */
#endif
diff --git a/sys/i386/isa/pcvt/pcvt_drv.c b/sys/i386/isa/pcvt/pcvt_drv.c
index 4060aaa..dca8922 100644
--- a/sys/i386/isa/pcvt/pcvt_drv.c
+++ b/sys/i386/isa/pcvt/pcvt_drv.c
@@ -118,7 +118,7 @@ static d_mmap_t pcmmap;
static struct cdevsw pcdevsw = {
pcopen, pcclose, pcread, pcwrite,
pcioctl, nullstop, noreset, pcdevtotty,
- ttselect, pcmmap, nostrategy,
+ ttselect, pcmmap, nostrategy, "vt", NULL, -1
};
#if PCVT_NETBSD > 100 /* NetBSD-current Feb 20 1995 */
diff --git a/sys/i386/isa/psm.c b/sys/i386/isa/psm.c
index 0ab8355..010f9db 100644
--- a/sys/i386/isa/psm.c
+++ b/sys/i386/isa/psm.c
@@ -58,6 +58,10 @@
#include <sys/file.h>
#include <sys/proc.h>
#include <sys/vnode.h>
+#include <sys/conf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#if 0
#include <sys/syslog.h> /* For debugging */
#endif
@@ -66,14 +70,6 @@
#include <i386/isa/isa_device.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 21
-#endif /*JREMOD*/
#define DATA 0 /* Offset for data port, read-write */
#define CNTRL 4 /* Offset for control port, write-only */
@@ -125,6 +121,10 @@ static struct psm_softc { /* Driver status information */
unsigned char status; /* Mouse button status */
unsigned char button; /* Previous mouse button status bits */
int x, y; /* accumulated motion in the X,Y axis */
+#ifdef DEVFS
+ void *devfs_token;
+ void *n_devfs_token;
+#endif
} psm_softc[NPSM];
#define OPEN 1 /* Device is open */
@@ -132,6 +132,18 @@ static struct psm_softc { /* Driver status information */
struct isa_driver psmdriver = { psmprobe, psmattach, "psm" };
+static d_open_t psmopen;
+static d_close_t psmclose;
+static d_read_t psmread;
+static d_ioctl_t psmioctl;
+static d_select_t psmselect;
+
+#define CDEV_MAJOR 21
+static struct cdevsw psm_cdevsw =
+ { psmopen, psmclose, psmread, nowrite, /*21*/
+ psmioctl, nostop, nullreset, nodevtotty,
+ psmselect, nommap, NULL, "psm", NULL, -1 };
+
#define AUX_PORT 0x60 /* AUX_PORT base (S.Yuen) */
static void psm_write_dev(int inport, u_char value)
@@ -212,11 +224,13 @@ int psmattach(struct isa_device *dvp)
return(0); /* XXX eh? usually 1 indicates success */
}
-int psmopen(dev_t dev, int flag, int fmt, struct proc *p)
+static int
+psmopen(dev_t dev, int flag, int fmt, struct proc *p)
{
int unit = PSMUNIT(dev);
struct psm_softc *sc;
int ioport;
+ char name[32];
/* Validate unit number */
@@ -254,11 +268,24 @@ int psmopen(dev_t dev, int flag, int fmt, struct proc *p)
/* Enable Bus Mouse interrupts */
psm_write_dev(ioport, PSM_DEV_ENABLE);
+
psm_poll_status();
outb(ioport+CNTRL, PSM_ENABLE);
psm_command(ioport, PSM_INT_ENABLE);
/* Successful open */
+#ifdef DEVFS
+ sprintf(name,"psm%d", unit);
+ /* path name devsw minor */
+ sc->devfs_token = devfs_add_devsw( "/", name, &psm_cdevsw, unit << 1,
+ /*type uid gid perm*/
+ DV_CHR, 0, 0, 0666);
+ sprintf(name,"npsm%d", unit);
+ /* path name devsw minor */
+ sc->n_devfs_token = devfs_add_devsw("/", name, &psm_cdevsw, (unit<<1)+1,
+ /*type uid gid perm*/
+ DV_CHR, 0, 0, 0666);
+#endif
return(0);
}
@@ -273,7 +300,8 @@ void psm_poll_status(void)
}
-int psmclose(dev_t dev, int flag, int fmt, struct proc *p)
+static int
+psmclose(dev_t dev, int flag, int fmt, struct proc *p)
{
int unit, ioport;
struct psm_softc *sc;
@@ -299,7 +327,8 @@ int psmclose(dev_t dev, int flag, int fmt, struct proc *p)
return(0);
}
-int psmread(dev_t dev, struct uio *uio, int flag)
+static int
+psmread(dev_t dev, struct uio *uio, int flag)
{
int s;
int error = 0; /* keep compiler quiet, even though initialisation
@@ -364,7 +393,8 @@ int psmread(dev_t dev, struct uio *uio, int flag)
return(error);
}
-int psmioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p)
+static int
+psmioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p)
{
struct psm_softc *sc;
struct mouseinfo info;
@@ -443,7 +473,8 @@ void psmintr(unit)
selwakeup(&sc->rsel);
}
-int psmselect(dev_t dev, int rw, struct proc *p)
+static int
+psmselect(dev_t dev, int rw, struct proc *p)
{
int s, ret;
struct psm_softc *sc = &psm_softc[PSMUNIT(dev)];
@@ -467,11 +498,6 @@ int psmselect(dev_t dev, int rw, struct proc *p)
return(ret);
}
-#ifdef JREMOD
-struct cdevsw psm_cdevsw =
- { psmopen, psmclose, psmread, nowrite, /*21*/
- psmioctl, nostop, nullreset, nodevtotty,/* psm mice */
- psmselect, nommap, NULL };
static psm_devsw_installed = 0;
@@ -480,24 +506,14 @@ static void psm_drvinit(void *unused)
dev_t dev;
if( ! psm_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&psm_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&psm_cdevsw, NULL);
psm_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "psm", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(psmdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,psm_drvinit,NULL)
-#endif /* JREMOD */
#endif
diff --git a/sys/i386/isa/rc.c b/sys/i386/isa/rc.c
index e4e3325..83db4c6 100644
--- a/sys/i386/isa/rc.c
+++ b/sys/i386/isa/rc.c
@@ -47,6 +47,9 @@
#include <sys/kernel.h>
#include <sys/syslog.h>
#include <sys/devconf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/clock.h>
@@ -57,14 +60,6 @@
#include <i386/isa/ic/cd180.h>
#include <i386/isa/rcreg.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 63
-#endif /*JREMOD*/
/* Prototypes */
int rcprobe __P((struct isa_device *));
@@ -105,6 +100,20 @@ struct isa_driver rcdriver = {
rcprobe, rcattach, "rc"
};
+static d_open_t rcopen;
+static d_close_t rcclose;
+static d_read_t rcread;
+static d_write_t rcwrite;
+static d_ioctl_t rcioctl;
+static d_stop_t rcstop;
+static d_ttycv_t rcdevtotty;
+
+#define CDEV_MAJOR 63
+struct cdevsw rc_cdevsw =
+ { rcopen, rcclose, rcread, rcwrite, /*63*/
+ rcioctl, rcstop, nxreset, rcdevtotty,/* rc */
+ ttselect, nommap, NULL, "rc", NULL, -1 };
+
/* Per-board structure */
static struct rc_softc {
u_int rcb_probed; /* 1 - probed, 2 - attached */
@@ -134,6 +143,9 @@ static struct rc_chans {
u_char *rc_obufend; /* end of output buf */
u_char rc_ibuf[4 * RC_IBUFSIZE]; /* input buffer */
u_char rc_obuf[RC_OBUFSIZE]; /* output buffer */
+#ifdef DEVFS
+ void *devfs_token;
+#endif
} rc_chans[NRC * CD180_NCHAN];
static int rc_scheduled_event = 0;
@@ -249,6 +261,7 @@ int rcattach(dvp)
struct rc_chans *rc = &rc_chans[dvp->id_unit * CD180_NCHAN];
static int rc_wakeup_started = 0;
struct tty *tp;
+ char name[32];
/* Thorooughly test the device */
if (rcb->rcb_probed != RC_PROBED)
@@ -279,6 +292,13 @@ int rcattach(dvp)
tp->t_lflag = tp->t_iflag = tp->t_oflag = 0;
tp->t_cflag = TTYDEF_CFLAG;
tp->t_ispeed = tp->t_ospeed = TTYDEF_SPEED;
+#ifdef DEVFS
+/* FIX THIS to reflect real devices */
+ sprintf(name,"rc%d.%d",dvp->id_unit,chan);
+ rc->devfs_token = devfs_add_devsw( "/", name,
+ &rc_cdevsw,(dvp->id_unit * CD180_NCHAN) + chan ,
+ DV_CHR, 0, 0, 0600);
+#endif
}
rcb->rcb_probed = RC_ATTACHED;
if (!rc_wakeup_started) {
@@ -693,7 +713,8 @@ done1:
goto repeat;
}
-void rcstop(tp, rw)
+static void
+rcstop(tp, rw)
register struct tty *tp;
int rw;
{
@@ -726,7 +747,8 @@ void rcstop(tp, rw)
enable_intr();
}
-int rcopen(dev, flag, mode, p)
+static int
+rcopen(dev, flag, mode, p)
dev_t dev;
int flag, mode;
struct proc *p;
@@ -817,7 +839,8 @@ out:
return error;
}
-int rcclose(dev, flag, mode, p)
+static int
+rcclose(dev, flag, mode, p)
dev_t dev;
int flag, mode;
struct proc *p;
@@ -874,7 +897,8 @@ register struct rc_chans *rc;
}
/* Read from line */
-int rcread(dev, uio, flag)
+static int
+rcread(dev, uio, flag)
dev_t dev;
struct uio *uio;
int flag;
@@ -885,7 +909,8 @@ int rcread(dev, uio, flag)
}
/* Write to line */
-int rcwrite(dev, uio, flag)
+static int
+rcwrite(dev, uio, flag)
dev_t dev;
struct uio *uio;
int flag;
@@ -1091,7 +1116,8 @@ struct rc_softc *rcb;
(void) rc_param(rc->rc_tp, &rc->rc_tp->t_termios);
}
-int rcioctl(dev, cmd, data, flag, p)
+static int
+rcioctl(dev, cmd, data, flag, p)
dev_t dev;
int cmd, flag;
caddr_t data;
@@ -1409,7 +1435,7 @@ char *comment;
}
#endif /* RCDEBUG */
-struct tty *
+static struct tty *
rcdevtotty(dev)
dev_t dev;
{
@@ -1501,12 +1527,6 @@ rc_wait0(nec, unit, chan, line)
unit, chan, line);
}
-#ifdef JREMOD
-struct cdevsw rc_cdevsw =
- { rcopen, rcclose, rcread, rcwrite, /*63*/
- rcioctl, rcstop, nxreset, rcdevtotty,/* rc */
- ttselect, nommap, NULL };
-
static rc_devsw_installed = 0;
static void rc_drvinit(void *unused)
@@ -1514,23 +1534,13 @@ static void rc_drvinit(void *unused)
dev_t dev;
if( ! rc_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&rc_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&rc_cdevsw, NULL);
rc_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "rc", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(rcdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,rc_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NRC */
diff --git a/sys/i386/isa/scd.c b/sys/i386/isa/scd.c
index edffabf..a111bba 100644
--- a/sys/i386/isa/scd.c
+++ b/sys/i386/isa/scd.c
@@ -41,7 +41,7 @@
*/
-/* $Id: scd.c,v 1.11 1995/11/29 10:47:50 julian Exp $ */
+/* $Id: scd.c,v 1.12 1995/11/29 14:39:53 julian Exp $ */
/* Please send any comments to micke@dynas.se */
@@ -64,6 +64,10 @@
#include <sys/dkbad.h>
#include <sys/disklabel.h>
#include <sys/devconf.h>
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/clock.h>
#include <machine/stdarg.h>
@@ -72,14 +76,6 @@
#include <i386/isa/isa_device.h>
#include <i386/isa/scdreg.h>
-#ifdef JREMOD
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 45
-#define BDEV_MAJOR 16
-#endif /*JREMOD */
#define scd_part(dev) ((minor(dev)) & 7)
#define scd_unit(dev) (((minor(dev)) & 0x38) >> 3)
@@ -148,6 +144,12 @@ static struct scd_data {
short audio_status;
struct buf head; /* head of buf queue */
struct scd_mbx mbx;
+#ifdef DEVFS
+ void *ra_devfs_token;
+ void *rc_devfs_token;
+ void *a_devfs_token;
+ void *c_devfs_token;
+#endif
} scd_data[NSCD];
/* prototypes */
@@ -184,12 +186,30 @@ static int scd_toc_header(int unit, struct ioc_toc_header *th);
static int scd_toc_entrys(int unit, struct ioc_read_toc_entry *te);
#define SCD_LASTPLUS1 170 /* don't ask, xcdplayer passes this in */
-extern int hz;
-
static int scd_probe(struct isa_device *dev);
static int scd_attach(struct isa_device *dev);
struct isa_driver scddriver = { scd_probe, scd_attach, "scd" };
+static d_open_t scdopen;
+static d_close_t scdclose;
+static d_ioctl_t scdioctl;
+static d_psize_t scdsize;
+static d_strategy_t scdstrategy;
+
+#define CDEV_MAJOR 45
+#define BDEV_MAJOR 16
+extern struct cdevsw scd_cdevsw;
+struct bdevsw scd_bdevsw =
+ { scdopen, scdclose, scdstrategy, scdioctl, /*16*/
+ nxdump, scdsize, 0, "scd", &scd_cdevsw, -1 };
+
+struct cdevsw scd_cdevsw =
+ { scdopen, scdclose, rawread, nowrite, /*45*/
+ scdioctl, nostop, nullreset, nodevtotty,/* sony cd */
+ seltrue, nommap, scdstrategy, "scd",
+ &scd_bdevsw, -1 };
+
+
static struct kern_devconf kdc_scd[NSCD] = { {
0, 0, 0, /* filled in by dev_attach */
"scd", 0, { MDDT_ISA, 0, "bio" },
@@ -213,7 +233,9 @@ scd_registerdev(struct isa_device *id)
int scd_attach(struct isa_device *dev)
{
- struct scd_data *cd = scd_data + dev->id_unit;
+ int unit = dev->id_unit;
+ struct scd_data *cd = scd_data + unit;
+ char name[32];
cd->iobase = dev->id_iobase; /* Already set by probe, but ... */
@@ -227,10 +249,33 @@ int scd_attach(struct isa_device *dev)
cd->flags = SCDINIT;
cd->audio_status = CD_AS_AUDIO_INVALID;
+#ifdef DEVFS
+#define SCD_UID 0
+#define SCD_GID 13
+ sprintf(name, "rscd%da",unit);
+ cd->ra_devfs_token = devfs_add_devsw(
+ "/", name, &scd_cdevsw, (unit * 8 ) + 0,
+ DV_CHR, SCD_UID, SCD_GID, 0600);
+
+ sprintf(name, "rscd%dc",unit);
+ cd->rc_devfs_token = devfs_add_devsw(
+ "/", name, &scd_cdevsw, (unit * 8 ) + RAW_PART,
+ DV_CHR, SCD_UID, SCD_GID, 0600);
+
+ sprintf(name, "scd%da",unit);
+ cd->a_devfs_token = devfs_add_devsw(
+ "/", name, &scd_bdevsw, (unit * 8 ) + 0,
+ DV_BLK, SCD_UID, SCD_GID, 0600);
+
+ sprintf(name, "scd%dc",unit);
+ cd->c_devfs_token = devfs_add_devsw(
+ "/", name, &scd_bdevsw, (unit * 8 ) + RAW_PART,
+ DV_BLK, SCD_UID, SCD_GID, 0600);
+#endif
return 1;
}
-int
+static int
scdopen(dev_t dev, int flags, int fmt, struct proc *p)
{
int unit,part,phys;
@@ -283,7 +328,7 @@ scdopen(dev_t dev, int flags, int fmt, struct proc *p)
return 0;
}
-int
+static int
scdclose(dev_t dev, int flags, int fmt, struct proc *p)
{
int unit,part,phys;
@@ -313,7 +358,7 @@ scdclose(dev_t dev, int flags, int fmt, struct proc *p)
return 0;
}
-void
+static void
scdstrategy(struct buf *bp)
{
struct scd_data *cd;
@@ -416,7 +461,7 @@ scd_start(int unit)
return;
}
-int
+static int
scdioctl(dev_t dev, int cmd, caddr_t addr, int flags, struct proc *p)
{
struct scd_data *cd;
@@ -492,7 +537,7 @@ scdioctl(dev_t dev, int cmd, caddr_t addr, int flags, struct proc *p)
}
}
-int
+static int
scdsize(dev_t dev)
{
return -1;
@@ -1529,46 +1574,22 @@ scd_toc_entrys (int unit, struct ioc_read_toc_entry *te)
}
-#ifdef JREMOD
-struct bdevsw scd_bdevsw =
- { scdopen, scdclose, scdstrategy, scdioctl, /*16*/
- nxdump, scdsize, 0 };
-
-struct cdevsw scd_cdevsw =
- { scdopen, scdclose, rawread, nowrite, /*45*/
- scdioctl, nostop, nullreset, nodevtotty,/* sony cd */
- seltrue, nommap, scdstrategy };
-
static scd_devsw_installed = 0;
static void scd_drvinit(void *unused)
{
dev_t dev;
- dev_t dev_chr;
if( ! scd_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&scd_cdevsw,NULL);
- dev_chr = dev;
- dev = makedev(BDEV_MAJOR,0);
- bdevsw_add(&dev,&scd_bdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&scd_cdevsw, NULL);
+ dev = makedev(BDEV_MAJOR, 0);
+ bdevsw_add(&dev,&scd_bdevsw, NULL);
scd_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "rscd", major(dev_chr), 0, DV_CHR, 0, 0, 0600);
- x=devfs_add_devsw(
- "/", "scd", major(dev), 0, DV_BLK, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(scddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,scd_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NSCD > 0 */
diff --git a/sys/i386/isa/si.c b/sys/i386/isa/si.c
index 1b732d9..cc1d6a7 100644
--- a/sys/i386/isa/si.c
+++ b/sys/i386/isa/si.c
@@ -30,7 +30,7 @@
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL THE AUTHORS BE LIABLE.
*
- * $Id: si.c,v 1.21 1995/12/06 23:50:27 bde Exp $
+ * $Id: si.c,v 1.22 1995/12/07 12:46:06 davidg Exp $
*/
#ifndef lint
@@ -53,6 +53,9 @@ static char si_copyright1[] = "@(#) (C) Specialix International, 1990,1992",
#include <sys/syslog.h>
#include <sys/malloc.h>
#include <sys/devconf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/clock.h>
@@ -84,12 +87,8 @@ static char si_copyright1[] = "@(#) (C) Specialix International, 1990,1992",
enum si_mctl { GET, SET, BIS, BIC };
-#ifdef JREMOD
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 68
-#endif /*JREMOD*/
+static const char devchar[] = "ABCDEFGHIJK";
+static const char portchar[] = "0123456789abcdefghijklmnopqrstuvwxyz";
static void si_command __P((struct si_port *, int, int));
@@ -110,6 +109,25 @@ extern int siprobe __P((struct isa_device *id));
extern int siattach __P((struct isa_device *id));
static void si_modem_state __P((struct si_port *pp, struct tty *tp, int hi_ip));
+struct isa_driver sidriver =
+ { siprobe, siattach, "si" };
+
+
+static d_open_t siopen;
+static d_close_t siclose;
+static d_read_t siread;
+static d_write_t siwrite;
+static d_ioctl_t siioctl;
+static d_stop_t sistop;
+static d_ttycv_t sidevtotty;
+
+#define CDEV_MAJOR 68
+struct cdevsw si_cdevsw =
+ { siopen, siclose, siread, siwrite, /*68*/
+ siioctl, sistop, nxreset, sidevtotty,/* si */
+ ttselect, nxmmap, NULL, "si", NULL, -1 };
+
+
#ifdef SI_DEBUG /* use: ``options "SI_DEBUG"'' in your config file */
/* XXX: should be varargs, I know.. but where's vprintf()? */
static void si_dprintf __P((/* struct si_port *pp, int flags, char *str, int a1, int a2, int a3, int a4, int a5, int a6 */));
@@ -142,6 +160,16 @@ struct si_softc {
int sc_eisa_iobase; /* EISA io port address */
int sc_eisa_irqbits;
struct kern_devconf sc_kdc;
+#ifdef DEVFS
+ struct {
+ void *ttyd;
+ void *ttyl;
+ void *ttyi;
+ void *cuaa;
+ void *cual;
+ void *cuai;
+ } devfs_token[32]; /* what is the max per card? */
+#endif
};
struct si_softc si_softc[NSI]; /* up to 4 elements */
@@ -460,6 +488,7 @@ siattach(id)
struct speedtab *spt;
int nmodule, nport, x, y;
int uart_type;
+ char name[32];
DPRINT((0, DBG_AUTOBOOT, "si%d: siattach\n", id->id_unit));
@@ -663,14 +692,39 @@ mem_fail:
done_chartimes = 1;
}
+#ifdef DEVFS
+/* path name devsw minor type uid gid perm*/
+ for ( x = 0; x < nport; x++ ) {
+ sprintf(name,"tty%c%c",devchar[unit],portchar[x + 1]);
+ sc->devfs_token[x].ttyd = devfs_add_devsw(
+ "/", name, &si_cdevsw, unit,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"ttyi%c%c",devchar[unit],portchar[x + 1]);
+ sc->devfs_token[x].ttyi = devfs_add_devsw(
+ "/", name, &si_cdevsw, unit + 32,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"ttyl%c%c",devchar[unit],portchar[x + 1]);
+ sc->devfs_token[x].ttyl = devfs_add_devsw(
+ "/", name, &si_cdevsw, unit + 64,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"cua%c%c",devchar[unit],portchar[x + 1]);
+ sc->devfs_token[x].cuaa = devfs_add_devsw(
+ "/", name, &si_cdevsw, unit + 128,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"cuai%c%c",devchar[unit],portchar[x + 1]);
+ sc->devfs_token[x].cuai = devfs_add_devsw(
+ "/", name, &si_cdevsw, unit + 160,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"cual%c%c",devchar[unit],portchar[x + 1]);
+ sc->devfs_token[x].cual = devfs_add_devsw(
+ "/", name, &si_cdevsw, unit + 192,
+ DV_CHR, 0, 0, 0600);
+ }
+#endif
return (1);
}
-struct isa_driver sidriver =
- { siprobe, siattach, "si" };
-
-
-int
+static int
siopen(dev, flag, mode, p)
dev_t dev;
int flag, mode;
@@ -841,7 +895,7 @@ out:
return(error);
}
-int
+static int
siclose(dev, flag, mode, p)
dev_t dev;
int flag, mode;
@@ -961,7 +1015,7 @@ sidtrwakeup(chan)
/*
* User level stuff - read and write
*/
-int
+static int
siread(dev, uio, flag)
register dev_t dev;
struct uio *uio;
@@ -981,7 +1035,7 @@ siread(dev, uio, flag)
}
-int
+static int
siwrite(dev, uio, flag)
dev_t dev;
struct uio *uio;
@@ -1020,7 +1074,7 @@ out:
}
-struct tty *
+static struct tty *
sidevtotty(dev_t dev)
{
struct si_port *pp;
@@ -1035,7 +1089,7 @@ sidevtotty(dev_t dev)
return (pp->sp_tty);
}
-int
+static int
siioctl(dev, cmd, data, flag, p)
dev_t dev;
int cmd;
@@ -2305,40 +2359,19 @@ si_mctl2str(cmd)
#endif /* DEBUG */
-#ifdef JREMOD
-struct cdevsw si_cdevsw =
- { siopen, siclose, siread, siwrite, /*68*/
- siioctl, sistop, nxreset, sidevtotty,/* si */
- ttselect, nxmmap, NULL };
static si_devsw_installed = 0;
static void si_drvinit(void *unused)
{
dev_t dev;
- dev_t dev_chr;
if( ! si_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&si_cdevsw,NULL);
- dev_chr = dev;
-#if defined(BDEV_MAJOR)
- dev = makedev(BDEV_MAJOR,0);
- bdevsw_add(&dev,&si_bdevsw,NULL);
-#endif /*BDEV_MAJOR*/
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&si_cdevsw, NULL);
si_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "si", major(dev_chr), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(sidev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,si_drvinit,NULL)
-#endif /* JREMOD */
diff --git a/sys/i386/isa/sio.c b/sys/i386/isa/sio.c
index b6b090f..d44d7bc 100644
--- a/sys/i386/isa/sio.c
+++ b/sys/i386/isa/sio.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
- * $Id: sio.c,v 1.123 1995/11/29 15:00:07 bde Exp $
+ * $Id: sio.c,v 1.124 1995/12/06 23:43:07 bde Exp $
*/
#include "sio.h"
@@ -59,6 +59,9 @@
#include <sys/malloc.h>
#include <sys/syslog.h>
#include <sys/devconf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/clock.h>
@@ -95,12 +98,6 @@
#define com_scr 7 /* scratch register for 16450-16550 (R/W) */
-#ifdef JREMOD
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 28
-#endif /*JREMOD*/
#include "crd.h"
@@ -251,6 +248,14 @@ struct com_s {
*/
u_char obuf1[256];
u_char obuf2[256];
+#ifdef DEVFS
+ void *devfs_token_ttyd;
+ void *devfs_token_ttyl;
+ void *devfs_token_ttyi;
+ void *devfs_token_cuaa;
+ void *devfs_token_cual;
+ void *devfs_token_cuai;
+#endif
};
/*
@@ -285,6 +290,8 @@ static void disc_optim __P((struct tty *tp, struct termios *t,
static int LoadSoftModem __P((int unit,int base_io, u_long size, u_char *ptr));
#endif /* DSI_SOFT_MODEM */
+static char driver_name[] = "sio";
+
/* table and macro for fast conversion from a unit number to its com struct */
static struct com_s *p_com_addr[NSIO];
#define com_addr(unit) (p_com_addr[unit])
@@ -292,9 +299,24 @@ static struct com_s *p_com_addr[NSIO];
static struct timeval intr_timestamp;
struct isa_driver siodriver = {
- sioprobe, sioattach, "sio"
+ sioprobe, sioattach, driver_name
};
+static d_open_t sioopen;
+static d_close_t sioclose;
+static d_read_t sioread;
+static d_write_t siowrite;
+static d_ioctl_t sioioctl;
+static d_stop_t siostop;
+static d_ttycv_t siodevtotty;
+
+#define CDEV_MAJOR 28
+struct cdevsw sio_cdevsw =
+ { sioopen, sioclose, sioread, siowrite, /*28*/
+ sioioctl, siostop, nxreset, siodevtotty,/* sio */
+ ttselect, nommap, NULL, driver_name, NULL, -1 };
+
+
static int comconsole = -1;
static speed_t comdefaultrate = TTYDEF_SPEED;
static u_int com_events; /* input chars + weighted output completions */
@@ -338,9 +360,10 @@ static struct speedtab comspeedtab[] = {
{ -1, -1 }
};
+static char chardev[] = "0123456789abcdefghijklmnopqrstuvwxyz";
static struct kern_devconf kdc_sio[NSIO] = { {
0, 0, 0, /* filled in by dev_attach */
- "sio", 0, { MDDT_ISA, 0, "tty" },
+ driver_name, 0, { MDDT_ISA, 0, "tty" },
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
&kdc_isa0, /* parent */
0, /* parentdata */
@@ -359,7 +382,7 @@ static int sioinit(struct pccard_dev *, int); /* init device */
static struct pccard_drv sio_info =
{
- "sio",
+ driver_name,
card_intr,
siounload,
siosuspend,
@@ -696,6 +719,7 @@ sioattach(isdp)
Port_t iobase;
int s;
int unit;
+ char name[32];
isdp->id_ri_flags |= RI_FAST;
iobase = isdp->id_iobase;
@@ -880,10 +904,37 @@ determined_type: ;
com_addr(unit) = com;
splx(s);
+#ifdef DEVFS
+/* path name devsw minor type uid gid perm*/
+ sprintf(name,"ttyd%c",chardev[unit]);
+ com->devfs_token_ttyd = devfs_add_devsw(
+ "/", name, &sio_cdevsw, unit,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"ttyid%c",chardev[unit]);
+ com->devfs_token_ttyi = devfs_add_devsw(
+ "/", name, &sio_cdevsw, unit+32,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"ttyld%c",chardev[unit]);
+ com->devfs_token_ttyl = devfs_add_devsw(
+ "/", name, &sio_cdevsw, unit+64,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"cuaa%c",chardev[unit]);
+ com->devfs_token_cuaa = devfs_add_devsw(
+ "/", name, &sio_cdevsw, unit+128,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"cuaia%c",chardev[unit]);
+ com->devfs_token_cuai = devfs_add_devsw(
+ "/", name, &sio_cdevsw, unit+160,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"cuala%c",chardev[unit]);
+ com->devfs_token_cual = devfs_add_devsw(
+ "/", name, &sio_cdevsw, unit+192,
+ DV_CHR, 0, 0, 0600);
+#endif
return (1);
}
-int
+static int
sioopen(dev, flag, mode, p)
dev_t dev;
int flag;
@@ -1055,7 +1106,7 @@ out:
return (error);
}
-int
+static int
sioclose(dev, flag, mode, p)
dev_t dev;
int flag;
@@ -1150,7 +1201,7 @@ comhardclose(com)
splx(s);
}
-int
+static int
sioread(dev, uio, flag)
dev_t dev;
struct uio *uio;
@@ -1170,7 +1221,7 @@ sioread(dev, uio, flag)
return ((*linesw[tp->t_line].l_read)(tp, uio, flag));
}
-int
+static int
siowrite(dev, uio, flag)
dev_t dev;
struct uio *uio;
@@ -1429,7 +1480,7 @@ cont:
}
}
-int
+static int
sioioctl(dev, cmd, data, flag, p)
dev_t dev;
int cmd;
@@ -2012,7 +2063,7 @@ comstart(tp)
splx(s);
}
-void
+static void
siostop(tp, rw)
struct tty *tp;
int rw;
@@ -2041,7 +2092,7 @@ siostop(tp, rw)
/* XXX should clear h/w fifos too. */
}
-struct tty *
+static struct tty *
siodevtotty(dev)
dev_t dev;
{
@@ -2559,12 +2610,6 @@ error:
}
#endif /* DSI_SOFT_MODEM */
-#ifdef JREMOD
-struct cdevsw sio_cdevsw =
- { sioopen, sioclose, sioread, siowrite, /*28*/
- sioioctl, siostop, nxreset, siodevtotty,/* sio */
- ttselect, nommap, NULL };
-
static sio_devsw_installed = 0;
static void sio_drvinit(void *unused)
@@ -2572,23 +2617,12 @@ static void sio_drvinit(void *unused)
dev_t dev;
if( ! sio_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&sio_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&sio_cdevsw, NULL);
sio_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "sio", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(siodev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,sio_drvinit,NULL)
-#endif /* JREMOD */
-
#endif /* NSIO > 0 */
diff --git a/sys/i386/isa/sound/soundcard.c b/sys/i386/isa/sound/soundcard.c
index 1b4ee3b..ad4888f 100644
--- a/sys/i386/isa/sound/soundcard.c
+++ b/sys/i386/isa/sound/soundcard.c
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: soundcard.c,v 1.35 1995/12/01 01:38:49 julian Exp $
+ * $Id: soundcard.c,v 1.36 1995/12/06 23:51:21 bde Exp $
*/
#include "sound_config.h"
@@ -36,15 +36,11 @@
#include "dev_table.h"
#include <i386/isa/isa_device.h>
-
-#ifdef JREMOD
#include <sys/conf.h>
#include <sys/kernel.h>
#ifdef DEVFS
#include <sys/devfsext.h>
#endif /*DEVFS*/
-#define CDEV_MAJOR 30
-#endif /*JREMOD*/
u_int snd1_imask;
@@ -69,12 +65,27 @@ static int soundcards_installed = 0; /* Number of installed
static int soundcard_configured = 0;
static struct fileinfo files[SND_NDEVS];
+static void * snd_devfs_token[SND_NDEVS];
+static void * sndstat_devfs_token;
struct selinfo selinfo[SND_NDEVS >> 4];
int sndprobe (struct isa_device *dev);
int sndattach (struct isa_device *dev);
static void sound_mem_init(void);
+static d_open_t sndopen;
+static d_close_t sndclose;
+static d_read_t sndread;
+static d_write_t sndwrite;
+static d_ioctl_t sndioctl;
+static d_select_t sndselect;
+
+#define CDEV_MAJOR 30
+struct cdevsw snd_cdevsw =
+ { sndopen, sndclose, sndread, sndwrite, /*30*/
+ sndioctl, nostop, nullreset, nodevtotty,/* sound */
+ sndselect, nommap, NULL, "snd", NULL, -1 };
+
struct isa_driver opldriver = {sndprobe, sndattach, "opl"};
struct isa_driver sbdriver = {sndprobe, sndattach, "sb"};
struct isa_driver sbxvidriver = {sndprobe, sndattach, "sbxvi"};
@@ -126,7 +137,7 @@ int x;
}
-int
+static int
sndread (dev_t dev, struct uio *buf, int ioflag)
{
int count = buf->uio_resid;
@@ -136,7 +147,7 @@ sndread (dev_t dev, struct uio *buf, int ioflag)
FIX_RETURN (sound_read_sw (dev, &files[dev], buf, count));
}
-int
+static int
sndwrite (dev_t dev, struct uio *buf, int ioflag)
{
int count = buf->uio_resid;
@@ -146,7 +157,7 @@ sndwrite (dev_t dev, struct uio *buf, int ioflag)
FIX_RETURN (sound_write_sw (dev, &files[dev], buf, count));
}
-int
+static int
sndopen (dev_t dev, int flags, int fmt, struct proc *p)
{
int retval;
@@ -174,7 +185,7 @@ sndopen (dev_t dev, int flags, int fmt, struct proc *p)
FIX_RETURN(sound_open_sw (dev, &files[dev]));
}
-int
+static int
sndclose (dev_t dev, int flags, int fmt, struct proc *p)
{
@@ -184,7 +195,7 @@ sndclose (dev_t dev, int flags, int fmt, struct proc *p)
FIX_RETURN (0);
}
-int
+static int
sndioctl (dev_t dev, int cmd, caddr_t arg, int flags, struct proc *p)
{
dev = minor (dev);
@@ -192,7 +203,7 @@ sndioctl (dev_t dev, int cmd, caddr_t arg, int flags, struct proc *p)
FIX_RETURN (sound_ioctl_sw (dev, &files[dev], cmd, (unsigned int) arg));
}
-int
+static int
sndselect (dev_t dev, int rw, struct proc *p)
{
dev = minor (dev);
@@ -302,6 +313,7 @@ sndattach (struct isa_device *dev)
static int generic_midi_initialized = 0;
unsigned long mem_start = 0xefffffffUL;
struct address_info hw_config;
+ char name[32];
unit = driver_to_voxunit(dev->id_driver);
hw_config.io_base = dev->id_iobase;
@@ -356,6 +368,62 @@ sndattach (struct isa_device *dev)
}
#endif
+#ifdef DEVFS
+/* XXX */ /* find out where to store the tokens.. */
+/* XXX */ /* should only create devices if that card has them */
+#define SND_UID 0
+#define SND_GID 13
+
+
+ sprintf(name,"mixer%d",unit);
+ snd_devfs_token[unit]=devfs_add_devsw(
+ "/", name, &snd_cdevsw, (unit << 4)+SND_DEV_CTL,
+ DV_CHR, SND_UID, SND_GID, 0660);
+
+#ifndef EXCLUDE_SEQUENCER
+ sprintf(name,"sequencer%d",unit);
+ snd_devfs_token[unit]=devfs_add_devsw(
+ "/", name, &snd_cdevsw, (unit << 4)+SND_DEV_SEQ,
+ DV_CHR, SND_UID, SND_GID, 0660);
+ sprintf(name,"music%d",unit);
+ snd_devfs_token[unit]=devfs_add_devsw(
+ "/", name, &snd_cdevsw, (unit << 4)+SND_DEV_SEQ2,
+ DV_CHR, SND_UID, SND_GID, 0660);
+#endif
+
+#ifndef EXCLUDE_MIDI
+ sprintf(name,"midi%d",unit);
+ snd_devfs_token[unit]=devfs_add_devsw(
+ "/", name, &snd_cdevsw, (unit << 4)+SND_DEV_MIDIN,
+ DV_CHR, SND_UID, SND_GID, 0660);
+#endif
+
+#ifndef EXCLUDE_AUDIO
+ sprintf(name,"dsp%d",unit);
+ snd_devfs_token[unit]=devfs_add_devsw(
+ "/", name, &snd_cdevsw, (unit << 4)+SND_DEV_DSP,
+ DV_CHR, SND_UID, SND_GID, 0660);
+ sprintf(name,"audio%d",unit);
+ snd_devfs_token[unit]=devfs_add_devsw(
+ "/", name, &snd_cdevsw, (unit << 4)+SND_DEV_AUDIO,
+ DV_CHR, SND_UID, SND_GID, 0660);
+ sprintf(name,"dspW%d",unit);
+ snd_devfs_token[unit]=devfs_add_devsw(
+ "/", name, &snd_cdevsw, (unit << 4)+SND_DEV_DSP16,
+ DV_CHR, SND_UID, SND_GID, 0660);
+#endif
+
+ sprintf(name,"pss%d",unit);
+ snd_devfs_token[unit]=devfs_add_devsw(
+ "/", name, &snd_cdevsw, (unit << 4)+SND_DEV_SNDPROC,
+ DV_CHR, SND_UID, SND_GID, 0660);
+
+ if ( ! sndstat_devfs_token) {
+ sndstat_devfs_token = devfs_add_devsw(
+ "/", "sndstat", &snd_cdevsw, 6,
+ DV_CHR, SND_UID, SND_GID, 0660);
+ }
+#endif /* DEVFS */
return TRUE;
}
@@ -484,36 +552,21 @@ snd_release_irq(int vect)
{
}
-#endif
-#ifdef JREMOD
-struct cdevsw snd_cdevsw =
- { sndopen, sndclose, sndread, sndwrite, /*30*/
- sndioctl, nostop, nullreset, nodevtotty,/* sound */
- sndselect, nommap, NULL };
-
static snd_devsw_installed = 0;
-static void snd_drvinit(void *unused)
+static void
+snd_drvinit(void *unused)
{
dev_t dev;
if( ! snd_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&snd_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&snd_cdevsw, NULL);
snd_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "snd", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(snddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,snd_drvinit,NULL)
-#endif /* JREMOD */
+#endif
diff --git a/sys/i386/isa/spigot.c b/sys/i386/isa/spigot.c
index ac74e31..e542887 100644
--- a/sys/i386/isa/spigot.c
+++ b/sys/i386/isa/spigot.c
@@ -64,6 +64,10 @@ error "Can only have 1 spigot configured."
#include <sys/devconf.h>
#include <sys/errno.h>
#include <sys/mman.h>
+#include <sys/conf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /* DEVFS */
#include <machine/frame.h>
#include <machine/spigot.h>
@@ -72,13 +76,6 @@ error "Can only have 1 spigot configured."
#include <i386/isa/isa.h>
#include <i386/isa/isa_device.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 11
-#endif /*JREMOD*/
struct spigot_softc {
u_long flags;
@@ -86,6 +83,9 @@ struct spigot_softc {
struct proc *p;
u_long signal_num;
u_short irq;
+#ifdef DEVFS
+ void *devfs_token;
+#endif
} spigot_softc[NSPIGOT];
/* flags in softc */
@@ -99,6 +99,21 @@ int spigot_attach(struct isa_device *id);
struct isa_driver spigotdriver = {spigot_probe, spigot_attach, "spigot"};
+static d_open_t spigot_open;
+static d_close_t spigot_close;
+static d_rdwr_t spigot_rw;
+static d_read_t spigot_read;
+static d_write_t spigot_write;
+static d_ioctl_t spigot_ioctl;
+static d_select_t spigot_select;
+static d_mmap_t spigot_mmap;
+
+#define CDEV_MAJOR 11
+struct cdevsw spigot_cdevsw =
+ { spigot_open, spigot_close, spigot_read, spigot_write, /*11*/
+ spigot_ioctl, nostop, nullreset, nodevtotty,/* Spigot */
+ spigot_select, spigot_mmap, NULL, "spigot", NULL, -1 };
+
static struct kern_devconf kdc_spigot[NSPIGOT] = { {
0, /* kdc_next -> filled in by dev_attach() */
0, /* kdc_rlink -> filled in by dev_attach() */
@@ -155,17 +170,26 @@ struct spigot_softc *ss=(struct spigot_softc *)&spigot_softc[devp->id_unit];
int
spigot_attach(struct isa_device *devp)
{
-struct spigot_softc *ss=(struct spigot_softc *)&spigot_softc[devp->id_unit];
+ char name[32];
+ int unit;
+ struct spigot_softc *ss= &spigot_softc[unit = devp->id_unit];
- kdc_spigot[devp->id_unit].kdc_state = DC_UNKNOWN;
+ kdc_spigot[unit].kdc_state = DC_UNKNOWN;
ss->maddr = kvtop(devp->id_maddr);
ss->irq = devp->id_irq;
+#ifdef DEVFS
+ sprintf(name,"spigot%d",unit);
+/* path name devsw minor type uid gid perm*/
+ ss->devfs_token = devfs_add_devsw( "/", name,
+ &spigot_cdevsw, unit,
+ DV_CHR, 0, 0, 0600);
+#endif
return 1;
}
-int
+static int
spigot_open(dev_t dev, int flags, int fmt, struct proc *p)
{
struct spigot_softc *ss = (struct spigot_softc *)&spigot_softc[UNIT(dev)];
@@ -183,7 +207,7 @@ struct spigot_softc *ss = (struct spigot_softc *)&spigot_softc[UNIT(dev)];
return 0;
}
-int
+static int
spigot_close(dev_t dev, int flags, int fmt, struct proc *p)
{
struct spigot_softc *ss = (struct spigot_softc *)&spigot_softc[UNIT(dev)];
@@ -197,20 +221,20 @@ struct spigot_softc *ss = (struct spigot_softc *)&spigot_softc[UNIT(dev)];
return 0;
}
-int
+static int
spigot_write(dev_t dev, struct uio *uio, int ioflag)
{
return ENXIO;
}
-int
+static int
spigot_read(dev_t dev, struct uio *uio, int ioflag)
{
return ENXIO;
}
-int
+static int
spigot_ioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
{
int error;
@@ -249,7 +273,7 @@ struct spigot_info *info;
return 0;
}
-int
+static int
spigot_select(dev_t dev, int rw, struct proc *p)
{
@@ -269,7 +293,7 @@ struct spigot_softc *ss = (struct spigot_softc *)&spigot_softc[unit];
psignal(ss->p, ss->signal_num);
}
-int
+static int
spigot_mmap(dev_t dev, int offset, int nprot)
{
struct spigot_softc *ss = (struct spigot_softc *)&spigot_softc[0];
@@ -286,12 +310,6 @@ struct spigot_softc *ss = (struct spigot_softc *)&spigot_softc[0];
}
-#ifdef JREMOD
-struct cdevsw spigot_cdevsw =
- { spigot_open, spigot_close, spigot_read, spigot_write, /*11*/
- spigot_ioctl, nostop, nullreset, nodevtotty,/* Spigot */
- spigot_select, spigot_mmap, NULL };
-
static spigot_devsw_installed = 0;
static void spigot_drvinit(void *unused)
@@ -299,23 +317,13 @@ static void spigot_drvinit(void *unused)
dev_t dev;
if( ! spigot_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&spigot_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&spigot_cdevsw, NULL);
spigot_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "spigot", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(spigotdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,spigot_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NSPIGOT */
diff --git a/sys/i386/isa/spkr.c b/sys/i386/isa/spkr.c
index 9d45e33..160c18b 100644
--- a/sys/i386/isa/spkr.c
+++ b/sys/i386/isa/spkr.c
@@ -4,7 +4,7 @@
* v1.4 by Eric S. Raymond (esr@snark.thyrsus.com) Aug 1993
* modified for FreeBSD by Andrew A. Chernov <ache@astral.msk.su>
*
- * $Id: spkr.c,v 1.19 1995/11/29 10:47:57 julian Exp $
+ * $Id: spkr.c,v 1.20 1995/11/29 14:39:59 julian Exp $
*/
#include "speaker.h"
@@ -18,21 +18,29 @@
#include <sys/buf.h>
#include <sys/proc.h>
#include <sys/uio.h>
+#include <sys/conf.h>
#include <i386/isa/isa.h>
#include <i386/isa/timerreg.h>
#include <machine/clock.h>
#include <machine/speaker.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#define CDEV_MAJOR 26
-#endif /*JREMOD*/
#ifdef DEVFS
#include <sys/devfsext.h>
+void *devfs_token;
#endif
+static d_open_t spkropen;
+static d_close_t spkrclose;
+static d_write_t spkrwrite;
+static d_ioctl_t spkrioctl;
+
+#define CDEV_MAJOR 26
+struct cdevsw spkr_cdevsw =
+ { spkropen, spkrclose, noread, spkrwrite, /*26*/
+ spkrioctl, nostop, nullreset, nodevtotty,/* spkr */
+ seltrue, nommap, NULL, "spkr", NULL, -1 };
/**************** MACHINE DEPENDENT PART STARTS HERE *************************
*
@@ -569,11 +577,6 @@ struct proc *p;
return(EINVAL);
}
-#ifdef JREMOD
-struct cdevsw spkr_cdevsw =
- { spkropen, spkrclose, noread, spkrwrite, /*26*/
- spkrioctl, nostop, nullreset, nodevtotty,/* spkr */
- seltrue, nommap, NULL };
static spkr_devsw_installed = 0;
@@ -582,24 +585,19 @@ static void spkr_drvinit(void *unused)
dev_t dev;
if( ! spkr_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&spkr_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&spkr_cdevsw, NULL);
spkr_devsw_installed = 1;
#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "spkr", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
+ devfs_token = devfs_add_devsw("/", "spkr",
+ &spkr_cdevsw, 0,
+ DV_CHR, 0, 0, 0600);
#endif
}
}
SYSINIT(spkrdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,spkr_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NSPEAKER > 0 */
/* spkr.c ends here */
diff --git a/sys/i386/isa/syscons.c b/sys/i386/isa/syscons.c
index 6c736ca..db7c92d 100644
--- a/sys/i386/isa/syscons.c
+++ b/sys/i386/isa/syscons.c
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: syscons.c,v 1.133 1995/12/06 23:50:36 bde Exp $
+ * $Id: syscons.c,v 1.134 1995/12/07 12:46:08 davidg Exp $
*/
#include "sc.h"
@@ -45,6 +45,9 @@
#include <sys/errno.h>
#include <sys/malloc.h>
#include <sys/devconf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif
#include <machine/clock.h>
#include <machine/cons.h>
@@ -69,6 +72,7 @@
#define MAXCONS 16
#endif
+
/* this may break on older VGA's but is usefull on real 32 bit systems */
#define bcopyw bcopy
@@ -84,6 +88,7 @@ static default_attr kernel_default = {
static scr_stat main_console;
static scr_stat *console[MAXCONS];
+static void *sc_devfs_token[MAXCONS];
scr_stat *cur_console;
static scr_stat *new_scp, *old_scp;
static term_stat kernel_console;
@@ -159,8 +164,7 @@ static d_mmap_t scmmap;
static struct cdevsw scdevsw = {
scopen, scclose, scread, scwrite,
scioctl, nullstop, noreset, scdevtotty,
- ttselect, scmmap, nostrategy,
-};
+ ttselect, scmmap, nostrategy, "sc", NULL, -1 };
/*
* Calculate hardware attributes word using logical attributes mask and
@@ -283,7 +287,9 @@ scresume(void *dummy)
int
scattach(struct isa_device *dev)
{
- scr_stat *scp;
+ scr_stat *scp;
+ int vc;
+ char name[32];
scinit();
configuration = dev->id_flags;
@@ -345,6 +351,13 @@ scattach(struct isa_device *dev)
apm_hook_establish(APM_HOOK_RESUME , &scp->r_hook);
#endif
+#ifdef DEVFS
+ for ( vc = 0 ; vc < MAXCONS; vc++) {
+ sprintf(name,"ttyv%x", vc);
+ sc_devfs_token[vc] = devfs_add_devsw("/" ,name, &scdevsw, vc,
+ DV_CHR, 0, 0, 0600 );
+ }
+#endif
register_cdev("sc", &scdevsw);
return 0;
diff --git a/sys/i386/isa/tw.c b/sys/i386/isa/tw.c
index 7eb75e0..f8406f0 100644
--- a/sys/i386/isa/tw.c
+++ b/sys/i386/isa/tw.c
@@ -138,23 +138,18 @@
#include "uio.h"
#include "syslog.h"
#include "select.h"
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#define MIN(a,b) ((a)<(b)?(a):(b))
#ifdef HIRESTIME
-#include "time.h"
+#include <sys/time.h>
#endif /* HIRESTIME */
#include "i386/isa/isa_device.h"
-#ifdef JREMOD
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 19
-#endif /*JREMOD*/
/*
@@ -211,6 +206,17 @@ struct isa_driver twdriver = {
twprobe, twattach, "tw"
};
+static d_open_t twopen;
+static d_close_t twclose;
+static d_read_t twread;
+static d_write_t twwrite;
+static d_select_t twselect;
+
+#define CDEV_MAJOR 19
+struct cdevsw tw_cdevsw =
+ { twopen, twclose, twread, twwrite, /*19*/
+ noioc, nullstop, nullreset, nodevtotty, /* tw */
+ twselect, nommap, nostrat, "tw", NULL, -1 };
/*
* Software control structure for TW523
*/
@@ -240,6 +246,9 @@ struct tw_sc {
int sc_xtimes[22]; /* Times for bits in current xmit packet */
int sc_rtimes[22]; /* Times for bits in current rcv packet */
#endif /* HIRESTIME */
+#ifdef DEVFS
+ void *devfs_token; /* store the devfs handle */
+#endif
} tw_sc[NTW];
static void twdelay25();
@@ -348,11 +357,20 @@ int twattach(idp)
struct isa_device *idp;
{
struct tw_sc *sc;
+ char name[32];
+ int unit;
- sc = &tw_sc[idp->id_unit];
+ sc = &tw_sc[unit = idp->id_unit];
sc->sc_port = idp->id_iobase;
sc->sc_state = 0;
+#ifdef DEVFS
+/* path name devsw minor type uid gid perm*/
+ sprintf(name,"tw%d", unit);
+ sc->devfs_token = devfs_add_devsw( "/", name, &tw_cdevsw, unit,
+ DV_CHR, 0, 0, 0600);
+#endif
+
return (1);
}
@@ -992,11 +1010,6 @@ static int twchecktime(int target, int tol)
}
#endif /* HIRESTIME */
-#ifdef JREMOD
-struct cdevsw tw_cdevsw =
- { twopen, twclose, twread, twwrite, /*19*/
- noioc, nullstop, nullreset, nodevtotty,/* tw */
- twselect, nommap, nostrat };
static tw_devsw_installed = 0;
@@ -1005,23 +1018,13 @@ static void tw_drvinit(void *unused)
dev_t dev;
if( ! tw_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&tw_cdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&tw_cdevsw, NULL);
tw_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "tw", major(dev), 0, DV_CHR, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(twdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,tw_drvinit,NULL)
-#endif /* JREMOD */
#endif NTW
diff --git a/sys/i386/isa/wcd.c b/sys/i386/isa/wcd.c
index f56dc46..2b57f3a 100644
--- a/sys/i386/isa/wcd.c
+++ b/sys/i386/isa/wcd.c
@@ -29,17 +29,33 @@
#include <sys/devconf.h>
#include <sys/disklabel.h>
#include <sys/cdio.h>
-#include <i386/include/cpufunc.h>
-#include <i386/isa/atapi.h>
-
-#ifdef JREMOD
#include <sys/conf.h>
#ifdef DEVFS
#include <sys/devfsext.h>
#endif /*DEVFS*/
+#include <i386/include/cpufunc.h>
+#include <i386/isa/atapi.h>
+
+static d_open_t wcdropen;
+static d_open_t wcdbopen;
+static d_close_t wcdrclose;
+static d_close_t wcdbclose;
+static d_ioctl_t wcdioctl;
+static d_strategy_t wcdstrategy;
+
#define CDEV_MAJOR 69
#define BDEV_MAJOR 19
-#endif /*JREMOD */
+extern struct cdevsw wcd_cdevsw;
+struct bdevsw wcd_bdevsw =
+ { wcdbopen, wcdbclose, wcdstrategy, wcdioctl, /*19*/
+ nxdump, zerosize, 0, "wcd", &wcd_cdevsw, -1 };
+
+struct cdevsw wcd_cdevsw =
+ { wcdropen, wcdrclose, rawread, nowrite, /*69*/
+ wcdioctl, nostop, nullreset, nodevtotty,/* atapi */
+ seltrue, nommap, wcdstrategy, "wcd",
+ &wcd_bdevsw, -1 };
+
extern int wcdattach(struct atapi*, int, struct atapi_params*, int, struct kern_devconf*);
@@ -205,6 +221,12 @@ struct wcd {
struct subchan subchan; /* Subchannel info */
struct kern_devconf cf; /* Driver configuration info */
char description[80]; /* Device description */
+#ifdef DEVFS
+ void *ra_devfs_token;
+ void *rc_devfs_token;
+ void *a_devfs_token;
+ void *c_devfs_token;
+#endif
};
struct wcd *wcdtab[NUNIT]; /* Drive info by unit number */
@@ -262,6 +284,8 @@ wcdattach (struct atapi *ata, int unit, struct atapi_params *ap, int debug,
{
struct wcd *t;
struct atapires result;
+ int lun;
+ char name[32];
if (wcdnlun >= NUNIT) {
printf ("wcd: too many units\n");
@@ -281,7 +305,7 @@ wcdattach (struct atapi *ata, int unit, struct atapi_params *ap, int debug,
bzero (t, sizeof (struct wcd));
t->ata = ata;
t->unit = unit;
- t->lun = wcdnlun++;
+ lun = t->lun = wcdnlun++;
t->param = ap;
t->flags = F_MEDIA_CHANGED;
t->refcnt = 0;
@@ -325,6 +349,29 @@ wcdattach (struct atapi *ata, int unit, struct atapi_params *ap, int debug,
ap->model, sizeof(ap->model));
dev_attach (&t->cf);
+#ifdef DEVFS
+#define WDC_UID 0
+#define WDC_GID 13
+ sprintf(name, "rwcd%da",lun);
+ t->ra_devfs_token = devfs_add_devsw(
+ "/", name, &wcd_cdevsw, (lun * 8),
+ DV_CHR, WDC_UID, WDC_GID, 0600);
+
+ sprintf(name, "rwcd%dc",lun);
+ t->rc_devfs_token = devfs_add_devsw(
+ "/", name, &wcd_cdevsw, (lun * 8) + RAW_PART,
+ DV_CHR, WDC_UID, WDC_GID, 0600);
+
+ sprintf(name, "wcd%da",lun);
+ t->a_devfs_token = devfs_add_devsw(
+ "/", name, &wcd_bdevsw, (lun * 8),
+ DV_BLK, WDC_UID, WDC_GID, 0600);
+
+ sprintf(name, "wcd%dc",lun);
+ t->c_devfs_token = devfs_add_devsw(
+ "/", name, &wcd_bdevsw, (lun * 8) + RAW_PART,
+ DV_BLK, WDC_UID, WDC_GID, 0600);
+#endif
return (1);
}
@@ -1074,21 +1121,13 @@ static int wcd_eject (struct wcd *t)
#include <sys/lkm.h>
/*
- * Device table entries.
- * These get copied at modload time into the kernels
- * lkm dummy device driver entries (see sys/i386/i386/conf.c).
- */
-struct bdevsw dev_wcd = { wcdbopen, wcdbclose, wcdstrategy, wcdioctl,
- nodump, nopsize, 0 };
-struct cdevsw dev_rwcd = { wcdropen, wcdrclose, rawread, nowrite, wcdioctl,
- nostop, nullreset, nodevtotty, seltrue, nommap,
- wcdstrategy };
-/*
* Construct lkm_dev structures (see lkm.h).
* Our bdevsw/cdevsw slot numbers are 19/69.
*/
-MOD_DEV(wcd, LM_DT_BLOCK, 19, &dev_wcd);
-MOD_DEV(rwcd, LM_DT_CHAR, 69, &dev_rwcd);
+
+
+MOD_DEV(wcd, LM_DT_BLOCK, BDEV_MAJOR, &wcd_bdevsw);
+MOD_DEV(rwcd, LM_DT_CHAR, CDEV_MAJOR, &wcd_cdevsw);
/*
* Function called when loading the driver.
@@ -1169,47 +1208,22 @@ int wcd_mod (struct lkm_table *lkmtp, int cmd, int ver)
}
#endif /* WCD_MODULE */
-#ifdef JREMOD
-struct bdevsw wcd_bdevsw =
- { wcdbopen, wcdbclose, wcdstrategy, wcdioctl, /*19*/
- nxdump, zerosize, 0 };
-
-struct cdevsw wcd_cdevsw =
- { wcdropen, wcdrclose, rawread, nowrite, /*69*/
- wcdioctl, nostop, nullreset, nodevtotty,/* atapi */
- seltrue, nommap, wcdstrategy };
-
static wcd_devsw_installed = 0;
static void wcd_drvinit(void *unused)
{
dev_t dev;
- dev_t dev_chr;
if( ! wcd_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&wcd_cdevsw,NULL);
- dev_chr = dev;
- dev = makedev(BDEV_MAJOR,0);
- bdevsw_add(&dev,&wcd_bdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&wcd_cdevsw, NULL);
+ dev = makedev(BDEV_MAJOR, 0);
+ bdevsw_add(&dev,&wcd_bdevsw, NULL);
wcd_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "rwcd", major(dev_chr), 0, DV_CHR, 0, 0, 0600);
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "wcd", major(dev), 0, DV_BLK, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(wcddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,wcd_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NWCD && NWDC && ATAPI */
diff --git a/sys/i386/isa/wd.c b/sys/i386/isa/wd.c
index 354b0bb..1822a8b 100644
--- a/sys/i386/isa/wd.c
+++ b/sys/i386/isa/wd.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)wd.c 7.2 (Berkeley) 5/9/91
- * $Id: wd.c,v 1.95 1995/11/29 14:40:08 julian Exp $
+ * $Id: wd.c,v 1.96 1995/12/07 12:46:12 davidg Exp $
*/
/* TODO:
@@ -78,6 +78,9 @@
#include <sys/uio.h>
#include <sys/malloc.h>
#include <sys/devconf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <machine/bootinfo.h>
#include <machine/clock.h>
#include <machine/cons.h>
@@ -108,13 +111,6 @@ extern void wdstart(int ctrlr);
#define WDOPT_SLEEPHACK 0x4000
#define WDOPT_MULTIMASK 0x00ff
-#ifdef JREMOD
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 3
-#define BDEV_MAJOR 0
-#endif /*JREMOD */
static int wd_goaway(struct kern_devconf *, int);
static int wdc_goaway(struct kern_devconf *, int);
@@ -305,6 +301,27 @@ struct isa_driver wdcdriver = {
wdprobe, wdattach, "wdc",
};
+static d_open_t wdopen;
+static d_close_t wdclose;
+static d_ioctl_t wdioctl;
+static d_dump_t wddump;
+static d_size_t wdsize;
+static d_strategy_t wdstrategy;
+
+#define CDEV_MAJOR 3
+#define BDEV_MAJOR 0
+extern struct cdevsw wd_cdevsw;
+struct bdevsw wd_bdevsw =
+ { wdopen, wdclose, wdstrategy, wdioctl, /*0*/
+ wddump, wdsize, 0, "wd", &wd_cdevsw, -1 };
+
+struct cdevsw wd_cdevsw =
+ { wdopen, wdclose, rawread, rawwrite, /*3*/
+ wdioctl, nostop, nullreset, nodevtotty,/* wd */
+ seltrue, nommap, wdstrategy, "wd",
+ &wd_bdevsw, -1 };
+
+
/*
* Probe for controller.
*/
@@ -2127,46 +2144,22 @@ wdwait(struct disk *du, u_char bits_wanted, int timeout)
return (-1);
}
-#ifdef JREMOD
-struct bdevsw wd_bdevsw =
- { wdopen, wdclose, wdstrategy, wdioctl, /*0*/
- wddump, wdsize, 0 };
-
-struct cdevsw wd_cdevsw =
- { wdopen, wdclose, rawread, rawwrite, /*3*/
- wdioctl, nostop, nullreset, nodevtotty,/* wd */
- seltrue, nommap, wdstrategy };
-
static wd_devsw_installed = 0;
static void wd_drvinit(void *unused)
{
dev_t dev;
- dev_t dev_chr;
if( ! wd_devsw_installed ) {
dev = makedev(CDEV_MAJOR,0);
cdevsw_add(&dev,&wd_cdevsw,NULL);
- dev_chr = dev;
dev = makedev(BDEV_MAJOR,0);
bdevsw_add(&dev,&wd_bdevsw,NULL);
wd_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "rwd", major(dev_chr), 0, DV_CHR, 0, 0, 0600);
- x=devfs_add_devsw(
- "/", "wd", major(dev), 0, DV_BLK, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(wddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,wd_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NWDC > 0 */
diff --git a/sys/i386/isa/wt.c b/sys/i386/isa/wt.c
index 7e4a062..6fc75d8 100644
--- a/sys/i386/isa/wt.c
+++ b/sys/i386/isa/wt.c
@@ -19,7 +19,7 @@
* the original CMU copyright notice.
*
* Version 1.3, Thu Nov 11 12:09:13 MSK 1993
- * $Id: wt.c,v 1.22 1995/11/29 10:48:03 julian Exp $
+ * $Id: wt.c,v 1.23 1995/11/29 14:40:11 julian Exp $
*
*/
@@ -69,6 +69,10 @@
#include <sys/mtio.h>
#include <sys/proc.h>
#include <sys/devconf.h>
+#include <sys/conf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
#include <vm/vm_param.h>
#include <machine/clock.h>
@@ -76,14 +80,6 @@
#include <i386/isa/isa_device.h>
#include <i386/isa/wtreg.h>
-#ifdef JREMOD
-#include <sys/conf.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-#define CDEV_MAJOR 10
-#define BDEV_MAJOR 3
-#endif /*JREMOD */
/*
* Uncomment this to enable internal device tracing.
@@ -167,6 +163,10 @@ typedef struct {
unsigned short DATAPORT, CMDPORT, STATPORT, CTLPORT, SDMAPORT, RDMAPORT;
unsigned char BUSY, NOEXCEP, RESETMASK, RESETVAL;
unsigned char ONLINE, RESET, REQUEST, IEN;
+#ifdef DEVFS
+ void *devfs_token;
+ void *devfs_token_r;
+#endif
} wtinfo_t;
wtinfo_t wttab[NWT]; /* tape info by unit number */
@@ -196,6 +196,28 @@ static struct kern_devconf kdc_wt[NWT] = { {
DC_CLS_TAPE /* class */
} };
+static d_open_t wtopen;
+static d_close_t wtclose;
+static d_ioctl_t wtioctl;
+static d_dump_t wtdump;
+static d_psize_t wtsize;
+static d_strategy_t wtstrategy;
+
+#define CDEV_MAJOR 10
+#define BDEV_MAJOR 3
+
+extern struct cdevsw wt_cdevsw;
+struct bdevsw wt_bdevsw =
+ { wtopen, wtclose, wtstrategy, wtioctl, /*3*/
+ wtdump, wtsize, B_TAPE, "wt", &wt_cdevsw, -1 };
+
+struct cdevsw wt_cdevsw =
+ { wtopen, wtclose, rawread, rawwrite, /*10*/
+ wtioctl, nostop, nullreset, nodevtotty,/* wt */
+ seltrue, nommap, wtstrategy, "wt",
+ &wt_bdevsw, -1 };
+
+
static inline void
wt_registerdev(struct isa_device *id)
{
@@ -261,6 +283,7 @@ static int
wtattach (struct isa_device *id)
{
wtinfo_t *t = wttab + id->id_unit;
+ char name[32];
if (t->type == ARCHIVE) {
printf ("wt%d: type <Archive>\n", t->unit);
@@ -271,6 +294,16 @@ wtattach (struct isa_device *id)
t->dens = -1; /* unknown density */
kdc_wt[id->id_unit].kdc_state = DC_IDLE;
+#ifdef DEVFS
+ sprintf(name,"rwt%d",id->id_unit);
+ t->devfs_token_r = devfs_add_devsw(
+ "/", name, &wt_cdevsw, id->id_unit,
+ DV_CHR, 0, 0, 0600);
+ sprintf(name,"wt%d",id->id_unit);
+ t->devfs_token = devfs_add_devsw(
+ "/", name, &wt_bdevsw, id->id_unit,
+ DV_BLK, 0, 0, 0600);
+#endif
return (1);
}
@@ -975,46 +1008,22 @@ static int wtstatus (wtinfo_t *t)
}
-#ifdef JREMOD
-struct bdevsw wt_bdevsw =
- { wtopen, wtclose, wtstrategy, wtioctl, /*3*/
- wtdump, wtsize, B_TAPE };
-
-struct cdevsw wt_cdevsw =
- { wtopen, wtclose, rawread, rawwrite, /*10*/
- wtioctl, nostop, nullreset, nodevtotty,/* wt */
- seltrue, nommap, wtstrategy };
-
static wt_devsw_installed = 0;
static void wt_drvinit(void *unused)
{
dev_t dev;
- dev_t dev_chr;
if( ! wt_devsw_installed ) {
- dev = makedev(CDEV_MAJOR,0);
- cdevsw_add(&dev,&wt_cdevsw,NULL);
- dev_chr = dev;
- dev = makedev(BDEV_MAJOR,0);
- bdevsw_add(&dev,&wt_bdevsw,NULL);
+ dev = makedev(CDEV_MAJOR, 0);
+ cdevsw_add(&dev,&wt_cdevsw, NULL);
+ dev = makedev(BDEV_MAJOR, 0);
+ bdevsw_add(&dev,&wt_bdevsw, NULL);
wt_devsw_installed = 1;
-#ifdef DEVFS
- {
- int x;
-/* default for a simple device with no probe routine (usually delete this) */
- x=devfs_add_devsw(
-/* path name devsw minor type uid gid perm*/
- "/", "rwt", major(dev_chr), 0, DV_CHR, 0, 0, 0600);
- x=devfs_add_devsw(
- "/", "wt", major(dev), 0, DV_BLK, 0, 0, 0600);
- }
-#endif
}
}
SYSINIT(wtdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,wt_drvinit,NULL)
-#endif /* JREMOD */
#endif /* NWT */
OpenPOWER on IntegriCloud