diff options
100 files changed, 3750 insertions, 4005 deletions
diff --git a/sys/amd64/amd64/mem.c b/sys/amd64/amd64/mem.c index 5fb364e..6d8a94c 100644 --- a/sys/amd64/amd64/mem.c +++ b/sys/amd64/amd64/mem.c @@ -38,7 +38,7 @@ * * from: Utah $Hdr: mem.c 1.13 89/10/08$ * from: @(#)mem.c 7.2 (Berkeley) 5/9/91 - * $Id: mem.c,v 1.21 1995/11/29 14:39:26 julian Exp $ + * $Id: mem.c,v 1.22 1995/12/07 12:45:34 davidg Exp $ */ /* @@ -48,6 +48,10 @@ #include <sys/param.h> #include <sys/conf.h> #include <sys/buf.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /* DEVFS */ +#include <sys/kernel.h> #include <sys/systm.h> #include <sys/uio.h> #include <sys/malloc.h> @@ -64,33 +68,53 @@ #include <vm/pmap.h> #include <vm/vm_extern.h> -#ifdef JREMOD -#include <sys/kernel.h> + + +static d_open_t mmopen; +static d_close_t mmclose; +static d_rdwr_t mmrw; +static d_ioctl_t mmioctl; +static d_mmap_t memmmap; + #define CDEV_MAJOR 2 -#endif /*JREMOD*/ +struct cdevsw mem_cdevsw = + { mmopen, mmclose, mmrw, mmrw, /*2*/ + mmioctl, nullstop, nullreset, nodevtotty,/* memory */ + seltrue, memmmap, NULL, "mem", NULL, -1 }; #ifdef DEVFS -#include <sys/devfsext.h> - -static void -memdevfs_init(dev_t dev) +static void *mem_devfs_token; +static void *kmem_devfs_token; +static void *null_devfs_token; +static void *random_devfs_token; +static void *urandom_devfs_token; +static void *zero_devfs_token; +static void *io_devfs_token; + +static void +memdevfs_init() { - void * x; - int maj = major(dev); -/* path name major minor type uid gid perm*/ - x=devfs_add_devsw("/misc", "mem", maj, 0, DV_CHR, 0, 2, 0640); - x=devfs_add_devsw("/misc", "kmem", maj, 1, DV_CHR, 0, 2, 0640); - x=devfs_add_devsw("/misc", "null", maj, 2, DV_CHR, 0, 0, 0666); - x=devfs_add_devsw("/misc", "random", maj, 3, DV_CHR, 0, 0, 0666); - x=devfs_add_devsw("/misc", "urandom", maj, 4, DV_CHR, 0, 0, 0666); - x=devfs_add_devsw("/misc", "zero", maj, 12, DV_CHR, 0, 0, 0666); - x=devfs_add_devsw("/misc", "io", maj, 14, DV_CHR, 0, 2, 0640); +/* path name cdevsw minor type uid gid perm*/ + mem_devfs_token = devfs_add_devsw( + "/", "mem", &mem_cdevsw, 0, DV_CHR, 0, 2, 0640); + kmem_devfs_token = devfs_add_devsw( + "/", "kmem", &mem_cdevsw, 1, DV_CHR, 0, 2, 0640); + null_devfs_token = devfs_add_devsw( + "/", "null", &mem_cdevsw, 2, DV_CHR, 0, 0, 0666); + random_devfs_token = devfs_add_devsw( + "/", "random", &mem_cdevsw, 3, DV_CHR, 0, 0, 0666); + urandom_devfs_token = devfs_add_devsw( + "/", "urandom", &mem_cdevsw, 4, DV_CHR, 0, 0, 0666); + zero_devfs_token = devfs_add_devsw( + "/", "zero", &mem_cdevsw, 12, DV_CHR, 0, 0, 0666); + io_devfs_token = devfs_add_devsw( + "/", "io", &mem_cdevsw, 14, DV_CHR, 0, 2, 0640); } #endif /* DEVFS */ extern char *ptvmmap; /* poor name! */ -int +static int mmclose(dev, flags, fmt, p) dev_t dev; int flags; @@ -110,7 +134,7 @@ mmclose(dev, flags, fmt, p) return(0); } -int +static int mmopen(dev, flags, fmt, p) dev_t dev; int flags; @@ -130,7 +154,7 @@ mmopen(dev, flags, fmt, p) return(0); } -int +static int mmrw(dev, uio, flags) dev_t dev; struct uio *uio; @@ -317,7 +341,8 @@ mmrw(dev, uio, flags) * allow user processes to MMAP some memory sections * * instead of going through read/write * \*******************************************************/ -int memmmap(dev_t dev, int offset, int nprot) +static int +memmmap(dev_t dev, int offset, int nprot) { switch (minor(dev)) { @@ -339,7 +364,7 @@ int memmmap(dev_t dev, int offset, int nprot) * Allow userland to select which interrupts will be used in the muck * gathering business. */ -int +static int mmioctl(dev, cmd, cmdarg, flags, p) dev_t dev; int cmd; @@ -383,29 +408,22 @@ mmioctl(dev, cmd, cmdarg, flags, p) -#ifdef JREMOD -struct cdevsw mem_cdevsw = - { mmopen, mmclose, mmrw, mmrw, /*2*/ - mmioctl, nullstop, nullreset, nodevtotty,/* memory */ - seltrue, memmmap, NULL }; - static mem_devsw_installed = 0; -static void mem_drvinit(void *unused) +static void +mem_drvinit(void *unused) { dev_t dev; if( ! mem_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&mem_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&mem_cdevsw, NULL); mem_devsw_installed = 1; #ifdef DEVFS - memdevfs_init(dev); + memdevfs_init(); #endif } } SYSINIT(memdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,mem_drvinit,NULL) -#endif /* JREMOD */ - diff --git a/sys/conf/files b/sys/conf/files index 4291d2c..9611114 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -49,6 +49,7 @@ kern/init_main.c standard kern/init_sysent.c standard kern/kern_acct.c standard kern/kern_clock.c standard +kern/kern_conf.c standard kern/kern_descrip.c standard kern/kern_devconf.c standard kern/kern_exec.c standard diff --git a/sys/dev/cy/cy.c b/sys/dev/cy/cy.c index ae025c0..acd4db6 100644 --- a/sys/dev/cy/cy.c +++ b/sys/dev/cy/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/dev/cy/cy_isa.c b/sys/dev/cy/cy_isa.c index ae025c0..acd4db6 100644 --- a/sys/dev/cy/cy_isa.c +++ b/sys/dev/cy/cy_isa.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/dev/dgb/dgb.c b/sys/dev/dgb/dgb.c index 68499f8..8187b44 100644 --- a/sys/dev/dgb/dgb.c +++ b/sys/dev/dgb/dgb.c @@ -1,5 +1,5 @@ /*- - * dgb.c $Id: dgb.c,v 1.8 1995/12/06 23:52:08 bde Exp $ + * dgb.c $Id: dgb.c,v 1.9 1995/12/07 12:45:18 davidg Exp $ * * Digiboard driver. * @@ -40,6 +40,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> @@ -54,12 +57,6 @@ #include <gnu/i386/isa/dgfep.h> #include <gnu/i386/isa/dgreg.h> -#ifdef JREMOD -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 58 -#endif /*JREMOD*/ #define CALLOUT_MASK 0x80 #define CONTROL_MASK 0x60 @@ -132,6 +129,14 @@ struct dgb_p { u_char draining; /* port is being drained now */ u_char used; /* port is being used now */ u_char mustdrain; /* data must be waited to drain in dgbparam() */ +#ifdef DEVFS + struct { + void *tty; + void *init; + void *lock; + void *cua; + } devfs_token; +#endif }; /* Digiboard per-board structure */ @@ -190,6 +195,20 @@ struct isa_driver dgbdriver = { dgbprobe, dgbattach, "dgb",0 }; +static d_open_t dgbopen; +static d_close_t dgbclose; +static d_read_t dgbread; +static d_write_t dgbwrite; +static d_ioctl_t dgbioctl; +static d_stop_t dgbstop; +static d_ttycv_t dgbdevtotty; + +#define CDEV_MAJOR 58 +struct cdevsw dgb_cdevsw = + { dgbopen, dgbclose, dgbread, dgbwrite, /*58*/ + dgbioctl, dgbstop, nxreset, dgbdevtotty, /* dgb */ + ttselect, nommap, NULL, "dgb", NULL, -1 }; + static speed_t dgbdefaultrate = TTYDEF_SPEED; static u_int dgb_events; /* input chars + weighted output completions */ static int dgbmajor; @@ -437,6 +456,7 @@ dgbattach(dev) ushort *pstat; int lowwater; int nports=0; + char name[32]; if(sc->status!=ENABLED) { DPRINT2("dbg%d: try to attach a disabled card\n",unit); @@ -832,6 +852,28 @@ load_fep: termioschars(&port->it_in); port->it_in.c_ispeed = port->it_in.c_ospeed = dgbdefaultrate; port->it_out = port->it_in; +#ifdef DEVFS +/*XXX*/ /* fix the minor numbers */ + sprintf(name,"dgb%d.%d",unit,i); + port->devfs_token.tty = devfs_add_devsw("/",name, + &dgb_cdevsw,(unit*32)+i, /*mytical number */ + DV_CHR, 0, 0, 0600); + + sprintf(name,"idgb%d.%d",unit,i); + port->devfs_token.tty = devfs_add_devsw("/",name, + &dgb_cdevsw,(unit*32)+i + 64, /*mytical number */ + DV_CHR, 0, 0, 0600); + + sprintf(name,"ldgb%d.%d",unit,i); + port->devfs_token.tty = devfs_add_devsw("/",name, + &dgb_cdevsw,(unit*32)+i + 128, /*mytical number */ + DV_CHR, 0, 0, 0600); + + sprintf(name,"dgbcua%d.%d",unit,i); + port->devfs_token.tty = devfs_add_devsw("/",name, + &dgb_cdevsw,(unit*32)+i + 192, /*mytical number */ + DV_CHR, 0, 0, 0600); +#endif } hidewin(sc); @@ -843,7 +885,7 @@ load_fep: } /* ARGSUSED */ -int +static int dgbopen(dev, flag, mode, p) dev_t dev; int flag; @@ -1011,7 +1053,7 @@ out: } /*ARGSUSED*/ -int +static int dgbclose(dev, flag, mode, p) dev_t dev; int flag; @@ -1087,7 +1129,7 @@ wakeup((caddr_t)chan); } -int +static int dgbread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -1111,7 +1153,7 @@ dgbread(dev, uio, flag) return error; } -int +static int dgbwrite(dev, uio, flag) dev_t dev; struct uio *uio; @@ -1363,7 +1405,7 @@ dgbintr(unit) { } -int +static int dgbioctl(dev, cmd, data, flag, p) dev_t dev; int cmd; @@ -1989,36 +2031,21 @@ fepcmd(port, cmd, op1, op2, ncmds, bytecmd) port->unit, port->pnum); } -#ifdef JREMOD -struct cdevsw dgb_cdevsw = - { dgbopen, dgbclose, dgbread, dgbwrite, /*58*/ - dgbioctl, dgbstop, nxreset, dgbdevtotty, /* dgb */ - ttselect, nommap, NULL }; static dgb_devsw_installed = 0; -static void dgb_drvinit(void *unused) +static void +dgb_drvinit(void *unused) { dev_t dev; if( ! dgb_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&dgb_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&dgb_cdevsw, NULL); dgb_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 major minor type uid gid perm*/ - "/", "dgb", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(dgbdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,dgb_drvinit,NULL) -#endif /* JREMOD */ - #endif /* NDGB > 0 */ diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c index 1af2cbf..e1b3436 100644 --- a/sys/dev/fdc/fdc.c +++ b/sys/dev/fdc/fdc.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/dev/joy/joy.c b/sys/dev/joy/joy.c index 25d2311..2955d1c 100644 --- a/sys/dev/joy/joy.c +++ b/sys/dev/joy/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/dev/mcd/mcd.c b/sys/dev/mcd/mcd.c index 5f7f68b..ee2e03a 100644 --- a/sys/dev/mcd/mcd.c +++ b/sys/dev/mcd/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/dev/mse/mse.c b/sys/dev/mse/mse.c index 8e9fa7b..96f62e5 100644 --- a/sys/dev/mse/mse.c +++ b/sys/dev/mse/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/dev/rc/rc.c b/sys/dev/rc/rc.c index e4e3325..83db4c6 100644 --- a/sys/dev/rc/rc.c +++ b/sys/dev/rc/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/dev/scd/scd.c b/sys/dev/scd/scd.c index edffabf..a111bba 100644 --- a/sys/dev/scd/scd.c +++ b/sys/dev/scd/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/dev/si/si.c b/sys/dev/si/si.c index 1b732d9..cc1d6a7 100644 --- a/sys/dev/si/si.c +++ b/sys/dev/si/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/dev/sio/sio.c b/sys/dev/sio/sio.c index b6b090f..d44d7bc 100644 --- a/sys/dev/sio/sio.c +++ b/sys/dev/sio/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/dev/snp/snp.c b/sys/dev/snp/snp.c index 8e16b2f..27ffe9f 100644 --- a/sys/dev/snp/snp.c +++ b/sys/dev/snp/snp.c @@ -30,15 +30,25 @@ #include <sys/uio.h> #include <sys/kernel.h> #include <sys/malloc.h> - -#include <sys/snoop.h> - -#ifdef JREMOD #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ + +#include <sys/snoop.h> + +static d_open_t snpopen; +static d_close_t snpclose; +static d_read_t snpread; +static d_write_t snpwrite; +static d_ioctl_t snpioctl; +static d_select_t snpselect; + #define CDEV_MAJOR 53 -#endif /*JREMOD*/ +struct cdevsw snp_cdevsw = + { snpopen, snpclose, snpread, snpwrite, /*53*/ + snpioctl, nostop, nullreset, nodevtotty,/* snoop */ + snpselect, nommap, NULL, "snp", NULL, -1 }; + #ifndef MIN #define MIN(a,b) (((a)<(b))?(a):(b)) @@ -63,7 +73,7 @@ devtotty (dev) * length for function keys... */ -int +static int snpwrite(dev, uio, flag) dev_t dev; struct uio *uio; @@ -104,7 +114,7 @@ tty_input: } -int +static int snpread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -270,7 +280,7 @@ snpin(snp, buf, n) return n; } -int +static int snpopen(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -346,7 +356,7 @@ detach_notty: return (0); } -int +static int snpclose(dev, flags, fmt, p) dev_t dev; int flags; @@ -376,7 +386,7 @@ snpdown(snp) } -int +static int snpioctl(dev, cmd, data, flags, p) dev_t dev; int cmd; @@ -473,7 +483,7 @@ snpioctl(dev, cmd, data, flags, p) } -int +static int snpselect(dev, rw, p) dev_t dev; int rw; @@ -500,29 +510,26 @@ snpselect(dev, rw, p) return 0; } -#ifdef JREMOD -struct cdevsw snp_cdevsw = - { snpopen, snpclose, snpread, snpwrite, /*53*/ - snpioctl, nostop, nullreset, nodevtotty,/* snoop */ - snpselect, nommap, NULL }; - +static void *snp_devfs_token[NSNP]; static snp_devsw_installed = 0; -static void snp_drvinit(void *unused) +static void +snp_drvinit(void *unused) { dev_t dev; + char name[32]; + int i; if( ! snp_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&snp_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&snp_cdevsw, NULL); snp_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*/ - "/", "snp", major(dev), 0, DV_CHR, 0, 0, 0600); + for ( i = 0 ; i < NSNP ; i++) { + sprintf(name,"snp%d",i); + snp_devfs_token[i] = + devfs_add_devsw( "/", name, &snp_cdevsw, i, + DV_CHR, 0, 0, 0600); } #endif } @@ -530,6 +537,5 @@ static void snp_drvinit(void *unused) SYSINIT(snpdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,snp_drvinit,NULL) -#endif /* JREMOD */ #endif diff --git a/sys/dev/speaker/spkr.c b/sys/dev/speaker/spkr.c index 9d45e33..160c18b 100644 --- a/sys/dev/speaker/spkr.c +++ b/sys/dev/speaker/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/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c index 6c736ca..db7c92d 100644 --- a/sys/dev/syscons/syscons.c +++ b/sys/dev/syscons/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/dev/vn/vn.c b/sys/dev/vn/vn.c index 1a16364..68ba760 100644 --- a/sys/dev/vn/vn.c +++ b/sys/dev/vn/vn.c @@ -83,19 +83,35 @@ #include <sys/disklabel.h> #include <sys/diskslice.h> #include <sys/stat.h> +#include <sys/conf.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /*DEVFS*/ #include <miscfs/specfs/specdev.h> #include <sys/vnioctl.h> -#ifdef JREMOD -#include <sys/conf.h> -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ +static d_open_t vnopen; +static d_close_t vnclose; +static d_ioctl_t vnioctl; +static d_dump_t vndump; +static d_psize_t vnsize; +static d_strategy_t vnstrategy; + #define CDEV_MAJOR 43 #define BDEV_MAJOR 15 -#endif /*JREMOD */ +extern struct cdevsw vn_cdevsw; +struct bdevsw vn_bdevsw = + { vnopen, vnclose, vnstrategy, vnioctl, /*15*/ + vndump, vnsize, 0, "vn", &vn_cdevsw, -1 }; + +struct cdevsw vn_cdevsw = + { vnopen, vnclose, rawread, rawwrite, /*43*/ + vnioctl, nostop, nullreset, nodevtotty,/* vn */ + seltrue, nommap, vnstrategy, "vn", + &vn_bdevsw, -1 }; + #ifdef DEBUG @@ -141,7 +157,7 @@ int vnsetcred __P((struct vn_softc *vn, struct ucred *cred)); void vnshutdown __P((void)); void vnclear __P((struct vn_softc *vn)); -int +static int vnclose(dev_t dev, int flags, int mode, struct proc *p) { struct vn_softc *vn = vn_softc[vnunit(dev)]; @@ -152,7 +168,7 @@ vnclose(dev_t dev, int flags, int mode, struct proc *p) return (0); } -int +static int vnopen(dev_t dev, int flags, int mode, struct proc *p) { int unit = vnunit(dev); @@ -212,7 +228,7 @@ vnopen(dev_t dev, int flags, int mode, struct proc *p) * and the pageout daemon gets really unhappy (and so does the rest of the * system) when it runs out of memory. */ -void +static void vnstrategy(struct buf *bp) { int unit = vnunit(bp->b_dev); @@ -379,7 +395,7 @@ vniodone( struct buf *bp) { } /* ARGSUSED */ -int +static int vnioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p) { struct vn_softc *vn = vn_softc[vnunit(dev)]; @@ -580,7 +596,7 @@ vnclear(struct vn_softc *vn) dsgone(&vn->sc_slices); } -int +static int vnsize(dev_t dev) { int unit = vnunit(dev); @@ -591,44 +607,33 @@ vnsize(dev_t dev) return(vn_softc[unit]->sc_size); } -int +static int vndump(dev_t dev) { return (ENODEV); } -#ifdef JREMOD -struct bdevsw vn_bdevsw = - { vnopen, vnclose, vnstrategy, vnioctl, /*15*/ - vndump, vnsize, 0 }; - -struct cdevsw vn_cdevsw = - { vnopen, vnclose, rawread, rawwrite, /*43*/ - vnioctl, nostop, nullreset, nodevtotty,/* vn */ - seltrue, nommap, vnstrategy }; - static vn_devsw_installed = 0; -static void vn_drvinit(void *unused) +static void +vn_drvinit(void *unused) { dev_t dev; - dev_t dev_chr; if( ! vn_devsw_installed ) { dev = makedev(CDEV_MAJOR,0); cdevsw_add(&dev,&vn_cdevsw,NULL); - dev_chr = dev; dev = makedev(BDEV_MAJOR,0); bdevsw_add(&dev,&vn_bdevsw,NULL); vn_devsw_installed = 1; #ifdef DEVFS { - int x; + void *x; /* default for a simple device with no probe routine (usually delete this) */ x=devfs_add_devsw( /* path name major minor type uid gid perm*/ - "/", "rvn", major(dev_chr), 0, DV_CHR, 0, 0, 0600); + "/", "rvn", &vn_cdevsw, 0, DV_CHR, 0, 0, 0600); x=devfs_add_devsw( - "/", "vn", major(dev), 0, DV_BLK, 0, 0, 0600); + "/", "vn", &vn_bdevsw, 0, DV_BLK, 0, 0, 0600); } #endif } @@ -636,6 +641,5 @@ static void vn_drvinit(void *unused) SYSINIT(vndev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,vn_drvinit,NULL) -#endif /* JREMOD */ #endif diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c index e4eaafc..bec6bc7 100644 --- a/sys/fs/fdescfs/fdesc_vnops.c +++ b/sys/fs/fdescfs/fdesc_vnops.c @@ -35,7 +35,7 @@ * * @(#)fdesc_vnops.c 8.9 (Berkeley) 1/21/94 * - * $Id: fdesc_vnops.c,v 1.13 1995/12/03 14:54:10 bde Exp $ + * $Id: fdesc_vnops.c,v 1.14 1995/12/05 19:12:05 bde Exp $ */ /* @@ -58,8 +58,11 @@ #include <sys/dirent.h> #include <sys/socketvar.h> #include <sys/tty.h> +#include <sys/conf.h> #include <miscfs/fdesc/fdesc.h> +extern struct cdevsw ctty_cdevsw; + #define cttyvp(p) ((p)->p_flag & P_CONTROLT ? (p)->p_session->s_ttyvp : NULL) #define FDL_WANT 0x01 @@ -363,7 +366,7 @@ fdesc_open(ap) break; case Fctty: - error = cttyopen(devctty, ap->a_mode, 0, ap->a_p); + error = (*ctty_cdevsw.d_open)(devctty, ap->a_mode, 0, ap->a_p); break; } @@ -710,7 +713,7 @@ fdesc_read(ap) switch (VTOFDESC(ap->a_vp)->fd_type) { case Fctty: - error = cttyread(devctty, ap->a_uio, ap->a_ioflag); + error = (*ctty_cdevsw.d_read)(devctty, ap->a_uio, ap->a_ioflag); break; default: @@ -734,7 +737,7 @@ fdesc_write(ap) switch (VTOFDESC(ap->a_vp)->fd_type) { case Fctty: - error = cttywrite(devctty, ap->a_uio, ap->a_ioflag); + error = (*ctty_cdevsw.d_write)(devctty, ap->a_uio, ap->a_ioflag); break; default: @@ -760,8 +763,8 @@ fdesc_ioctl(ap) switch (VTOFDESC(ap->a_vp)->fd_type) { case Fctty: - error = cttyioctl(devctty, ap->a_command, ap->a_data, - ap->a_fflag, ap->a_p); + error = (*ctty_cdevsw.d_ioctl)(devctty, ap->a_command, + ap->a_data, ap->a_fflag, ap->a_p); break; default: @@ -786,7 +789,7 @@ fdesc_select(ap) switch (VTOFDESC(ap->a_vp)->fd_type) { case Fctty: - error = cttyselect(devctty, ap->a_fflags, ap->a_p); + error = (*ctty_cdevsw.d_select)(devctty, ap->a_fflags, ap->a_p); break; default: diff --git a/sys/fs/specfs/spec_vnops.c b/sys/fs/specfs/spec_vnops.c index 38e694e..3a04353 100644 --- a/sys/fs/specfs/spec_vnops.c +++ b/sys/fs/specfs/spec_vnops.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)spec_vnops.c 8.6 (Berkeley) 4/9/94 - * $Id: spec_vnops.c,v 1.20 1995/12/05 21:51:45 bde Exp $ + * $Id: spec_vnops.c,v 1.21 1995/12/07 12:47:17 davidg Exp $ */ #include <sys/param.h> @@ -159,10 +159,8 @@ spec_open(ap) case VCHR: if ((u_int)maj >= nchrdev) return (ENXIO); -#ifdef JREMOD if ( cdevsw[maj].d_open == NULL) return ENXIO; -#endif /*JREMOD*/ if (ap->a_cred != FSCRED && (ap->a_mode & FWRITE)) { /* * When running in very secure mode, do not allow @@ -194,10 +192,8 @@ spec_open(ap) case VBLK: if ((u_int)maj >= nblkdev) return (ENXIO); -#ifdef JREMOD if ( bdevsw[maj].d_open == NULL) return ENXIO; -#endif /*JREMOD*/ /* * When running in very secure mode, do not allow * opens for writing of any disk block devices. diff --git a/sys/gnu/i386/isa/dgb.c b/sys/gnu/i386/isa/dgb.c index 68499f8..8187b44 100644 --- a/sys/gnu/i386/isa/dgb.c +++ b/sys/gnu/i386/isa/dgb.c @@ -1,5 +1,5 @@ /*- - * dgb.c $Id: dgb.c,v 1.8 1995/12/06 23:52:08 bde Exp $ + * dgb.c $Id: dgb.c,v 1.9 1995/12/07 12:45:18 davidg Exp $ * * Digiboard driver. * @@ -40,6 +40,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> @@ -54,12 +57,6 @@ #include <gnu/i386/isa/dgfep.h> #include <gnu/i386/isa/dgreg.h> -#ifdef JREMOD -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 58 -#endif /*JREMOD*/ #define CALLOUT_MASK 0x80 #define CONTROL_MASK 0x60 @@ -132,6 +129,14 @@ struct dgb_p { u_char draining; /* port is being drained now */ u_char used; /* port is being used now */ u_char mustdrain; /* data must be waited to drain in dgbparam() */ +#ifdef DEVFS + struct { + void *tty; + void *init; + void *lock; + void *cua; + } devfs_token; +#endif }; /* Digiboard per-board structure */ @@ -190,6 +195,20 @@ struct isa_driver dgbdriver = { dgbprobe, dgbattach, "dgb",0 }; +static d_open_t dgbopen; +static d_close_t dgbclose; +static d_read_t dgbread; +static d_write_t dgbwrite; +static d_ioctl_t dgbioctl; +static d_stop_t dgbstop; +static d_ttycv_t dgbdevtotty; + +#define CDEV_MAJOR 58 +struct cdevsw dgb_cdevsw = + { dgbopen, dgbclose, dgbread, dgbwrite, /*58*/ + dgbioctl, dgbstop, nxreset, dgbdevtotty, /* dgb */ + ttselect, nommap, NULL, "dgb", NULL, -1 }; + static speed_t dgbdefaultrate = TTYDEF_SPEED; static u_int dgb_events; /* input chars + weighted output completions */ static int dgbmajor; @@ -437,6 +456,7 @@ dgbattach(dev) ushort *pstat; int lowwater; int nports=0; + char name[32]; if(sc->status!=ENABLED) { DPRINT2("dbg%d: try to attach a disabled card\n",unit); @@ -832,6 +852,28 @@ load_fep: termioschars(&port->it_in); port->it_in.c_ispeed = port->it_in.c_ospeed = dgbdefaultrate; port->it_out = port->it_in; +#ifdef DEVFS +/*XXX*/ /* fix the minor numbers */ + sprintf(name,"dgb%d.%d",unit,i); + port->devfs_token.tty = devfs_add_devsw("/",name, + &dgb_cdevsw,(unit*32)+i, /*mytical number */ + DV_CHR, 0, 0, 0600); + + sprintf(name,"idgb%d.%d",unit,i); + port->devfs_token.tty = devfs_add_devsw("/",name, + &dgb_cdevsw,(unit*32)+i + 64, /*mytical number */ + DV_CHR, 0, 0, 0600); + + sprintf(name,"ldgb%d.%d",unit,i); + port->devfs_token.tty = devfs_add_devsw("/",name, + &dgb_cdevsw,(unit*32)+i + 128, /*mytical number */ + DV_CHR, 0, 0, 0600); + + sprintf(name,"dgbcua%d.%d",unit,i); + port->devfs_token.tty = devfs_add_devsw("/",name, + &dgb_cdevsw,(unit*32)+i + 192, /*mytical number */ + DV_CHR, 0, 0, 0600); +#endif } hidewin(sc); @@ -843,7 +885,7 @@ load_fep: } /* ARGSUSED */ -int +static int dgbopen(dev, flag, mode, p) dev_t dev; int flag; @@ -1011,7 +1053,7 @@ out: } /*ARGSUSED*/ -int +static int dgbclose(dev, flag, mode, p) dev_t dev; int flag; @@ -1087,7 +1129,7 @@ wakeup((caddr_t)chan); } -int +static int dgbread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -1111,7 +1153,7 @@ dgbread(dev, uio, flag) return error; } -int +static int dgbwrite(dev, uio, flag) dev_t dev; struct uio *uio; @@ -1363,7 +1405,7 @@ dgbintr(unit) { } -int +static int dgbioctl(dev, cmd, data, flag, p) dev_t dev; int cmd; @@ -1989,36 +2031,21 @@ fepcmd(port, cmd, op1, op2, ncmds, bytecmd) port->unit, port->pnum); } -#ifdef JREMOD -struct cdevsw dgb_cdevsw = - { dgbopen, dgbclose, dgbread, dgbwrite, /*58*/ - dgbioctl, dgbstop, nxreset, dgbdevtotty, /* dgb */ - ttselect, nommap, NULL }; static dgb_devsw_installed = 0; -static void dgb_drvinit(void *unused) +static void +dgb_drvinit(void *unused) { dev_t dev; if( ! dgb_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&dgb_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&dgb_cdevsw, NULL); dgb_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 major minor type uid gid perm*/ - "/", "dgb", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(dgbdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,dgb_drvinit,NULL) -#endif /* JREMOD */ - #endif /* NDGB > 0 */ diff --git a/sys/gnu/i386/isa/nic3008.c b/sys/gnu/i386/isa/nic3008.c index a685131..85a4081 100644 --- a/sys/gnu/i386/isa/nic3008.c +++ b/sys/gnu/i386/isa/nic3008.c @@ -1,6 +1,6 @@ -static char nic38_id[] = "@(#)$Id: nic3008.c,v 1.10 1995/11/29 10:47:04 julian Exp $"; +static char nic38_id[] = "@(#)$Id: nic3008.c,v 1.11 1995/11/29 14:39:07 julian Exp $"; /******************************************************************************* - * II - Version 0.1 $Revision: 1.10 $ $State: Exp $ + * II - Version 0.1 $Revision: 1.11 $ $State: Exp $ * * Copyright 1994 Dietmar Friede ******************************************************************************* @@ -10,6 +10,10 @@ static char nic38_id[] = "@(#)$Id: nic3008.c,v 1.10 1995/11/29 10:47:04 juli * ******************************************************************************* * $Log: nic3008.c,v $ + * Revision 1.11 1995/11/29 14:39:07 julian + * If you're going to mechanically replicate something in 50 files + * it's best to not have a (compiles cleanly) typo in it! (sigh) + * * Revision 1.10 1995/11/29 10:47:04 julian * OK, that's it.. * That's EVERY SINGLE driver that has an entry in conf.c.. @@ -69,24 +73,20 @@ static char nic38_id[] = "@(#)$Id: nic3008.c,v 1.10 1995/11/29 10:47:04 juli #include "nic.h" #if NNIC > 0 -#include "param.h" -#include "ioctl.h" -#include "kernel.h" -#include "systm.h" +#include <sys/param.h> +#include <sys/ioctl.h> +#include <sys/kernel.h> +#include <sys/systm.h> #include <sys/conf.h> #include <sys/proc.h> - -#include "i386/isa/isa_device.h" -#include "gnu/i386/isa/nic3008.h" -#include "gnu/i386/isa/niccyreg.h" -#include "gnu/isdn/isdn_ioctl.h" - -#ifdef JREMOD #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 54 -#endif /*JREMOD*/ + +#include <i386/isa/isa_device.h> +#include <gnu/i386/isa/nic3008.h> +#include <gnu/i386/isa/niccyreg.h> +#include <gnu/isdn/isdn_ioctl.h> #define OPEN 1 @@ -131,6 +131,16 @@ static short bsintr; struct isa_driver nicdriver = {nicprobe, nicattach, "nic"}; +static d_open_t nicopen; +static d_close_t nicclose; +static d_ioctl_t nicioctl; + +#define CDEV_MAJOR 54 +struct cdevsw nic_cdevsw = + { nicopen, nicclose, noread, nowrite, /*54*/ + nicioctl, nostop, nullreset, nodevtotty,/* nic */ + seltrue, nommap, NULL, "nic", NULL, -1 }; + typedef enum { DISCON, ISDISCON, DIAL, CALLED, CONNECT, IDLE, ACTIVE @@ -160,6 +170,9 @@ struct nic_softc u_char sc_ctrl; short sc_stat; chan_t sc_chan[2]; +#ifdef DEVFS + void *devfs_token; +#endif } nic_sc[NNIC]; static void badstate __P((mbx_type *mbx, int n, int mb, dpr_type *dpr)); @@ -226,6 +239,7 @@ nicattach(struct isa_device * is) dpr_type *dpr; int cn; isdn_ctrl_t *ctrl0, *ctrl1; + char name[32]; sc = &nic_sc[is->id_unit]; dpr = sc->sc_dpr; @@ -257,6 +271,11 @@ nicattach(struct isa_device * is) dpr->card_number = is->id_unit; dpr->int_flg_pc = 0xff; reset_req(sc, MBX_MU, 4); +#ifdef DEVFS + sprintf(name,"nic%d",is->id_unit); + sc->devfs_token = devfs_add_devsw( "/isdn", name, + &nic_cdevsw,is->id_unit, DV_CHR, 0, 0, 0600 ); +#endif return (1); } @@ -605,7 +624,7 @@ reset_card(struct nic_softc * sc) * * We forbid all but first open */ -int +static int nicopen(dev_t dev, int flags, int fmt, struct proc *p) { struct nic_softc *sc; @@ -636,7 +655,7 @@ nicopen(dev_t dev, int flags, int fmt, struct proc *p) /* * nicclose() Close device */ -int +static int nicclose(dev_t dev, int flags, int fmt, struct proc *p) { struct nic_softc *sc = &nic_sc[minor(dev)]; @@ -645,7 +664,7 @@ nicclose(dev_t dev, int flags, int fmt, struct proc *p) return (0); } -int +static int nicioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *p) { int error; @@ -1225,12 +1244,6 @@ nicintr(int unit) } -#ifdef JREMOD -struct cdevsw nic_cdevsw = - { nicopen, nicclose, noread, nowrite, /*54*/ - nicioctl, nostop, nullreset, nodevtotty,/* nic */ - seltrue, nommap, NULL }; - static nic_devsw_installed = 0; static void nic_drvinit(void *unused) @@ -1238,23 +1251,12 @@ static void nic_drvinit(void *unused) dev_t dev; if( ! nic_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&nic_cdevsw,NULL); + dev = makedev(CDEV_MAJOR ,0); + cdevsw_add(&dev,&nic_cdevsw, NULL); nic_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*/ - "/", "nic", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(nicdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,nic_drvinit,NULL) -#endif /* JREMOD */ - #endif /* NNIC > 0 */ diff --git a/sys/gnu/i386/isa/nic3009.c b/sys/gnu/i386/isa/nic3009.c index 0a6fe04..8359c9d 100644 --- a/sys/gnu/i386/isa/nic3009.c +++ b/sys/gnu/i386/isa/nic3009.c @@ -1,6 +1,6 @@ -static char nic39_id[] = "@(#)$Id: nic3009.c,v 1.10 1995/11/29 10:47:05 julian Exp $"; +static char nic39_id[] = "@(#)$Id: nic3009.c,v 1.11 1995/11/29 14:39:08 julian Exp $"; /******************************************************************************* - * II - Version 0.1 $Revision: 1.10 $ $State: Exp $ + * II - Version 0.1 $Revision: 1.11 $ $State: Exp $ * * Copyright 1994 Dietmar Friede ******************************************************************************* @@ -10,6 +10,10 @@ static char nic39_id[] = "@(#)$Id: nic3009.c,v 1.10 1995/11/29 10:47:05 juli * ******************************************************************************* * $Log: nic3009.c,v $ + * Revision 1.11 1995/11/29 14:39:08 julian + * If you're going to mechanically replicate something in 50 files + * it's best to not have a (compiles cleanly) typo in it! (sigh) + * * Revision 1.10 1995/11/29 10:47:05 julian * OK, that's it.. * That's EVERY SINGLE driver that has an entry in conf.c.. @@ -74,18 +78,15 @@ static char nic39_id[] = "@(#)$Id: nic3009.c,v 1.10 1995/11/29 10:47:05 juli #include <sys/systm.h> #include <sys/conf.h> #include <sys/proc.h> - -#include "i386/isa/isa_device.h" -#include "gnu/i386/isa/nic3009.h" -#include "gnu/i386/isa/niccyreg.h" -#include "gnu/isdn/isdn_ioctl.h" - -#ifdef JREMOD #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 60 -#endif /*JREMOD*/ + +#include <i386/isa/isa_device.h> +#include <gnu/i386/isa/nic3009.h> +#include <gnu/i386/isa/niccyreg.h> +#include <gnu/isdn/isdn_ioctl.h> + #define OPEN 1 #define LOAD_HEAD 3 @@ -122,6 +123,17 @@ extern int nnic_listen __P((int cn, int ap, int inf_mask, extern int nnic_output __P((int cn)); extern int nnic_state __P((int cn)); +static d_open_t nnicopen; +static d_close_t nnicclose; +static d_ioctl_t nnicioctl; + +#define CDEV_MAJOR 60 +struct cdevsw nnic_cdevsw = + { nnicopen, nnicclose, noread, nowrite, /*60*/ + nnicioctl, nostop, nullreset, nodevtotty,/* nnic */ + seltrue, nommap, NULL, "nnic", NULL, -1 }; + + static short bsintr; struct isa_driver nnicdriver = {nnicprobe, nnicattach, "nnic"}; @@ -157,6 +169,9 @@ struct nnic_softc u_char sc_type; short sc_stat; chan_t sc_chan[2]; +#ifdef DEVFS + void *devfs_token; +#endif } nnic_sc[NNNIC]; static void badstate __P((mbx_type *mbx, int n, int mb, dpr_type *dpr)); @@ -230,6 +245,7 @@ nnicattach(struct isa_device * is) struct nnic_softc *sc; int cn; isdn_ctrl_t *ctrl0, *ctrl1; + char name[32]; sc = &nnic_sc[is->id_unit]; sc->sc_ctrl = -1; @@ -256,6 +272,11 @@ nnicattach(struct isa_device * is) ctrl0->appl = ctrl1->appl = -1; ctrl0->o_len = ctrl1->o_len = -1; sc->sc_flags= LOAD_ENTITY; +#ifdef DEVFS + sprintf(name,"nnic%d",is->id_unit); + sc->devfs_token = devfs_add_devsw("/isdn",name, + &nnic_cdevsw, is->id_unit, DV_CHR, 0, 0, 0600 ); +#endif return (1); } @@ -548,7 +569,7 @@ nnic_accept(int cn, int an, int rea) return(sel_b2_prot_req(ctrl->unit, C_CHAN(cn), chan->plci, &appl->dlpd)); } -int +static int nnicopen(dev_t dev, int flags, int fmt, struct proc *p) { struct nnic_softc *sc; @@ -578,7 +599,7 @@ nnicopen(dev_t dev, int flags, int fmt, struct proc *p) return (0); } -int +static int nnicclose(dev_t dev, int flags, int fmt, struct proc *p) { struct nnic_softc *sc = &nnic_sc[minor(dev)]; @@ -587,7 +608,7 @@ nnicclose(dev_t dev, int flags, int fmt, struct proc *p) return (0); } -int +static int nnicioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *pr) { int error; @@ -1288,12 +1309,6 @@ nnicintr(int unit) } -#ifdef JREMOD -struct cdevsw nnic_cdevsw = - { nnicopen, nnicclose, noread, nowrite, /*60*/ - nnicioctl, nostop, nullreset, nodevtotty,/* nnic */ - seltrue, nommap, NULL }; - static nnic_devsw_installed = 0; static void nnic_drvinit(void *unused) @@ -1301,23 +1316,12 @@ static void nnic_drvinit(void *unused) dev_t dev; if( ! nnic_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&nnic_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&nnic_cdevsw, NULL); nnic_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*/ - "/", "nnic", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(nnicdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,nnic_drvinit,NULL) -#endif /* JREMOD */ - #endif /* NNNIC > 0 */ diff --git a/sys/gnu/isdn/iispy.c b/sys/gnu/isdn/iispy.c index e708d4d..470bea1 100644 --- a/sys/gnu/isdn/iispy.c +++ b/sys/gnu/isdn/iispy.c @@ -1,6 +1,6 @@ -static char _ispyid[] = "@(#)$Id: iispy.c,v 1.6 1995/11/29 14:39:10 julian Exp $"; +static char _ispyid[] = "@(#)$Id: iispy.c,v 1.7 1995/12/06 23:43:37 bde Exp $"; /******************************************************************************* - * II - Version 0.1 $Revision: 1.6 $ $State: Exp $ + * II - Version 0.1 $Revision: 1.7 $ $State: Exp $ * * Copyright 1994 Dietmar Friede ******************************************************************************* @@ -10,6 +10,13 @@ static char _ispyid[] = "@(#)$Id: iispy.c,v 1.6 1995/11/29 14:39:10 julian E * ******************************************************************************* * $Log: iispy.c,v $ + * Revision 1.7 1995/12/06 23:43:37 bde + * Removed unnecessary #includes of <sys/user.h>. Some of these were just + * to get the definitions of TRUE and FALSE which happen to be defined in + * a deeply nested include. + * + * Added nearby #includes of <sys/conf.h> where appropriate. + * * Revision 1.6 1995/11/29 14:39:10 julian * If you're going to mechanically replicate something in 50 files * it's best to not have a (compiles cleanly) typo in it! (sigh) @@ -47,26 +54,22 @@ static char _ispyid[] = "@(#)$Id: iispy.c,v 1.6 1995/11/29 14:39:10 julian E #include "ispy.h" #if NISPY > 0 -#include "param.h" -#include "buf.h" -#include "systm.h" -#include "conf.h" -#include "ioctl.h" -#include "tty.h" -#include "proc.h" -#include "uio.h" +#include <sys/param.h> +#include <sys/buf.h> +#include <sys/systm.h> +#include <sys/ioctl.h> +#include <sys/tty.h> +#include <sys/proc.h> +#include <sys/uio.h> #include <sys/kernel.h> -/*#include "malloc.h"*/ - -#include "gnu/isdn/isdn_ioctl.h" - -#ifdef JREMOD #include <sys/conf.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 59 -#endif /*JREMOD*/ +/*#include "malloc.h"*/ + +#include <gnu/isdn/isdn_ioctl.h> + int nispy = NISPY; int ispy_applnr; @@ -92,17 +95,39 @@ struct ispy_data int ilen; } b[ISPYBUF]; int state; +#ifdef DEVFS + void *devfs_token; +#endif } ispy_data[NISPY]; +static d_open_t ispyopen; +static d_close_t ispyclose; +static d_read_t ispyread; +static d_ioctl_t ispyioctl; + +#define CDEV_MAJOR 59 +struct cdevsw ispy_cdevsw = + { ispyopen, ispyclose, ispyread, nowrite, /*59*/ + ispyioctl, nostop, nullreset, nodevtotty,/* ispy */ + seltrue, nommap, NULL, "ispy", NULL, -1 }; + + int ispyattach(int ap) { + char name[32]; struct ispy_data *ispy; + if(next_if >= NISPY) return(-1); ispy= &ispy_data[next_if]; ispy->state= 0; ispy_applnr= ap; +#ifdef DEVFS + sprintf(name,"ispy%d",next_if); + ispy->devfs_token =devfs_add_devsw("/isdn",name,&ispy_cdevsw,next_if, + DV_CHR, 0, 0, 0600); +#endif return(next_if++); } @@ -130,7 +155,7 @@ ispy_input(int no, int len, char *buf, int out) return(len); } -int +static int ispyopen(dev_t dev, int flags, int fmt, struct proc *p) { int err; @@ -147,7 +172,7 @@ ispyopen(dev_t dev, int flags, int fmt, struct proc *p) return (0); } -int +static int ispyclose(dev_t dev, int flags, int fmt, struct proc *p) { struct ispy_data *ispy= &ispy_data[minor(dev)]; @@ -158,7 +183,7 @@ ispyclose(dev_t dev, int flags, int fmt, struct proc *p) return (0); } -int +static int ispyioctl (dev_t dev, int cmd, caddr_t data, int flags, struct proc *p) { int unit = minor(dev); @@ -170,7 +195,7 @@ ispyioctl (dev_t dev, int cmd, caddr_t data, int flags, struct proc *p) return (0); } -int +static int ispyread(dev_t dev, struct uio * uio, int ioflag) { int x; @@ -202,36 +227,20 @@ ispyread(dev_t dev, struct uio * uio, int ioflag) return error; } -#ifdef JREMOD -struct cdevsw ispy_cdevsw = - { ispyopen, ispyclose, ispyread, nowrite, /*59*/ - ispyioctl, nostop, nullreset, nodevtotty,/* ispy */ - seltrue, nommap, NULL }; - static ispy_devsw_installed = 0; -static void ispy_drvinit(void *unused) +static void +ispy_drvinit(void *unused) { dev_t dev; if( ! ispy_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&ispy_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&ispy_cdevsw, NULL); ispy_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*/ - "/", "ispy", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(ispydev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,ispy_drvinit,NULL) -#endif /* JREMOD */ - #endif diff --git a/sys/gnu/isdn/iitel.c b/sys/gnu/isdn/iitel.c index 1da86ba..21c87e8 100644 --- a/sys/gnu/isdn/iitel.c +++ b/sys/gnu/isdn/iitel.c @@ -1,6 +1,6 @@ -static char _itelid[] = "@(#)$Id: iitel.c,v 1.7 1995/11/29 10:47:08 julian Exp $"; +static char _itelid[] = "@(#)$Id: iitel.c,v 1.8 1995/11/29 14:39:11 julian Exp $"; /******************************************************************************* - * II - Version 0.1 $Revision: 1.7 $ $State: Exp $ + * II - Version 0.1 $Revision: 1.8 $ $State: Exp $ * * Copyright 1994 Dietmar Friede ******************************************************************************* @@ -10,6 +10,10 @@ static char _itelid[] = "@(#)$Id: iitel.c,v 1.7 1995/11/29 10:47:08 julian E * ******************************************************************************* * $Log: iitel.c,v $ + * Revision 1.8 1995/11/29 14:39:11 julian + * If you're going to mechanically replicate something in 50 files + * it's best to not have a (compiles cleanly) typo in it! (sigh) + * * Revision 1.7 1995/11/29 10:47:08 julian * OK, that's it.. * That's EVERY SINGLE driver that has an entry in conf.c.. @@ -63,15 +67,12 @@ static char _itelid[] = "@(#)$Id: iitel.c,v 1.7 1995/11/29 10:47:08 julian E #include <sys/uio.h> #include <sys/kernel.h> #include <sys/malloc.h> - -#include "gnu/isdn/isdn_ioctl.h" - -#ifdef JREMOD #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 57 -#endif /*JREMOD*/ + +#include "gnu/isdn/isdn_ioctl.h" + int nitel = NITEL; static int applnr[NITEL]; @@ -83,6 +84,18 @@ static int next_if =0; #define WRITE_WAIT 8 #define min(a,b) ((a)<(b)?(a):(b)) +static d_open_t itelopen; +static d_close_t itelclose; +static d_read_t itelread; +static d_write_t itelwrite; +static d_ioctl_t itelioctl; + +#define CDEV_MAJOR 57 +struct cdevsw itel_cdevsw = + { itelopen, itelclose, itelread, itelwrite, /*57*/ + itelioctl, nostop, nullreset, nodevtotty,/* itel */ + seltrue, nommap, NULL, "itel", NULL, -1 }; + static struct itel_data { @@ -90,18 +103,28 @@ struct itel_data char obuf[ITEL_SIZE]; int state; int ilen, olen; +#ifdef DEVFS + void *devfs_token; +#endif } itel_data[NITEL]; int itelattach(int ap) { struct itel_data *itel; + char name[32]; + if(next_if >= NITEL) return(-1); itel= &itel_data[next_if]; itel->ilen= itel->olen= 0; itel->state= 0; applnr[next_if]= ap; +#ifdef DEVFS + sprintf(name,"itel%d",next_if); + itel->devfs_token = devfs_add_devsw("/isdn",name,&itel_cdevsw,next_if, + DV_CHR, 0, 0, 0600); +#endif return(next_if++); } @@ -270,42 +293,19 @@ itelwrite(dev_t dev, struct uio * uio, int ioflag) return error; } -#ifdef JREMOD -struct cdevsw itel_cdevsw = - { itelopen, itelclose, itelread, itelwrite, /*57*/ - itelioctl, nostop, nullreset, nodevtotty,/* itel */ - seltrue, nommap, NULL }; - static itel_devsw_installed = 0; static void itel_drvinit(void *unused) { dev_t dev; - dev_t dev_chr; if( ! itel_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&itel_cdevsw,NULL); - dev_chr = dev; -#if defined(BDEV_MAJOR) - dev = makedev(BDEV_MAJOR,0); - bdevsw_add(&dev,&itel_bdevsw,NULL); -#endif /*BDEV_MAJOR*/ + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&itel_cdevsw, NULL); itel_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*/ - "/", "itel", major(dev_chr), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(iteldev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,itel_drvinit,NULL) -#endif /* JREMOD */ - #endif diff --git a/sys/gnu/isdn/iitty.c b/sys/gnu/isdn/iitty.c index 140cc91..3c4bf87 100644 --- a/sys/gnu/isdn/iitty.c +++ b/sys/gnu/isdn/iitty.c @@ -1,6 +1,6 @@ -static char _ittyid[] = "@(#)$Id: iitty.c,v 1.14 1995/11/29 14:39:12 julian Exp $"; +static char _ittyid[] = "@(#)$Id: iitty.c,v 1.15 1995/12/05 20:33:47 bde Exp $"; /******************************************************************************* - * II - Version 0.1 $Revision: 1.14 $ $State: Exp $ + * II - Version 0.1 $Revision: 1.15 $ $State: Exp $ * * Copyright 1994 Dietmar Friede ******************************************************************************* @@ -10,6 +10,19 @@ static char _ittyid[] = "@(#)$Id: iitty.c,v 1.14 1995/11/29 14:39:12 julian * ******************************************************************************* * $Log: iitty.c,v $ + * Revision 1.15 1995/12/05 20:33:47 bde + * Fixed ity's d_stop entry. itystop() wasn't used. itystop() is inadequate + * but probably harmless. It's hard to tell because apparently no one runs + * ity. + * + * Fixed ity's d_reset entry. `nx' entries should never be used for existing + * devices. + * + * conf.c: + * Moved a prototype to a better place. + * + * Removed a stale #define. + * * Revision 1.14 1995/11/29 14:39:12 julian * If you're going to mechanically replicate something in 50 files * it's best to not have a (compiles cleanly) typo in it! (sigh) @@ -172,15 +185,26 @@ static char _ittyid[] = "@(#)$Id: iitty.c,v 1.14 1995/11/29 14:39:12 julian #include <sys/kernel.h> #include <sys/syslog.h> #include <sys/types.h> - -#include "gnu/isdn/isdn_ioctl.h" - -#ifdef JREMOD #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ + +#include "gnu/isdn/isdn_ioctl.h" + +static d_open_t ityopen; +static d_close_t ityclose; +static d_read_t ityread; +static d_write_t itywrite; +static d_ioctl_t ityioctl; +static d_stop_t itystop; +static d_ttycv_t itydevtotty; + #define CDEV_MAJOR 56 -#endif /*JREMOD*/ +struct cdevsw ity_cdevsw = + { ityopen, ityclose, ityread, itywrite, /*56*/ + ityioctl, itystop, noreset, itydevtotty,/* ity */ + ttselect, nommap, NULL, "ity", NULL, -1 }; + extern int ityparam __P((struct tty *tp, struct termios *t)); extern void itystart __P((struct tty *tp)); @@ -191,6 +215,10 @@ short ity_addr[NITY]; struct tty ity_tty[NITY]; static int applnr[NITY]; static int next_if= 0; +#ifdef DEVFS +void *devfs_token[NITY]; +void *devfs_token_out[NITY]; +#endif #define UNIT(x) (minor(x)&0x3f) #define OUTBOUND(x) ((minor(x)&0x80)==0x80) @@ -198,15 +226,24 @@ static int next_if= 0; int ityattach(int ap) { + char name[32]; if(next_if >= NITY) return(-1); applnr[next_if]= ap; +#ifdef DEVFS + sprintf(name,"ity%d",next_if); + devfs_token[next_if] = devfs_add_devsw("/isdn",name, + &ity_cdevsw,next_if, DV_CHR, 0, 0, 0600); + sprintf(name,"Oity%d",next_if); /* XXX find out real name */ + devfs_token[next_if] = devfs_add_devsw("/isdn",name, + &ity_cdevsw,(next_if | 0x80), DV_CHR, 0, 0, 0600); +#endif return(next_if++); } /* ARGSUSED */ -int +static int ityopen(dev_t dev, int flag, int mode, struct proc * p) { register struct tty *tp; @@ -261,7 +298,7 @@ ityopen(dev_t dev, int flag, int mode, struct proc * p) } /* ARGSUSED */ -int +static int ityclose(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -280,7 +317,7 @@ ityclose(dev, flag, mode, p) return (0); } -int +static int ityread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -291,7 +328,7 @@ ityread(dev, uio, flag) return ((*linesw[tp->t_line].l_read) (tp, uio, flag)); } -int +static int itywrite(dev, uio, flag) dev_t dev; struct uio *uio; @@ -386,7 +423,7 @@ ity_disconnect(int no) if(tp) (*linesw[tp->t_line].l_modem) (tp, 0); } -int +static int ityioctl(dev, cmd, data, flag,p) dev_t dev; int cmd; @@ -444,7 +481,7 @@ ityparam(tp, t) * Stop output on a line. */ /* ARGSUSED */ -void +static void itystop(struct tty *tp, int flag) { register int s; @@ -458,7 +495,7 @@ itystop(struct tty *tp, int flag) splx(s); } -struct tty * +static struct tty * itydevtotty(dev_t dev) { register int unit = UNIT(dev); @@ -468,36 +505,20 @@ itydevtotty(dev_t dev) return (&ity_tty[unit]); } -#ifdef JREMOD -struct cdevsw ity_cdevsw = - { ityopen, ityclose, ityread, itywrite, /*56*/ - ityioctl, itystop, noreset, itydevtotty,/* ity */ - ttselect, nommap, NULL }; - static ity_devsw_installed = 0; -static void ity_drvinit(void *unused) +static void +ity_drvinit(void *unused) { dev_t dev; if( ! ity_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&ity_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&ity_cdevsw, NULL); ity_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*/ - "/", "ity", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(itydev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,ity_drvinit,NULL) -#endif /* JREMOD */ - #endif diff --git a/sys/gnu/isdn/isdn.c b/sys/gnu/isdn/isdn.c index 8686dea..71755e3 100644 --- a/sys/gnu/isdn/isdn.c +++ b/sys/gnu/isdn/isdn.c @@ -1,6 +1,6 @@ -static char _isdnid[] = "@(#)$Id: isdn.c,v 1.7 1995/11/29 10:47:10 julian Exp $"; +static char _isdnid[] = "@(#)$Id: isdn.c,v 1.8 1995/11/29 14:39:12 julian Exp $"; /******************************************************************************* - * II - Version 0.1 $Revision: 1.7 $ $State: Exp $ + * II - Version 0.1 $Revision: 1.8 $ $State: Exp $ * * Copyright 1994 Dietmar Friede ******************************************************************************* @@ -10,6 +10,10 @@ static char _isdnid[] = "@(#)$Id: isdn.c,v 1.7 1995/11/29 10:47:10 julian Ex * ******************************************************************************* * $Log: isdn.c,v $ + * Revision 1.8 1995/11/29 14:39:12 julian + * If you're going to mechanically replicate something in 50 files + * it's best to not have a (compiles cleanly) typo in it! (sigh) + * * Revision 1.7 1995/11/29 10:47:10 julian * OK, that's it.. * That's EVERY SINGLE driver that has an entry in conf.c.. @@ -80,15 +84,12 @@ static char _isdnid[] = "@(#)$Id: isdn.c,v 1.7 1995/11/29 10:47:10 julian Ex #include <sys/systm.h> #include <sys/conf.h> #include <sys/proc.h> - -#include "gnu/isdn/isdn_ioctl.h" - -#ifdef JREMOD #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 55 -#endif /*JREMOD*/ + +#include "gnu/isdn/isdn_ioctl.h" + isdn_appl_t isdn_appl[N_ISDN_APPL]; isdn_ctrl_t isdn_ctrl[N_ISDN_CTRL]; @@ -102,6 +103,20 @@ extern int isdn_set_prot __P((int ap, int dir, char *p)); extern int isdn_stat __P((int cn)); static void passout __P((int unit, int l, char *buf)); +static d_open_t isdnopen; +static d_close_t isdnclose; +static d_rdwr_t isdnrw; +static d_read_t isdnread; +static d_write_t isdnwrite; +static d_ioctl_t isdnioctl; + +#define CDEV_MAJOR 55 +struct cdevsw isdn_cdevsw = + { isdnopen, isdnclose, isdnread, nowrite, /*55*/ + isdnioctl, nostop, nullreset, nodevtotty,/* isdn */ + seltrue, nommap, NULL, "isdn", NULL, -1 }; + + static int o_flags, r_flags, bufind[TYPNR]; static char buffer[TYPNR][257]; static u_char appl_list[TYPNR]; @@ -222,6 +237,9 @@ isdn_ctrl_attach(int n) if ((Isdn_Ctrl += n) <= N_ISDN_CTRL) return (c); Isdn_Ctrl = c; +#ifdef DEVFS +/*SOMETHING GOES IN HERE I THINK*/ +#endif return (-1); } @@ -231,7 +249,7 @@ isdn_ctrl_attach(int n) * I forbid all but one open per application. The only programs opening the * isdn device are the ISDN-daemon */ -int +static int isdnopen(dev_t dev, int flags, int fmt, struct proc *p) { int err; @@ -248,14 +266,14 @@ isdnopen(dev_t dev, int flags, int fmt, struct proc *p) return (0); } -int +static int isdnclose(dev_t dev, int flags, int fmt, struct proc *p) { o_flags &= ~(1 << minor(dev)); return (0); } -int +static int isdnread(dev_t dev, struct uio * uio, int ioflag) { int x; @@ -280,7 +298,7 @@ isdnread(dev_t dev, struct uio * uio, int ioflag) return error; } -int +static int isdnioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *p) { int err, x, i; @@ -673,15 +691,10 @@ passout(int unit, int l, char *buf) splx(x); } -#ifdef JREMOD -struct cdevsw isdn_cdevsw = - { isdnopen, isdnclose, isdnread, nowrite, /*55*/ - isdnioctl, nostop, nullreset, nodevtotty,/* isdn */ - seltrue, nommap, NULL }; - static isdn_devsw_installed = 0; -static void isdn_drvinit(void *unused) +static void +isdn_drvinit(void *unused) { dev_t dev; @@ -689,20 +702,9 @@ static void isdn_drvinit(void *unused) dev = makedev(CDEV_MAJOR,0); cdevsw_add(&dev,&isdn_cdevsw,NULL); isdn_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*/ - "/", "isdn", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(isdndev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,isdn_drvinit,NULL) -#endif /* JREMOD */ - #endif /* NISDN > 0 */ diff --git a/sys/i386/apm/apm.c b/sys/i386/apm/apm.c index eee873d..8b9b862 100644 --- a/sys/i386/apm/apm.c +++ b/sys/i386/apm/apm.c @@ -13,7 +13,7 @@ * * Sep, 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD) * - * $Id: apm.c,v 1.18 1995/11/29 14:39:17 julian Exp $ + * $Id: apm.c,v 1.19 1995/12/07 12:45:21 davidg Exp $ */ #include "apm.h" @@ -22,14 +22,12 @@ #ifdef __FreeBSD__ #include <sys/param.h> -#include "conf.h" -#ifdef JREMOD +#include <conf.h> #include <sys/conf.h> #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#endif /*JREMOD*/ #include <sys/kernel.h> #include <sys/systm.h> #include <sys/malloc.h> @@ -84,6 +82,7 @@ struct apm_softc { int idle_cpu, disabled, disengaged; struct apmhook sc_suspend; struct apmhook sc_resume; + void *sc_devfs_token; }; static struct apm_softc apm_softc[NAPM]; @@ -108,9 +107,16 @@ extern void fix_desc(struct fake_descriptor *, int); #ifdef __FreeBSD__ static timeout_t apm_timeout; -#ifdef JREMOD +static d_open_t apmopen; +static d_close_t apmclose; +static d_ioctl_t apmioctl; + #define CDEV_MAJOR 39 -#endif /* JREMOD */ +static struct cdevsw apm_cdevsw = + { apmopen, apmclose, noread, nowrite, /*39*/ + apmioctl, nostop, nullreset, nodevtotty,/* APM */ + seltrue, nommap, NULL , "apm" ,NULL, -1}; + #endif /* __FreeBSD__ */ #ifdef MACH_KERNEL static void apm_timeout(void *); @@ -644,8 +650,8 @@ apm_not_halt_cpu(struct apm_softc *sc) /* device driver definitions */ #ifdef __FreeBSD__ -int apmprobe (struct isa_device *); -int apmattach(struct isa_device *); +static int apmprobe (struct isa_device *); +static int apmattach(struct isa_device *); struct isa_driver apmdriver = { apmprobe, apmattach, "apm" }; #endif /* __FreeBSD__ */ @@ -669,12 +675,13 @@ struct bus_driver apmdriver = { * to use V86 mode in APM initialization. */ -int #ifdef __FreeBSD__ - apmprobe(struct isa_device *dvp) +static int +apmprobe(struct isa_device *dvp) #endif /* __FreeBSD__ */ #ifdef MACH_KERNEL - apmprobe(vm_offset_t port, struct bus_ctlr *devc) +int +apmprobe(vm_offset_t port, struct bus_ctlr *devc) #endif /* MACH_KERNEL */ { #ifdef __FreeBSD__ @@ -785,7 +792,7 @@ apm_processevent(struct apm_softc *sc) */ #ifdef __FreeBSD__ -int +static int apmattach(struct isa_device *dvp) #endif /* __FreeBSD__ */ #ifdef MACH_KERNEL @@ -795,6 +802,7 @@ apmattach(struct bus_device *dvp) { #ifdef __FreeBSD__ int unit = dvp->id_unit; + char name[32]; #define APM_KERNBASE KERNBASE #endif /* __FreeBSD__ */ #ifdef MACH_KERNEL @@ -908,12 +916,17 @@ apmattach(struct bus_device *dvp) sc->initialized = 1; #ifdef __FreeBSD__ +#ifdef DEVFS + sprintf(name,"apm%d",unit); + sc->sc_devfs_token = devfs_add_devsw( + "/", name, &apm_cdevsw, unit, DV_CHR, 0, 0, 0600); +#endif return 0; #endif /* __FreeBSD__ */ } #ifdef __FreeBSD__ -int +static int apmopen(dev_t dev, int flag, int fmt, struct proc *p) { struct apm_softc *sc = &apm_softc[minor(dev)]; @@ -927,13 +940,13 @@ apmopen(dev_t dev, int flag, int fmt, struct proc *p) return 0; } -int +static int apmclose(dev_t dev, int flag, int fmt, struct proc *p) { return 0; } -int +static int apmioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p) { struct apm_softc *sc = &apm_softc[minor(dev)]; @@ -983,15 +996,10 @@ apmioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p) } -#ifdef JREMOD -struct cdevsw apm_cdevsw = - { apmopen, apmclose, noread, nowrite, /*39*/ - apmioctl, nostop, nullreset, nodevtotty,/* APM */ - seltrue, nommap, NULL }; - static apm_devsw_installed = 0; -static void apm_drvinit(void *unused) +static void +apm_drvinit(void *unused) { dev_t dev; @@ -999,21 +1007,11 @@ static void apm_drvinit(void *unused) dev = makedev(CDEV_MAJOR,0); cdevsw_add(&dev,&apm_cdevsw,NULL); apm_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*/ - "/", "apm", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(apmdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,apm_drvinit,NULL) -#endif /* JREMOD */ #endif /* __FreeBSD__ */ diff --git a/sys/i386/bios/apm.c b/sys/i386/bios/apm.c index eee873d..8b9b862 100644 --- a/sys/i386/bios/apm.c +++ b/sys/i386/bios/apm.c @@ -13,7 +13,7 @@ * * Sep, 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD) * - * $Id: apm.c,v 1.18 1995/11/29 14:39:17 julian Exp $ + * $Id: apm.c,v 1.19 1995/12/07 12:45:21 davidg Exp $ */ #include "apm.h" @@ -22,14 +22,12 @@ #ifdef __FreeBSD__ #include <sys/param.h> -#include "conf.h" -#ifdef JREMOD +#include <conf.h> #include <sys/conf.h> #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#endif /*JREMOD*/ #include <sys/kernel.h> #include <sys/systm.h> #include <sys/malloc.h> @@ -84,6 +82,7 @@ struct apm_softc { int idle_cpu, disabled, disengaged; struct apmhook sc_suspend; struct apmhook sc_resume; + void *sc_devfs_token; }; static struct apm_softc apm_softc[NAPM]; @@ -108,9 +107,16 @@ extern void fix_desc(struct fake_descriptor *, int); #ifdef __FreeBSD__ static timeout_t apm_timeout; -#ifdef JREMOD +static d_open_t apmopen; +static d_close_t apmclose; +static d_ioctl_t apmioctl; + #define CDEV_MAJOR 39 -#endif /* JREMOD */ +static struct cdevsw apm_cdevsw = + { apmopen, apmclose, noread, nowrite, /*39*/ + apmioctl, nostop, nullreset, nodevtotty,/* APM */ + seltrue, nommap, NULL , "apm" ,NULL, -1}; + #endif /* __FreeBSD__ */ #ifdef MACH_KERNEL static void apm_timeout(void *); @@ -644,8 +650,8 @@ apm_not_halt_cpu(struct apm_softc *sc) /* device driver definitions */ #ifdef __FreeBSD__ -int apmprobe (struct isa_device *); -int apmattach(struct isa_device *); +static int apmprobe (struct isa_device *); +static int apmattach(struct isa_device *); struct isa_driver apmdriver = { apmprobe, apmattach, "apm" }; #endif /* __FreeBSD__ */ @@ -669,12 +675,13 @@ struct bus_driver apmdriver = { * to use V86 mode in APM initialization. */ -int #ifdef __FreeBSD__ - apmprobe(struct isa_device *dvp) +static int +apmprobe(struct isa_device *dvp) #endif /* __FreeBSD__ */ #ifdef MACH_KERNEL - apmprobe(vm_offset_t port, struct bus_ctlr *devc) +int +apmprobe(vm_offset_t port, struct bus_ctlr *devc) #endif /* MACH_KERNEL */ { #ifdef __FreeBSD__ @@ -785,7 +792,7 @@ apm_processevent(struct apm_softc *sc) */ #ifdef __FreeBSD__ -int +static int apmattach(struct isa_device *dvp) #endif /* __FreeBSD__ */ #ifdef MACH_KERNEL @@ -795,6 +802,7 @@ apmattach(struct bus_device *dvp) { #ifdef __FreeBSD__ int unit = dvp->id_unit; + char name[32]; #define APM_KERNBASE KERNBASE #endif /* __FreeBSD__ */ #ifdef MACH_KERNEL @@ -908,12 +916,17 @@ apmattach(struct bus_device *dvp) sc->initialized = 1; #ifdef __FreeBSD__ +#ifdef DEVFS + sprintf(name,"apm%d",unit); + sc->sc_devfs_token = devfs_add_devsw( + "/", name, &apm_cdevsw, unit, DV_CHR, 0, 0, 0600); +#endif return 0; #endif /* __FreeBSD__ */ } #ifdef __FreeBSD__ -int +static int apmopen(dev_t dev, int flag, int fmt, struct proc *p) { struct apm_softc *sc = &apm_softc[minor(dev)]; @@ -927,13 +940,13 @@ apmopen(dev_t dev, int flag, int fmt, struct proc *p) return 0; } -int +static int apmclose(dev_t dev, int flag, int fmt, struct proc *p) { return 0; } -int +static int apmioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p) { struct apm_softc *sc = &apm_softc[minor(dev)]; @@ -983,15 +996,10 @@ apmioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p) } -#ifdef JREMOD -struct cdevsw apm_cdevsw = - { apmopen, apmclose, noread, nowrite, /*39*/ - apmioctl, nostop, nullreset, nodevtotty,/* APM */ - seltrue, nommap, NULL }; - static apm_devsw_installed = 0; -static void apm_drvinit(void *unused) +static void +apm_drvinit(void *unused) { dev_t dev; @@ -999,21 +1007,11 @@ static void apm_drvinit(void *unused) dev = makedev(CDEV_MAJOR,0); cdevsw_add(&dev,&apm_cdevsw,NULL); apm_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*/ - "/", "apm", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(apmdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,apm_drvinit,NULL) -#endif /* JREMOD */ #endif /* __FreeBSD__ */ diff --git a/sys/i386/i386/conf.c b/sys/i386/i386/conf.c index e65ce87..faaa9c3 100644 --- a/sys/i386/i386/conf.c +++ b/sys/i386/i386/conf.c @@ -42,7 +42,7 @@ * SUCH DAMAGE. * * from: @(#)conf.c 5.8 (Berkeley) 5/12/91 - * $Id: conf.c,v 1.111 1995/12/06 22:31:54 bde Exp $ + * $Id: conf.c,v 1.112 1995/12/07 12:45:27 davidg Exp $ */ #include <sys/param.h> @@ -58,7 +58,6 @@ #include <vm/vm_param.h> #include <vm/vm_extern.h> -#ifdef JREMOD #define NUMCDEV 96 #define NUMBDEV 32 @@ -68,827 +67,11 @@ int nblkdev = NUMBDEV; struct cdevsw cdevsw[NUMCDEV]; int nchrdev = NUMCDEV; -#else /*JREMOD*/ -/* Bogus defines for compatibility. */ -#define noioc noioctl -#define nostrat nostrategy -#define zerosize nopsize - -/* Lots of bogus defines for shorthand purposes */ -#define lkmopen (d_open_t *)lkmenodev -#define lkmclose (d_close_t *)lkmenodev -#define lkmread (d_rdwr_t *)lkmenodev -#define lkmwrite (d_rdwr_t *)lkmenodev -#define lkmstrategy (d_strategy_t *)lkmenodev -#define lkmioctl (d_ioctl_t *)lkmenodev -#define lkmdump (d_dump_t *)lkmenodev -#define lkmsize zerosize -#define lkmstop (d_stop_t *)lkmenodev -#define lkmreset (d_reset_t *)lkmenodev -#define lkmmmap (d_mmap_t *)lkmenodev -#define lkmselect (d_select_t *)lkmenodev - -#include "wd.h" -#if NWD == 0 -#define wdopen nxopen -#define wdclose nxclose -#define wdstrategy nxstrategy -#define wdioctl nxioctl -#define wddump nxdump -#define wdsize zerosize -#endif - -#include "worm.h" -#if NWORM == 0 -#define wormopen nxopen -#define wormclose nxclose -#define wormstrategy nxstrategy -#define wormioctl nxioctl -#define wormdump nxdump -#define wormsize zerosize -#endif - -#include "sctarg.h" -#if NSCTARG == 0 -#define sctargopen nxopen -#define sctargclose nxclose -#define sctargstrategy nxstrategy -#define sctargioctl nxioctl -#define sctargdump nxdump -#define sctargsize zerosize -#endif - -#include "pt.h" -#if NPT == 0 -#define ptopen nxopen -#define ptclose nxclose -#define ptstrategy nxstrategy -#define ptioctl nxioctl -#define ptdump nxdump -#define ptsize zerosize -#endif - -#include "sd.h" -#if NSD == 0 -#define sdopen nxopen -#define sdclose nxclose -#define sdstrategy nxstrategy -#define sdioctl nxioctl -#define sddump nxdump -#define sdsize zerosize -#endif - -#include "st.h" -#if NST == 0 -#define stopen nxopen -#define stclose nxclose -#define ststrategy nxstrategy -#define stioctl nxioctl -#endif - -#include "od.h" -#if NOD == 0 -#define odopen nxopen -#define odclose nxclose -#define odstrategy nxstrategy -#define odioctl nxioctl -#define odsize zerosize -#endif - -#include "cd.h" -#if NCD == 0 -#define cdopen nxopen -#define cdclose nxclose -#define cdstrategy nxstrategy -#define cdioctl nxioctl -#define cdsize zerosize -#endif - -#include "mcd.h" -#if NMCD == 0 -#define mcdopen nxopen -#define mcdclose nxclose -#define mcdstrategy nxstrategy -#define mcdioctl nxioctl -#define mcdsize zerosize -#endif - -#include "scd.h" -#if NSCD == 0 -#define scdopen nxopen -#define scdclose nxclose -#define scdstrategy nxstrategy -#define scdioctl nxioctl -#define scdsize zerosize -#endif - -#include "matcd.h" -#if NMATCD == 0 -#define matcdopen nxopen -#define matcdclose nxclose -#define matcdstrategy nxstrategy -#define matcdioctl nxioctl -#define matcdsize zerosize -#endif - -#include "ata.h" -#if NATA == 0 -#define ataopen nxopen -#define ataclose nxclose -#define atastrategy nxstrategy -#define ataioctl nxioctl -#define atasize zerosize -#endif - -#include "wcd.h" -#if NWCD == 0 -#define wcdbopen nxopen -#define wcdropen nxopen -#define wcdbclose nxclose -#define wcdrclose nxclose -#define wcdstrategy nxstrategy -#define wcdioctl nxioctl -#endif - -#include "ch.h" -#if NCH == 0 -#define chopen nxopen -#define chclose nxclose -#define chioctl nxioctl -#endif - -#include "wt.h" -#if NWT == 0 -#define wtopen nxopen -#define wtclose nxclose -#define wtstrategy nxstrategy -#define wtioctl nxioctl -#define wtdump nxdump -#define wtsize zerosize -#endif - -#include "fd.h" -#if NFD == 0 -#define Fdopen nxopen -#define fdclose nxclose -#define fdstrategy nxstrategy -#define fdioctl nxioctl -#endif - -#include "vn.h" -#if NVN == 0 -#define vnopen nxopen -#define vnclose nxclose -#define vnstrategy nxstrategy -#define vnioctl nxioctl -#define vndump nxdump -#define vnsize zerosize -#endif - -#include "meteor.h" -#if NMETEOR == 0 -#define meteor_open nxopen -#define meteor_close nxclose -#define meteor_read nxread -#define meteor_write nxwrite -#define meteor_ioctl nxioctl -#define meteor_mmap nxmmap -#endif - -struct bdevsw bdevsw[] = -{ - { wdopen, wdclose, wdstrategy, wdioctl, /*0*/ - wddump, wdsize, 0 }, - { noopen, noclose, swstrategy, noioc, /*1*/ - nodump, zerosize, 0 }, - { Fdopen, fdclose, fdstrategy, fdioctl, /*2*/ - nxdump, zerosize, 0 }, - { wtopen, wtclose, wtstrategy, wtioctl, /*3*/ - wtdump, wtsize, B_TAPE }, - { sdopen, sdclose, sdstrategy, sdioctl, /*4*/ - sddump, sdsize, 0 }, - { stopen, stclose, ststrategy, stioctl, /*5*/ - nxdump, zerosize, 0 }, - { cdopen, cdclose, cdstrategy, cdioctl, /*6*/ - nxdump, cdsize, 0 }, - { mcdopen, mcdclose, mcdstrategy, mcdioctl, /*7*/ - nxdump, mcdsize, 0 }, - { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*8*/ - lkmdump, lkmsize, NULL }, - { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*9*/ - lkmdump, lkmsize, NULL }, - { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*10*/ - lkmdump, lkmsize, NULL }, - { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*11*/ - lkmdump, lkmsize, NULL }, - { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*12*/ - lkmdump, lkmsize, NULL }, - { lkmopen, lkmclose, lkmstrategy, lkmioctl, /*13*/ - lkmdump, lkmsize, NULL }, - /* block device 14 is reserved for local use */ - { nxopen, nxclose, nxstrategy, nxioctl, /*14*/ - nxdump, zerosize, NULL }, - { vnopen, vnclose, vnstrategy, vnioctl, /*15*/ - vndump, vnsize, 0 }, - { scdopen, scdclose, scdstrategy, scdioctl, /*16*/ - nxdump, scdsize, 0 }, - { matcdopen, matcdclose, matcdstrategy, matcdioctl, /*17*/ - nxdump, matcdsize, 0 }, - { ataopen, ataclose, atastrategy, ataioctl, /*18*/ - nxdump, atasize, 0 }, - { wcdbopen, wcdbclose, wcdstrategy, wcdioctl, /*19*/ - nxdump, zerosize, 0 }, - { odopen, odclose, odstrategy, odioctl, /*20*/ - nxdump, odsize, 0 }, - -/* - * If you need a bdev major number for a driver that you intend to donate - * back to the group or release publically, please contact the FreeBSD team - * by sending mail to "FreeBSD-hackers@freefall.cdrom.com". - * If you assign one yourself it may conflict with someone else. - * Otherwise, simply use the one reserved for local use. - */ -}; -int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); - -/* console */ -#include "machine/cons.h" - -#include "pty.h" -#if NPTY == 0 -#define ptsopen nxopen -#define ptsclose nxclose -#define ptsread nxread -#define ptswrite nxwrite -#define ptcopen nxopen -#define ptcclose nxclose -#define ptcread nxread -#define ptcwrite nxwrite -#define ptyioctl nxioctl -#define ptcselect nxselect -#define ptsstop nullstop -#define ptydevtotty nxdevtotty -#endif - - -#include "snp.h" -#if NSNP == 0 -#define snpopen nxopen -#define snpclose nxclose -#define snpread nxread -#define snpwrite nxwrite -#define snpioctl nxioctl -#define snpselect nxselect -#endif - -#include "bqu.h" -#if NBQU == 0 -#define bquopen nxopen -#define bquclose nxclose -#define bquread nxread -#define bquwrite nxwrite -#define bquselect nxselect -#define bquioctl nxioctl -#endif - -#include "lpt.h" -#if NLPT == 0 -#define lptopen nxopen -#define lptclose nxclose -#define lptwrite nxwrite -#define lptioctl nxioctl -#endif - -#include "tw.h" -#if NTW == 0 -#define twopen nxopen -#define twclose nxclose -#define twread nxread -#define twwrite nxwrite -#define twselect nxselect -#endif - -#include "psm.h" -#if NPSM == 0 -#define psmopen nxopen -#define psmclose nxclose -#define psmread nxread -#define psmselect nxselect -#define psmioctl nxioctl -#endif - -#include "snd.h" -#if NSND == 0 -#define sndopen nxopen -#define sndclose nxclose -#define sndioctl nxioctl -#define sndread nxread -#define sndwrite nxwrite -#define sndselect seltrue -#endif - -#include "bpfilter.h" -#if NBPFILTER == 0 -#define bpfopen nxopen -#define bpfclose nxclose -#define bpfread nxread -#define bpfwrite nxwrite -#define bpfselect nxselect -#define bpfioctl nxioctl -#endif - -#include "speaker.h" -#if NSPEAKER == 0 -#define spkropen nxopen -#define spkrclose nxclose -#define spkrwrite nxwrite -#define spkrioctl nxioctl -#endif - -#include "pca.h" -#if NPCA == 0 -#define pcaopen nxopen -#define pcaclose nxclose -#define pcawrite nxwrite -#define pcaioctl nxioctl -#define pcaselect nxselect -#endif - -#include "mse.h" -#if NMSE == 0 -#define mseopen nxopen -#define mseclose nxclose -#define mseread nxread -#define mseselect nxselect -#endif - -#include "sio.h" -#if NSIO == 0 -#define sioopen nxopen -#define sioclose nxclose -#define sioread nxread -#define siowrite nxwrite -#define sioioctl nxioctl -#define siostop nxstop -#define siodevtotty nxdevtotty -#endif - -#include "su.h" -#if NSU == 0 -#define suopen nxopen -#define suclose nxclose -#define suioctl nxioctl -#define suread nxread -#define suwrite nxwrite -#define suselect nxselect -#define sustrategy nxstrategy -#endif - -#include "scbus.h" -#if NSCBUS == 0 -#define ukopen nxopen -#define ukclose nxclose -#define ukioctl nxioctl -#endif - -#include "apm.h" -#if NAPM == 0 -#define apmopen nxopen -#define apmclose nxclose -#define apmioctl nxioctl -#endif - -#include "ctx.h" -#if NCTX == 0 -#define ctxopen nxopen -#define ctxclose nxclose -#define ctxread nxread -#define ctxwrite nxwrite -#define ctxioctl nxioctl -#endif - -#include "ssc.h" -#if NSSC == 0 -#define sscopen nxopen -#define sscclose nxclose -#define sscioctl nxioctl -#endif - -#include "cx.h" -#if NCX == 0 -#define cxopen nxopen -#define cxclose nxclose -#define cxread nxread -#define cxwrite nxwrite -#define cxioctl nxioctl -#define cxstop nxstop -#define cxselect nxselect -#define cxdevtotty nxdevtotty -#endif - -#include "gp.h" -#if NGP == 0 -#define gpopen nxopen -#define gpclose nxclose -#define gpwrite nxwrite -#define gpioctl nxioctl -#endif - -#include "gsc.h" -#if NGSC == 0 -#define gscopen nxopen -#define gscclose nxclose -#define gscread nxread -#define gscioctl nxioctl -#endif - -#include "crd.h" -#if NCRD == 0 -#define crdopen nxopen -#define crdclose nxclose -#define crdread nxread -#define crdwrite nxwrite -#define crdioctl nxioctl -#define crdselect nxselect - -#endif - -#include "joy.h" -#if NJOY == 0 -#define joyopen nxopen -#define joyclose nxclose -#define joyread nxread -#define joyioctl nxioctl -#endif - -#include "asc.h" -#if NASC == 0 -#define ascopen nxopen -#define ascclose nxclose -#define ascread nxread -#define ascioctl nxioctl -#define ascselect nxselect -#endif - -#include "tun.h" -#if NTUN == 0 -#define tunopen nxopen -#define tunclose nxclose -#define tunread nxread -#define tunwrite nxwrite -#define tunioctl nxioctl -#define tunselect nxselect -#endif - -#include "spigot.h" -#if NSPIGOT == 0 -#define spigot_open nxopen -#define spigot_close nxclose -#define spigot_ioctl nxioctl -#define spigot_read nxread -#define spigot_write nxwrite -#define spigot_select seltrue -#define spigot_mmap nommap -#endif - -#include "cy.h" -#if NCY == 0 -#define cyopen nxopen -#define cyclose nxclose -#define cyread nxread -#define cywrite nxwrite -#define cyioctl nxioctl -#define cystop nxstop -#define cydevtotty nxdevtotty -#endif - -#include "dgb.h" -#if NDGB == 0 -#define dgbopen nxopen -#define dgbclose nxclose -#define dgbread nxread -#define dgbwrite nxwrite -#define dgbioctl nxioctl -#define dgbstop nxstop -#define dgbdevtotty nxdevtotty -#endif - -#include "si.h" -#if NSI == 0 -#define siopen nxopen -#define siclose nxclose -#define siread nxread -#define siwrite nxwrite -#define siioctl nxioctl -#define sistop nxstop -#define sidevtotty nxdevtotty -#endif - -#include "ity.h" -#if NITY == 0 -#define ityopen nxopen -#define ityclose nxclose -#define ityread nxread -#define itywrite nxwrite -#define ityioctl nxioctl -#define itystop nxstop -#define itydevtotty nxdevtotty -#endif - -#include "nic.h" -#if NNIC == 0 -#define nicopen nxopen -#define nicclose nxclose -#define nicioctl nxioctl -#endif - -#include "nnic.h" -#if NNNIC == 0 -#define nnicopen nxopen -#define nnicclose nxclose -#define nnicioctl nxioctl -#endif - -#include "isdn.h" -#if NISDN == 0 -#define isdnopen nxopen -#define isdnclose nxclose -#define isdnread nxread -#define isdnioctl nxioctl -#endif - -#include "itel.h" -#if NITEL == 0 -#define itelopen nxopen -#define itelclose nxclose -#define itelread nxread -#define itelwrite nxwrite -#define itelioctl nxioctl -#endif - -#include "ispy.h" -#if NISPY == 0 -#define ispyopen nxopen -#define ispyclose nxclose -#define ispyread nxread -#define ispywrite nxwrite -#define ispyioctl nxioctl -#endif - -#include "rc.h" -#if NRC == 0 -#define rcopen nxopen -#define rcclose nxclose -#define rcread nxread -#define rcwrite nxwrite -#define rcioctl nxioctl -#define rcstop nxstop -#define rcdevtotty nxdevtotty -#endif - -#include "labpc.h" -#if NLABPC == 0 -#define labpcopen nxopen -#define labpcclose nxclose -#define labpcstrategy nxstrategy -#define labpcioctl nxioctl -#endif - -/* open, close, read, write, ioctl, stop, reset, ttys, select, mmap, strat */ -struct cdevsw cdevsw[] = -{ - { cnopen, cnclose, cnread, cnwrite, /*0*/ - cnioctl, nullstop, nullreset, nodevtotty,/* console */ - cnselect, nommap, NULL }, - { cttyopen, nullclose, cttyread, cttywrite, /*1*/ - cttyioctl, nullstop, nullreset, nodevtotty,/* tty */ - cttyselect, nommap, NULL }, - { mmopen, mmclose, mmrw, mmrw, /*2*/ - mmioctl, nullstop, nullreset, nodevtotty,/* memory */ - seltrue, memmmap, NULL }, - { wdopen, wdclose, rawread, rawwrite, /*3*/ - wdioctl, nostop, nullreset, nodevtotty,/* wd */ - seltrue, nommap, wdstrategy }, - { nullopen, nullclose, rawread, rawwrite, /*4*/ - noioc, nostop, noreset, nodevtotty,/* swap */ - noselect, nommap, swstrategy }, - { ptsopen, ptsclose, ptsread, ptswrite, /*5*/ - ptyioctl, ptsstop, nullreset, ptydevtotty,/* ttyp */ - ttselect, nommap, NULL }, - { ptcopen, ptcclose, ptcread, ptcwrite, /*6*/ - ptyioctl, nullstop, nullreset, ptydevtotty,/* ptyp */ - ptcselect, nommap, NULL }, - { logopen, logclose, logread, nowrite, /*7*/ - logioctl, nostop, nullreset, nodevtotty,/* klog */ - logselect, nommap, NULL }, - { bquopen, bquclose, bquread, bquwrite, /*8*/ - bquioctl, nostop, nullreset, nodevtotty,/* tputer */ - bquselect, nommap, NULL }, - { Fdopen, fdclose, rawread, rawwrite, /*9*/ - fdioctl, nostop, nullreset, nodevtotty,/* Fd (!=fd) */ - seltrue, nommap, fdstrategy }, - { wtopen, wtclose, rawread, rawwrite, /*10*/ - wtioctl, nostop, nullreset, nodevtotty,/* wt */ - seltrue, nommap, wtstrategy }, - { spigot_open, spigot_close, spigot_read, spigot_write, /*11*/ - spigot_ioctl, nostop, nullreset, nodevtotty,/* Spigot */ - spigot_select, spigot_mmap, NULL }, - { nxopen, nxclose, nxread, nxwrite, /*12*/ - nxioctl, nxstop, nxreset, nxdevtotty,/* sc, ... */ - nxselect, nxmmap, NULL }, - { sdopen, sdclose, rawread, rawwrite, /*13*/ - sdioctl, nostop, nullreset, nodevtotty,/* sd */ - seltrue, nommap, sdstrategy }, - { stopen, stclose, rawread, rawwrite, /*14*/ - stioctl, nostop, nullreset, nodevtotty,/* st */ - seltrue, nommap, ststrategy }, - { cdopen, cdclose, rawread, nowrite, /*15*/ - cdioctl, nostop, nullreset, nodevtotty,/* cd */ - seltrue, nommap, cdstrategy }, - { lptopen, lptclose, noread, lptwrite, /*16*/ - lptioctl, nullstop, nullreset, nodevtotty,/* lpt */ - seltrue, nommap, nostrat}, - { chopen, chclose, noread, nowrite, /*17*/ - chioctl, nostop, nullreset, nodevtotty,/* ch */ - noselect, nommap, nostrat }, - { suopen, suclose, suread, suwrite, /*18*/ - suioctl, nostop, nullreset, nodevtotty,/* scsi */ - suselect, nxmmap, sustrategy }, /* 'generic' */ - { twopen, twclose, twread, twwrite, /*19*/ - noioc, nullstop, nullreset, nodevtotty,/* tw */ - twselect, nommap, nostrat }, -/* - * If you need a cdev major number for a driver that you intend to donate - * back to the group or release publically, please contact the FreeBSD team - * by sending mail to "hackers@freebsd.org". - * If you assign one yourself it may conflict with someone else. - * Otherwise, simply use the one reserved for local use. - */ - /* character device 20 is reserved for local use */ - { nxopen, nxclose, nxread, nxwrite, /*20*/ - nxioctl, nxstop, nxreset, nxdevtotty,/* reserved */ - nxselect, nxmmap, NULL }, - { psmopen, psmclose, psmread, nowrite, /*21*/ - psmioctl, nostop, nullreset, nodevtotty,/* psm mice */ - psmselect, nommap, NULL }, - { fdopen, noclose, noread, nowrite, /*22*/ - noioc, nostop, nullreset, nodevtotty,/* fd (!=Fd) */ - noselect, nommap, nostrat }, - { bpfopen, bpfclose, bpfread, bpfwrite, /*23*/ - bpfioctl, nostop, nullreset, nodevtotty,/* bpf */ - bpfselect, nommap, NULL }, - { pcaopen, pcaclose, noread, pcawrite, /*24*/ - pcaioctl, nostop, nullreset, nodevtotty,/* pcaudio */ - pcaselect, nommap, NULL }, - { nxopen, nxclose, nxread, nxwrite, /*25*/ - nxioctl, nxstop, nxreset, nxdevtotty,/* was vat */ - nxselect, nxmmap, NULL }, - { spkropen, spkrclose, noread, spkrwrite, /*26*/ - spkrioctl, nostop, nullreset, nodevtotty,/* spkr */ - seltrue, nommap, NULL }, - { mseopen, mseclose, mseread, nowrite, /*27*/ - noioc, nostop, nullreset, nodevtotty,/* mse */ - mseselect, nommap, NULL }, - { sioopen, sioclose, sioread, siowrite, /*28*/ - sioioctl, siostop, nxreset, siodevtotty,/* sio */ - ttselect, nommap, NULL }, - { mcdopen, mcdclose, rawread, nowrite, /*29*/ - mcdioctl, nostop, nullreset, nodevtotty,/* mitsumi cd */ - seltrue, nommap, mcdstrategy }, - { sndopen, sndclose, sndread, sndwrite, /*30*/ - sndioctl, nostop, nullreset, nodevtotty,/* sound */ - sndselect, nommap, NULL }, - { ukopen, ukclose, noread, nowrite, /*31*/ - ukioctl, nostop, nullreset, nodevtotty,/* unknown */ - seltrue, nommap, NULL }, /* scsi */ - { lkmcopen, lkmcclose, noread, nowrite, /*32*/ - lkmcioctl, nostop, nullreset, nodevtotty, - noselect, nommap, NULL }, - { lkmopen, lkmclose, lkmread, lkmwrite, /*33*/ - lkmioctl, lkmstop, lkmreset, nodevtotty, - lkmselect, lkmmmap, NULL }, - { lkmopen, lkmclose, lkmread, lkmwrite, /*34*/ - lkmioctl, lkmstop, lkmreset, nodevtotty, - lkmselect, lkmmmap, NULL }, - { lkmopen, lkmclose, lkmread, lkmwrite, /*35*/ - lkmioctl, lkmstop, lkmreset, nodevtotty, - lkmselect, lkmmmap, NULL }, - { lkmopen, lkmclose, lkmread, lkmwrite, /*36*/ - lkmioctl, lkmstop, lkmreset, nodevtotty, - lkmselect, lkmmmap, NULL }, - { lkmopen, lkmclose, lkmread, lkmwrite, /*37*/ - lkmioctl, lkmstop, lkmreset, nodevtotty, - lkmselect, lkmmmap, NULL }, - { lkmopen, lkmclose, lkmread, lkmwrite, /*38*/ - lkmioctl, lkmstop, lkmreset, nodevtotty, - lkmselect, lkmmmap, NULL }, - { apmopen, apmclose, noread, nowrite, /*39*/ - apmioctl, nostop, nullreset, nodevtotty,/* APM */ - seltrue, nommap, NULL }, - { ctxopen, ctxclose, ctxread, ctxwrite, /*40*/ - ctxioctl, nostop, nullreset, nodevtotty,/* cortex */ - seltrue, nommap, NULL }, - { nxopen, nxclose, nxread, nxwrite, /*41*/ - nxioctl, nxstop, nullreset, nxdevtotty,/* was socksys */ - seltrue, nommap, NULL }, - { cxopen, cxclose, cxread, cxwrite, /*42*/ - cxioctl, cxstop, nullreset, cxdevtotty,/* cronyx */ - cxselect, nommap, NULL }, - { vnopen, vnclose, rawread, rawwrite, /*43*/ - vnioctl, nostop, nullreset, nodevtotty,/* vn */ - seltrue, nommap, vnstrategy }, - { gpopen, gpclose, noread, gpwrite, /*44*/ - gpioctl, nostop, nullreset, nodevtotty,/* GPIB */ - seltrue, nommap, NULL }, - { scdopen, scdclose, rawread, nowrite, /*45*/ - scdioctl, nostop, nullreset, nodevtotty,/* sony cd */ - seltrue, nommap, scdstrategy }, - { matcdopen, matcdclose, rawread, nowrite, /*46*/ - matcdioctl, nostop, nullreset, nodevtotty,/* SB cd */ - seltrue, nommap, matcdstrategy }, - { gscopen, gscclose, gscread, nowrite, /*47*/ - gscioctl, nostop, nullreset, nodevtotty,/* gsc */ - seltrue, nommap, NULL }, - { cyopen, cyclose, cyread, cywrite, /*48*/ - cyioctl, cystop, nxreset, cydevtotty,/*cyclades*/ - ttselect, nxmmap, NULL }, - { sscopen, sscclose, noread, nowrite, /*49*/ - sscioctl, nostop, nullreset, nodevtotty,/* scsi super */ - noselect, nommap, nostrategy }, - { crdopen, crdclose, crdread, crdwrite, /*50*/ - crdioctl, nostop, nullreset, nodevtotty,/* pcmcia */ - crdselect, nommap, NULL }, - { joyopen, joyclose, joyread, nowrite, /*51*/ - joyioctl, nostop, nullreset, nodevtotty,/*joystick */ - seltrue, nommap, NULL}, - { tunopen, tunclose, tunread, tunwrite, /*52*/ - tunioctl, nostop, nullreset, nodevtotty,/* tunnel */ - tunselect, nommap, NULL }, - { snpopen, snpclose, snpread, snpwrite, /*53*/ - snpioctl, nostop, nullreset, nodevtotty,/* snoop */ - snpselect, nommap, NULL }, - { nicopen, nicclose, noread, nowrite, /*54*/ - nicioctl, nostop, nullreset, nodevtotty,/* nic */ - seltrue, nommap, NULL }, - { isdnopen, isdnclose, isdnread, nowrite, /*55*/ - isdnioctl, nostop, nullreset, nodevtotty,/* isdn */ - seltrue, nommap, NULL }, - { ityopen, ityclose, ityread, itywrite, /*56*/ - ityioctl, itystop, noreset, itydevtotty,/* ity */ - ttselect, nommap, NULL }, - { itelopen, itelclose, itelread, itelwrite, /*57*/ - itelioctl, nostop, nullreset, nodevtotty,/* itel */ - seltrue, nommap, NULL }, - { dgbopen, dgbclose, dgbread, dgbwrite, /*58*/ - dgbioctl, dgbstop, nxreset, dgbdevtotty, /* dgb */ - ttselect, nommap, NULL }, - { ispyopen, ispyclose, ispyread, nowrite, /*59*/ - ispyioctl, nostop, nullreset, nodevtotty,/* ispy */ - seltrue, nommap, NULL }, - { nnicopen, nnicclose, noread, nowrite, /*60*/ - nnicioctl, nostop, nullreset, nodevtotty,/* nnic */ - seltrue, nommap, NULL }, - { ptopen, ptclose, rawread, rawwrite, /*61*/ - ptioctl, nostop, nullreset, nodevtotty,/* pt */ - seltrue, nommap, ptstrategy }, - { wormopen, wormclose, rawread, rawwrite, /*62*/ - wormioctl, nostop, nullreset, nodevtotty,/* worm */ - seltrue, nommap, wormstrategy }, - { rcopen, rcclose, rcread, rcwrite, /*63*/ - rcioctl, rcstop, nxreset, rcdevtotty,/* rc */ - ttselect, nommap, NULL }, - { nxopen, nxclose, nxread, nxwrite, /*64*/ - nxioctl, nxstop, nxreset, nxdevtotty,/* Talisman */ - nxselect, nxmmap, NULL }, - { sctargopen, sctargclose, rawread, rawwrite, /*65*/ - sctargioctl, nostop, nullreset, nodevtotty,/* sctarg */ - seltrue, nommap, sctargstrategy }, - { labpcopen, labpcclose, rawread, rawwrite, /*66*/ - labpcioctl, nostop, nullreset, nodevtotty,/* labpc */ - seltrue, nommap, labpcstrategy }, - { meteor_open, meteor_close, meteor_read, meteor_write, /*67*/ - meteor_ioctl, nostop, nullreset, nodevtotty,/* Meteor */ - seltrue, meteor_mmap, NULL }, - { siopen, siclose, siread, siwrite, /*68*/ - siioctl, sistop, nxreset, sidevtotty,/* slxos */ - ttselect, nxmmap, NULL }, - { wcdropen, wcdrclose, rawread, nowrite, /*69*/ - wcdioctl, nostop, nullreset, nodevtotty,/* atapi */ - seltrue, nommap, wcdstrategy }, - { odopen, odclose, rawread, rawwrite, /*70*/ - odioctl, nostop, nullreset, nodevtotty,/* od */ - seltrue, nommap, odstrategy }, - { ascopen, ascclose, ascread, nowrite, /*71*/ - ascioctl, nostop, nullreset, nodevtotty, /* asc */ - ascselect, nommap, NULL } - -}; -int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); -#endif /*JREMOD*/ /* * The routines below are total "BULLSHIT" and will be trashed * When I have 'proved' the JREMOD changes above.. */ +#ifndef NEW_STUFF_JRE /* * Swapdev is a fake device implemented @@ -1036,11 +219,7 @@ register_cdev(name, cdp) dst_cdp = getcdevbyname(name); if (dst_cdp == NULL) return (ENXIO); -#ifdef JREMOD if ((dst_cdp->d_open != nxopen) && (dst_cdp->d_open != NULL)) -#else /*JREMOD*/ - if (dst_cdp->d_open != nxopen) -#endif /*JREMOD*/ return (EBUSY); *dst_cdp = *cdp; return (0); @@ -1067,3 +246,170 @@ unregister_cdev(name, cdp) *dst_cdp = nxcdevsw; return (0); } +#else /* NEW_STUFF_JRE *//*===============================================*/ + +dev_t swapdev = makedev(1, 0); + +/* + * Routine that identifies /dev/mem and /dev/kmem. + * + * A minimal stub routine can always return 0. + */ +int +iskmemdev(dev) + dev_t dev; +{ + + return (major(dev) == 2 && (minor(dev) == 0 || minor(dev) == 1)); +} + +int +iszerodev(dev) + dev_t dev; +{ + return (major(dev) == 2 && minor(dev) == 12); +} + +/* + * Routine to determine if a device is a disk. + * + * A minimal stub routine can always return 0. + * XXX will look in the FLAGS (eventually) + */ +int +isdisk(dev, type) + dev_t dev; + int type; +{ + + switch (major(dev)) { + case 15: /* VBLK: vn, VCHR: cd */ + return (1); + case 0: /* wd */ + case 2: /* fd */ + case 4: /* sd */ + case 6: /* cd */ + case 7: /* mcd */ + case 16: /* scd */ + case 17: /* matcd */ + case 18: /* ata */ + case 19: /* wcd */ + case 20: /* od */ + if (type == VBLK) + return (1); + return (0); + case 3: /* wd */ + case 9: /* fd */ + case 13: /* sd */ + case 29: /* mcd */ + case 43: /* vn */ + case 45: /* scd */ + case 46: /* matcd */ + case 69: /* wcd */ + case 70: /* od */ + if (type == VCHR) + return (1); + /* fall through */ + default: + return (0); + } + /* NOTREACHED */ +} + +/* + * Routine to convert from character to block device number. + * + * A minimal stub routine can always return NODEV. + */ +dev_t +chrtoblk(dev) + dev_t dev; +{ + int blkmaj; + struct bdevsw *bd; + + bd = cdevsw[major(dev)].d_bdev; + if ( bd ) + return(makedev(bd->d_maj,minor(dev))); + else + return(NODEV); +} + +/* Only checks cdevs */ +int +getmajorbyname(name) + const char *name; +{ + struct cdevsw *cd; + int maj; + char *dname; + + for( maj = 0; maj <nchrdev ; maj++) { + if ( dname = cdevsw[maj].d_name) { + if ( strcmp(name, dname) == 0 ) { + return maj; + } + } + } + return -1; /* XXX */ /* Was 0 */ +} + + +/* utterly pointless with devfs */ +static struct cdevsw * +getcdevbyname(name) + const char *name; +{ + struct cdevsw *cd; + int maj; + char *dname; + + for( maj = 0; maj <nchrdev ; maj++) { + if ( dname = cdevsw[maj].d_name) { + if ( strcmp(name, dname) == 0 ) { + return &(cdevsw[maj]); + } + } + } + return NULL; +} + +/* Zap these as soon as we find out who calls them */ +int +register_cdev(name, cdp) + const char *name; + const struct cdevsw *cdp; +{ + struct cdevsw *dst_cdp; + + dst_cdp = getcdevbyname(name); + if (dst_cdp == NULL) + return (ENXIO); + if ((dst_cdp->d_open != nxopen) && (dst_cdp->d_open != NULL)) + return (EBUSY); + *dst_cdp = *cdp; + return (0); +} + +static struct cdevsw nxcdevsw = { + nxopen, nxclose, nxread, nxwrite, + nxioctl, nxstop, nxreset, nxdevtotty, + nxselect, nxmmap, NULL, +}; + +int +unregister_cdev(name, cdp) + const char *name; + const struct cdevsw *cdp; +{ + struct cdevsw *dst_cdp; + + dst_cdp = getcdevbyname(name); + if (dst_cdp == NULL) + return (ENXIO); + if (dst_cdp->d_open != cdp->d_open) + return (EBUSY); + *dst_cdp = nxcdevsw; + return (0); +} +#endif /* NEW_STIFF_JRE */ diff --git a/sys/i386/i386/cons.c b/sys/i386/i386/cons.c index 7f2e4d7..4624a28 100644 --- a/sys/i386/i386/cons.c +++ b/sys/i386/i386/cons.c @@ -36,26 +36,22 @@ * SUCH DAMAGE. * * from: @(#)cons.c 7.2 (Berkeley) 5/9/91 - * $Id: cons.c,v 1.35 1995/11/29 10:47:17 julian Exp $ + * $Id: cons.c,v 1.36 1995/11/29 14:39:24 julian Exp $ */ #include <sys/param.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /*DEVFS*/ #include <sys/systm.h> #include <sys/conf.h> +#include <sys/kernel.h> #include <sys/proc.h> #include <sys/tty.h> #include <machine/cons.h> #include <machine/stdarg.h> -#ifdef JREMOD -#include <sys/kernel.h> -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 0 -#endif /*JREMOD*/ - /* XXX this should be config(8)ed. */ #include "sc.h" #include "vt.h" @@ -73,6 +69,19 @@ static struct consdev constab[] = { { 0 }, }; +static d_open_t cnopen; +static d_close_t cnclose; +static d_read_t cnread; +static d_write_t cnwrite; +static d_ioctl_t cnioctl; +static d_select_t cnselect; + +#define CDEV_MAJOR 0 +struct cdevsw cn_cdevsw = + { cnopen, cnclose, cnread, cnwrite, /*0*/ + cnioctl, nullstop, nullreset, nodevtotty,/* console */ + cnselect, nommap, NULL, "console", NULL, -1 }; + struct tty *constty = 0; /* virtual console output device */ struct tty *cn_tty; /* XXX: console tty struct for tprintf */ int cons_unavail = 0; /* XXX: @@ -86,6 +95,9 @@ static d_close_t *cn_phys_close; /* physical device close function */ static d_open_t *cn_phys_open; /* physical device open function */ static struct consdev *cn_tab; /* physical console device info */ static struct tty *cn_tp; /* physical console tty struct */ +#ifdef DEVFS +void *cn_devfs_token; /* represents the devfs entry */ +#endif /* DEVFS */ void cninit() @@ -148,7 +160,7 @@ cninit_finish() cn_tty = cn_tp; } -int +static int cnopen(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -171,7 +183,7 @@ cnopen(dev, flag, mode, p) return (retval); } -int +static int cnclose(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -204,7 +216,7 @@ cnclose(dev, flag, mode, p) return ((*cn_phys_close)(dev, flag, mode, p)); } -int +static int cnread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -216,7 +228,7 @@ cnread(dev, uio, flag) return ((*cdevsw[major(dev)].d_read)(dev, uio, flag)); } -int +static int cnwrite(dev, uio, flag) dev_t dev; struct uio *uio; @@ -231,7 +243,7 @@ cnwrite(dev, uio, flag) return ((*cdevsw[major(dev)].d_write)(dev, uio, flag)); } -int +static int cnioctl(dev, cmd, data, flag, p) dev_t dev; int cmd; @@ -258,7 +270,7 @@ cnioctl(dev, cmd, data, flag, p) return ((*cdevsw[major(dev)].d_ioctl)(dev, cmd, data, flag, p)); } -int +static int cnselect(dev, rw, p) dev_t dev; int rw; @@ -312,18 +324,11 @@ pg(const char *p, ...) { return(cngetc()); } - -#ifdef JREMOD -struct cdevsw cn_cdevsw = - { cnopen, cnclose, cnread, cnwrite, /*0*/ - cnioctl, nullstop, nullreset, nodevtotty,/* console */ - cnselect, nommap, NULL }; - static cn_devsw_installed = 0; -static void cn_drvinit(void *unused) +static void +cn_drvinit(void *unused) { - void * x; dev_t dev; if( ! cn_devsw_installed ) { @@ -331,13 +336,19 @@ static void cn_drvinit(void *unused) cdevsw_add(&dev,&cn_cdevsw,NULL); cn_devsw_installed = 1; #ifdef DEVFS - /* path,name,major,minor,type,uid,gid,perm */ - x=devfs_add_devsw("/","console",major(dev),0,DV_CHR,0,0,0640); + cn_devfs_token = devfs_add_devsw( + "/", + "console", + &cn_cdevsw, + 0, + DV_CHR, + 0, + 0, + 0640); #endif } } SYSINIT(cndev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cn_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/i386/i386/cons.h b/sys/i386/i386/cons.h index 8fbd43f..8fa2d90 100644 --- a/sys/i386/i386/cons.h +++ b/sys/i386/i386/cons.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)cons.h 7.2 (Berkeley) 5/9/91 - * $Id: cons.h,v 1.10 1995/09/10 18:57:26 bde Exp $ + * $Id: cons.h,v 1.11 1995/09/10 21:34:50 bde Exp $ */ #ifndef _MACHINE_CONS_H_ @@ -106,14 +106,6 @@ extern int cons_unavail; struct proc; struct uio; -/* cdevsw[] entries */ -extern int cnopen(dev_t, int, int, struct proc *); -extern int cnclose(dev_t, int, int, struct proc *); -extern int cnread(dev_t, struct uio *, int); -extern int cnwrite(dev_t, struct uio *, int); -extern int cnioctl(dev_t, int, caddr_t, int, struct proc *); -extern int cnselect(dev_t, int, struct proc *); - /* other kernel entry points */ extern void cninit(void); extern void cninit_finish(void); diff --git a/sys/i386/i386/mem.c b/sys/i386/i386/mem.c index 5fb364e..6d8a94c 100644 --- a/sys/i386/i386/mem.c +++ b/sys/i386/i386/mem.c @@ -38,7 +38,7 @@ * * from: Utah $Hdr: mem.c 1.13 89/10/08$ * from: @(#)mem.c 7.2 (Berkeley) 5/9/91 - * $Id: mem.c,v 1.21 1995/11/29 14:39:26 julian Exp $ + * $Id: mem.c,v 1.22 1995/12/07 12:45:34 davidg Exp $ */ /* @@ -48,6 +48,10 @@ #include <sys/param.h> #include <sys/conf.h> #include <sys/buf.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /* DEVFS */ +#include <sys/kernel.h> #include <sys/systm.h> #include <sys/uio.h> #include <sys/malloc.h> @@ -64,33 +68,53 @@ #include <vm/pmap.h> #include <vm/vm_extern.h> -#ifdef JREMOD -#include <sys/kernel.h> + + +static d_open_t mmopen; +static d_close_t mmclose; +static d_rdwr_t mmrw; +static d_ioctl_t mmioctl; +static d_mmap_t memmmap; + #define CDEV_MAJOR 2 -#endif /*JREMOD*/ +struct cdevsw mem_cdevsw = + { mmopen, mmclose, mmrw, mmrw, /*2*/ + mmioctl, nullstop, nullreset, nodevtotty,/* memory */ + seltrue, memmmap, NULL, "mem", NULL, -1 }; #ifdef DEVFS -#include <sys/devfsext.h> - -static void -memdevfs_init(dev_t dev) +static void *mem_devfs_token; +static void *kmem_devfs_token; +static void *null_devfs_token; +static void *random_devfs_token; +static void *urandom_devfs_token; +static void *zero_devfs_token; +static void *io_devfs_token; + +static void +memdevfs_init() { - void * x; - int maj = major(dev); -/* path name major minor type uid gid perm*/ - x=devfs_add_devsw("/misc", "mem", maj, 0, DV_CHR, 0, 2, 0640); - x=devfs_add_devsw("/misc", "kmem", maj, 1, DV_CHR, 0, 2, 0640); - x=devfs_add_devsw("/misc", "null", maj, 2, DV_CHR, 0, 0, 0666); - x=devfs_add_devsw("/misc", "random", maj, 3, DV_CHR, 0, 0, 0666); - x=devfs_add_devsw("/misc", "urandom", maj, 4, DV_CHR, 0, 0, 0666); - x=devfs_add_devsw("/misc", "zero", maj, 12, DV_CHR, 0, 0, 0666); - x=devfs_add_devsw("/misc", "io", maj, 14, DV_CHR, 0, 2, 0640); +/* path name cdevsw minor type uid gid perm*/ + mem_devfs_token = devfs_add_devsw( + "/", "mem", &mem_cdevsw, 0, DV_CHR, 0, 2, 0640); + kmem_devfs_token = devfs_add_devsw( + "/", "kmem", &mem_cdevsw, 1, DV_CHR, 0, 2, 0640); + null_devfs_token = devfs_add_devsw( + "/", "null", &mem_cdevsw, 2, DV_CHR, 0, 0, 0666); + random_devfs_token = devfs_add_devsw( + "/", "random", &mem_cdevsw, 3, DV_CHR, 0, 0, 0666); + urandom_devfs_token = devfs_add_devsw( + "/", "urandom", &mem_cdevsw, 4, DV_CHR, 0, 0, 0666); + zero_devfs_token = devfs_add_devsw( + "/", "zero", &mem_cdevsw, 12, DV_CHR, 0, 0, 0666); + io_devfs_token = devfs_add_devsw( + "/", "io", &mem_cdevsw, 14, DV_CHR, 0, 2, 0640); } #endif /* DEVFS */ extern char *ptvmmap; /* poor name! */ -int +static int mmclose(dev, flags, fmt, p) dev_t dev; int flags; @@ -110,7 +134,7 @@ mmclose(dev, flags, fmt, p) return(0); } -int +static int mmopen(dev, flags, fmt, p) dev_t dev; int flags; @@ -130,7 +154,7 @@ mmopen(dev, flags, fmt, p) return(0); } -int +static int mmrw(dev, uio, flags) dev_t dev; struct uio *uio; @@ -317,7 +341,8 @@ mmrw(dev, uio, flags) * allow user processes to MMAP some memory sections * * instead of going through read/write * \*******************************************************/ -int memmmap(dev_t dev, int offset, int nprot) +static int +memmmap(dev_t dev, int offset, int nprot) { switch (minor(dev)) { @@ -339,7 +364,7 @@ int memmmap(dev_t dev, int offset, int nprot) * Allow userland to select which interrupts will be used in the muck * gathering business. */ -int +static int mmioctl(dev, cmd, cmdarg, flags, p) dev_t dev; int cmd; @@ -383,29 +408,22 @@ mmioctl(dev, cmd, cmdarg, flags, p) -#ifdef JREMOD -struct cdevsw mem_cdevsw = - { mmopen, mmclose, mmrw, mmrw, /*2*/ - mmioctl, nullstop, nullreset, nodevtotty,/* memory */ - seltrue, memmmap, NULL }; - static mem_devsw_installed = 0; -static void mem_drvinit(void *unused) +static void +mem_drvinit(void *unused) { dev_t dev; if( ! mem_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&mem_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&mem_cdevsw, NULL); mem_devsw_installed = 1; #ifdef DEVFS - memdevfs_init(dev); + memdevfs_init(); #endif } } SYSINIT(memdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,mem_drvinit,NULL) -#endif /* JREMOD */ - diff --git a/sys/i386/include/conf.h b/sys/i386/include/conf.h index f109737..ee6b603 100644 --- a/sys/i386/include/conf.h +++ b/sys/i386/include/conf.h @@ -2,383 +2,10 @@ #define _MACHINE_CONF_H_ #ifdef KERNEL - #ifndef ACTUALLY_LKM_NOT_KERNEL -/* - * XXX instead of this, the per-driver declarations should probably be - * put in the "driver.h" headers. Then ioconf.h could include all the - * "driver.h" headers and drivers would automatically include their - * own "driver.h" header, so we wouldn't need to include ioconf.h here. - * Interrupt handlers should probably be static. - */ #include "ioconf.h" #endif -/* - * The following was copied from the bogusly non-machine-generated - * file <i386/i386/conf.c>. Eventually the routines should be static. - */ - -/* bdevs. */ - -d_open_t wdopen; -d_close_t wdclose; -d_strategy_t wdstrategy; -d_ioctl_t wdioctl; -d_dump_t wddump; -d_psize_t wdsize; - -d_open_t wormopen; -d_close_t wormclose; -d_strategy_t wormstrategy; -d_ioctl_t wormioctl; -d_dump_t wormdump; -d_psize_t wormsize; - -d_open_t sctargopen; -d_close_t sctargclose; -d_strategy_t sctargstrategy; -d_ioctl_t sctargioctl; -d_dump_t sctargdump; -d_psize_t sctargsize; - -d_open_t ptopen; -d_close_t ptclose; -d_strategy_t ptstrategy; -d_ioctl_t ptioctl; -d_dump_t ptdump; -d_psize_t ptsize; - -d_open_t sdopen; -d_close_t sdclose; -d_strategy_t sdstrategy; -d_ioctl_t sdioctl; -d_dump_t sddump; -d_psize_t sdsize; - -d_open_t stopen; -d_close_t stclose; -d_strategy_t ststrategy; -d_ioctl_t stioctl; - -d_open_t odopen; -d_close_t odclose; -d_strategy_t odstrategy; -d_ioctl_t odioctl; -d_psize_t odsize; - -d_open_t cdopen; -d_close_t cdclose; -d_strategy_t cdstrategy; -d_ioctl_t cdioctl; -d_psize_t cdsize; - -d_open_t mcdopen; -d_close_t mcdclose; -d_strategy_t mcdstrategy; -d_ioctl_t mcdioctl; -d_psize_t mcdsize; - -d_open_t scdopen; -d_close_t scdclose; -d_strategy_t scdstrategy; -d_ioctl_t scdioctl; -d_psize_t scdsize; - -d_open_t matcdopen; -d_close_t matcdclose; -d_strategy_t matcdstrategy; -d_ioctl_t matcdioctl; -d_dump_t matcddump; -d_psize_t matcdsize; - -d_open_t ataopen; -d_close_t ataclose; -d_strategy_t atastrategy; -d_ioctl_t ataioctl; -d_psize_t atasize; - -d_open_t wcdbopen; -d_open_t wcdropen; -d_close_t wcdbclose; -d_close_t wcdrclose; -d_strategy_t wcdstrategy; -d_ioctl_t wcdioctl; - -d_open_t chopen; -d_close_t chclose; -d_strategy_t chstrategy; /* XXX not used */ -d_ioctl_t chioctl; - -d_open_t wtopen; -d_close_t wtclose; -d_strategy_t wtstrategy; -d_ioctl_t wtioctl; -d_dump_t wtdump; -d_psize_t wtsize; - -d_open_t Fdopen; -d_close_t fdclose; -d_strategy_t fdstrategy; -d_ioctl_t fdioctl; - -d_open_t vnopen; -d_close_t vnclose; -d_strategy_t vnstrategy; -d_ioctl_t vnioctl; -d_dump_t vndump; -d_psize_t vnsize; - -d_open_t meteor_open; -d_close_t meteor_close; -d_read_t meteor_read; -d_write_t meteor_write; -d_ioctl_t meteor_ioctl; -d_mmap_t meteor_mmap; - -d_rdwr_t swread, swwrite; - -/* cdevs. */ - -d_open_t mmopen; -d_close_t mmclose; -d_rdwr_t mmrw; -d_mmap_t memmmap; -d_ioctl_t mmioctl; - -d_open_t ptsopen; -d_close_t ptsclose; -d_rdwr_t ptsread; -d_rdwr_t ptswrite; -d_stop_t ptsstop; -d_open_t ptcopen; -d_close_t ptcclose; -d_rdwr_t ptcread; -d_rdwr_t ptcwrite; -d_select_t ptcselect; -d_ttycv_t ptydevtotty; -d_ioctl_t ptyioctl; - -d_open_t snpopen; -d_close_t snpclose; -d_rdwr_t snpread; -d_rdwr_t snpwrite; -d_select_t snpselect; -d_ioctl_t snpioctl; - -d_open_t logopen; -d_close_t logclose; -d_rdwr_t logread; -d_ioctl_t logioctl; -d_select_t logselect; - -d_open_t bquopen; -d_close_t bquclose; -d_rdwr_t bquread, bquwrite; -d_select_t bquselect; -d_ioctl_t bquioctl; - -d_open_t lptopen; -d_close_t lptclose; -d_rdwr_t lptwrite; -d_ioctl_t lptioctl; - -d_open_t twopen; -d_close_t twclose; -d_rdwr_t twread, twwrite; -d_select_t twselect; - -d_open_t psmopen; -d_close_t psmclose; -d_rdwr_t psmread; -d_select_t psmselect; -d_ioctl_t psmioctl; - -d_open_t sndopen; -d_close_t sndclose; -d_ioctl_t sndioctl; -d_rdwr_t sndread, sndwrite; -d_select_t sndselect; - -d_open_t fdopen; - -d_open_t bpfopen; -d_close_t bpfclose; -d_rdwr_t bpfread, bpfwrite; -d_select_t bpfselect; -d_ioctl_t bpfioctl; - -d_open_t spkropen; -d_close_t spkrclose; -d_rdwr_t spkrwrite; -d_ioctl_t spkrioctl; - -d_open_t pcaopen; -d_close_t pcaclose; -d_rdwr_t pcawrite; -d_ioctl_t pcaioctl; -d_select_t pcaselect; - -d_open_t mseopen; -d_close_t mseclose; -d_rdwr_t mseread; -d_select_t mseselect; - -d_open_t sioopen; -d_close_t sioclose; -d_rdwr_t sioread, siowrite; -d_ioctl_t sioioctl; -d_stop_t siostop; -d_ttycv_t siodevtotty; - -d_open_t suopen; -d_close_t suclose; -d_ioctl_t suioctl; -d_rdwr_t suread, suwrite; -d_select_t suselect; -d_strategy_t sustrategy; - -d_open_t ukopen; -d_close_t ukclose; -d_strategy_t ukstrategy; /* XXX not used */ -d_ioctl_t ukioctl; - -d_open_t lkmcopen; -d_close_t lkmcclose; -d_ioctl_t lkmcioctl; -d_open_t lkmenodev; /* XXX bogus; used for non-opens */ - -d_open_t apmopen; -d_close_t apmclose; -d_ioctl_t apmioctl; - -d_open_t ctxopen; -d_close_t ctxclose; -d_rdwr_t ctxread; -d_rdwr_t ctxwrite; -d_ioctl_t ctxioctl; - -d_open_t sscopen; -d_close_t sscclose; -d_ioctl_t sscioctl; - -d_open_t cxopen; -d_close_t cxclose; -d_rdwr_t cxread, cxwrite; -d_ioctl_t cxioctl; -d_select_t cxselect; -d_stop_t cxstop; -d_ttycv_t cxdevtotty; - -d_open_t gpopen; -d_close_t gpclose; -d_rdwr_t gpwrite; -d_ioctl_t gpioctl; - -d_open_t gscopen; -d_close_t gscclose; -d_rdwr_t gscread; -d_ioctl_t gscioctl; - -d_open_t crdopen; -d_close_t crdclose; -d_rdwr_t crdread, crdwrite; -d_ioctl_t crdioctl; -d_select_t crdselect; - -d_open_t joyopen; -d_close_t joyclose; -d_rdwr_t joyread; -d_ioctl_t joyioctl; - -d_open_t ascopen; -d_close_t ascclose; -d_rdwr_t ascread; -d_ioctl_t ascioctl; -d_select_t ascselect; - -d_open_t tunopen; -d_close_t tunclose; -d_rdwr_t tunread, tunwrite; -d_ioctl_t tunioctl; -d_select_t tunselect; - -d_open_t spigot_open; -d_close_t spigot_close; -d_ioctl_t spigot_ioctl; -d_rdwr_t spigot_read, spigot_write; -d_select_t spigot_select; -d_mmap_t spigot_mmap; - -d_open_t cyopen; -d_close_t cyclose; -d_read_t cyread; -d_write_t cywrite; -d_ioctl_t cyioctl; -d_stop_t cystop; -d_ttycv_t cydevtotty; - -d_open_t dgbopen; -d_close_t dgbclose; -d_rdwr_t dgbread; -d_rdwr_t dgbwrite; -d_ioctl_t dgbioctl; -d_stop_t dgbstop; -d_ttycv_t dgbdevtotty; - -d_open_t siopen; -d_close_t siclose; -d_read_t siread; -d_write_t siwrite; -d_ioctl_t siioctl; -d_stop_t sistop; -d_ttycv_t sidevtotty; - -d_open_t ityopen; -d_close_t ityclose; -d_read_t ityread; -d_write_t itywrite; -d_ioctl_t ityioctl; -d_stop_t itystop; -d_ttycv_t itydevtotty; - -d_open_t nicopen; -d_close_t nicclose; -d_ioctl_t nicioctl; - -d_open_t nnicopen; -d_close_t nnicclose; -d_ioctl_t nnicioctl; - -d_open_t isdnopen; -d_close_t isdnclose; -d_read_t isdnread; -d_ioctl_t isdnioctl; - -d_open_t itelopen; -d_close_t itelclose; -d_read_t itelread; -d_write_t itelwrite; -d_ioctl_t itelioctl; - -d_open_t ispyopen; -d_close_t ispyclose; -d_read_t ispyread; -d_write_t ispywrite; -d_ioctl_t ispyioctl; - -d_open_t rcopen; -d_close_t rcclose; -d_rdwr_t rcread, rcwrite; -d_ioctl_t rcioctl; -d_stop_t rcstop; -d_ttycv_t rcdevtotty; - -d_open_t labpcopen; -d_close_t labpcclose; -d_strategy_t labpcstrategy; -d_ioctl_t labpcioctl; - #endif /* KERNEL */ #endif /* !_MACHINE_CONF_H_ */ 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 */ diff --git a/sys/isa/fd.c b/sys/isa/fd.c index 1af2cbf..e1b3436 100644 --- a/sys/isa/fd.c +++ b/sys/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/isa/joy.c b/sys/isa/joy.c index 25d2311..2955d1c 100644 --- a/sys/isa/joy.c +++ b/sys/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/isa/sio.c b/sys/isa/sio.c index b6b090f..d44d7bc 100644 --- a/sys/isa/sio.c +++ b/sys/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/isa/syscons.c b/sys/isa/syscons.c index 6c736ca..db7c92d 100644 --- a/sys/isa/syscons.c +++ b/sys/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/kern/kern_conf.c b/sys/kern/kern_conf.c index 49e8b9f..5696ae5 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: kern_conf.c,v 1.4 1995/11/29 12:38:46 julian Exp $ + * $Id: kern_conf.c,v 1.5 1995/11/30 05:59:09 julian Exp $ */ #include <sys/param.h> @@ -70,6 +70,7 @@ int TTYPE##_add(dev_t *descrip, \ if (oldentry) { \ bcopy(&TTYPE[i], oldentry, sizeof(struct TTYPE)); \ } \ + newentry->d_maj = i; \ /* replace with new */ \ bcopy(newentry, &TTYPE[i], sizeof(struct TTYPE)); \ \ diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index cc3ec92..acc5a43 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)kern_descrip.c 8.6 (Berkeley) 4/19/94 - * $Id: kern_descrip.c,v 1.19 1995/12/05 21:51:28 bde Exp $ + * $Id: kern_descrip.c,v 1.20 1995/12/07 12:46:38 davidg Exp $ */ #include <sys/param.h> @@ -62,13 +62,18 @@ #include <vm/vm_param.h> #include <vm/vm_extern.h> -#ifdef JREMOD -#include <sys/conf.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ + +static d_open_t fdopen; +#define NUMFDESC 64 + #define CDEV_MAJOR 22 -#endif /*JREMOD*/ +struct cdevsw fildesc_cdevsw = + { fdopen, noclose, noread, nowrite, /*22*/ + noioc, nostop, nullreset, nodevtotty,/*fd(!=Fd)*/ + noselect, nommap, nostrat }; int finishdup(struct filedesc *fdp, int old, int new, int *retval); /* @@ -896,7 +901,7 @@ flock(p, uap, retval) * references to this file will be direct to the other driver. */ /* ARGSUSED */ -int +static int fdopen(dev, mode, type, p) dev_t dev; int mode, type; @@ -1035,34 +1040,35 @@ SYSCTL_INT(_kern, KERN_MAXFILESPERPROC, maxfilesperproc, SYSCTL_INT(_kern, KERN_MAXFILES, maxfiles, CTLFLAG_RW, &maxfiles, 0, ""); -#ifdef JREMOD -static struct cdevsw fildesc_cdevsw = - { fdopen, noclose, noread, nowrite, /*22*/ - noioc, nostop, nullreset, nodevtotty,/*fd(!=Fd)*/ - noselect, nommap, nostrat }; - static fildesc_devsw_installed = 0; +static void *devfs_token_stdin; +static void *devfs_token_stdout; +static void *devfs_token_stderr; +static void *devfs_token_fildesc[NUMFDESC]; static void fildesc_drvinit(void *unused) { dev_t dev; + int i; + char name[32]; if( ! fildesc_devsw_installed ) { dev = makedev(CDEV_MAJOR,0); cdevsw_add(&dev,&fildesc_cdevsw,NULL); fildesc_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*/ - x=devfs_add_devsw("/","stdin",major(dev),0,DV_CHR, - 0, 0, 0600); - x=devfs_add_devsw("/","stdout",major(dev),1,DV_CHR, - 0, 0, 0600); - x=devfs_add_devsw("/","stderr",major(dev),2,DV_CHR, - 0, 0, 0600); + for ( i = 0 ; i < NUMFDESC ; i++ ) { + sprintf(name,"%d",i); + devfs_token_fildesc[i] = devfs_add_devsw("fd",name, + &fildesc_cdevsw,0, + DV_CHR, 0, 0, 0666); } + devfs_token_stdin = + dev_link("/","stdin",devfs_token_fildesc[0]); + devfs_token_stdout = + dev_link("/","stdout",devfs_token_fildesc[1]); + devfs_token_stderr = + dev_link("/","stderr",devfs_token_fildesc[2]); #endif } } @@ -1070,4 +1076,4 @@ static void fildesc_drvinit(void *unused) SYSINIT(fildescdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR, fildesc_drvinit,NULL) -#endif /* JREMOD */ + diff --git a/sys/kern/kern_lkm.c b/sys/kern/kern_lkm.c index bcebe68..8aa9ac4 100644 --- a/sys/kern/kern_lkm.c +++ b/sys/kern/kern_lkm.c @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: kern_lkm.c,v 1.22 1995/11/29 17:45:59 wollman Exp $ + * $Id: kern_lkm.c,v 1.23 1995/12/07 12:46:43 davidg Exp $ */ #include <sys/param.h> @@ -49,18 +49,15 @@ #include <sys/exec.h> #include <sys/imgact.h> #include <sys/lkm.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /*DEVFS*/ #include <vm/vm.h> #include <vm/vm_param.h> #include <vm/vm_kern.h> #include <vm/vm_extern.h> -#ifdef JREMOD -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 32 -#endif /*JREMOD */ #define PAGESIZE 1024 /* kmem_alloc() allocation quantum */ @@ -89,8 +86,19 @@ static int _lkm_vfs __P((struct lkm_table *lkmtp, int cmd)); static int _lkm_syscall __P((struct lkm_table *lkmtp, int cmd)); static void lkmunreserve __P((void)); +static d_open_t lkmcopen; +static d_close_t lkmcclose; +static d_ioctl_t lkmcioctl; + +#define CDEV_MAJOR 32 +struct cdevsw lkmc_cdevsw = + { lkmcopen, lkmcclose, noread, nowrite, /*32*/ + lkmcioctl, nostop, nullreset, nodevtotty, + noselect, nommap, NULL, "lkm", NULL, -1 }; + + /*ARGSUSED*/ -int +static int lkmcopen(dev, flag, devtype, p) dev_t dev; int flag; @@ -149,7 +157,7 @@ lkmunreserve() lkm_state = LKMS_IDLE; } -int +static int lkmcclose(dev, flag, mode, p) dev_t dev; int flag; @@ -181,7 +189,7 @@ lkmcclose(dev, flag, mode, p) } /*ARGSUSED*/ -int +static int lkmcioctl(dev, cmd, data, flag, p) dev_t dev; int cmd; @@ -690,9 +698,7 @@ _lkm_dev(lkmtp, cmd) { struct lkm_dev *args = lkmtp->private.lkm_dev; int i; -#ifdef JREMOD dev_t descrip; -#endif /* JREMOD */ int err = 0; switch(cmd) { @@ -702,35 +708,6 @@ _lkm_dev(lkmtp, cmd) return(EEXIST); switch(args->lkm_devtype) { case LM_DT_BLOCK: -#ifndef JREMOD - if ((i = args->lkm_offset) == -1) { /* auto */ - /* - * Search the table looking for a slot... - */ - for (i = 0; i < nblkdev; i++) - if (bdevsw[i].d_open == lkmenodev) - break; /* found it! */ - /* out of allocable slots? */ - if (i == nblkdev) { - err = ENFILE; - break; - } - } else { /* assign */ - if (i < 0 || i >= nblkdev) { - err = EINVAL; - break; - } - } - - /* save old */ - bcopy(&bdevsw[i], &(args->lkm_olddev.bdev), sizeof(struct bdevsw)); - - /* replace with new */ - bcopy(args->lkm_dev.bdev, &bdevsw[i], sizeof(struct bdevsw)); - - /* done! */ - args->lkm_offset = i; /* slot in bdevsw[] */ -#else /* JREMOD */ if ((i = args->lkm_offset) == -1) descrip = (dev_t) -1; else @@ -740,50 +717,9 @@ _lkm_dev(lkmtp, cmd) break; } args->lkm_offset = major(descrip) ; -#endif /* JREMOD */ break; case LM_DT_CHAR: -#ifndef JREMOD - if ((i = args->lkm_offset) == -1) { /* auto */ - /* - * Search the table looking for a slot... - */ - for (i = 0; i < nchrdev; i++) - if (cdevsw[i].d_open == lkmenodev) - break; /* found it! */ - /* out of allocable slots? */ - if (i == nchrdev) { - err = ENFILE; - break; - } - } else { /* assign */ - if (i < 0 || i >= nchrdev) { - err = EINVAL; - break; - } - } - - /* save old */ - bcopy(&cdevsw[i], &(args->lkm_olddev.cdev), sizeof(struct cdevsw)); - - /* replace with new */ - bcopy(args->lkm_dev.cdev, &cdevsw[i], sizeof(struct cdevsw)); - - /* done! */ - args->lkm_offset = i; /* slot in cdevsw[] */ - -#else /* JREMOD */ - if ((i = args->lkm_offset) == -1) - descrip = (dev_t) -1; - else - descrip = makedev(args->lkm_offset,0); - if ( err = cdevsw_add(&descrip, args->lkm_dev.cdev, - &(args->lkm_olddev.cdev))) { - break; - } - args->lkm_offset = major(descrip) ; -#endif /* JREMOD */ break; default: @@ -799,22 +735,13 @@ _lkm_dev(lkmtp, cmd) switch(args->lkm_devtype) { case LM_DT_BLOCK: /* replace current slot contents with old contents */ -#ifndef JREMOD - bcopy(&(args->lkm_olddev.bdev), &bdevsw[i], sizeof(struct bdevsw)); -#else /* JREMOD */ descrip = makedev(i,0); bdevsw_add(&descrip, &(args->lkm_olddev.bdev),NULL); -#endif /* JREMOD */ break; case LM_DT_CHAR: /* replace current slot contents with old contents */ -#ifndef JREMOD - bcopy(&(args->lkm_olddev.cdev), &cdevsw[i], sizeof(struct cdevsw)); -#else /* JREMOD */ - descrip = makedev(i,0); cdevsw_add(&descrip, &(args->lkm_olddev.cdev),NULL); -#endif /* JREMOD */ break; default: @@ -996,35 +923,24 @@ lkm_nullcmd(lkmtp, cmd) return (0); } -#ifdef JREMOD -struct cdevsw lkm_cdevsw = - { lkmcopen, lkmcclose, noread, nowrite, /*32*/ - lkmcioctl, nostop, nullreset, nodevtotty, - noselect, nommap, NULL }; - static lkm_devsw_installed = 0; +static void *lkmc_devfs_token; static void lkm_drvinit(void *unused) { dev_t dev; if( ! lkm_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&lkm_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&lkmc_cdevsw, NULL); lkm_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*/ - "/", "lkm", major(dev), 0, DV_CHR, 0, 0, 0600); - } + lkmc_devfs_token = devfs_add_devsw( "/", "lkm", &lkmc_cdevsw, 0, + DV_CHR, 0, 0, 0660); #endif } } SYSINIT(lkmdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,lkm_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/kern/subr_log.c b/sys/kern/subr_log.c index 04a2e6c..5b8a86f 100644 --- a/sys/kern/subr_log.c +++ b/sys/kern/subr_log.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)subr_log.c 8.1 (Berkeley) 6/10/93 - * $Id: subr_log.c,v 1.12 1995/11/29 14:40:35 julian Exp $ + * $Id: subr_log.c,v 1.13 1995/12/02 18:58:52 bde Exp $ */ /* @@ -47,21 +47,28 @@ #include <sys/msgbuf.h> #include <sys/file.h> #include <sys/signalvar.h> - -#ifdef JREMOD -#include <sys/conf.h> #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 7 -#endif /*JREMOD*/ #define LOG_RDPRI (PZERO + 1) #define LOG_ASYNC 0x04 #define LOG_RDWAIT 0x08 +static d_open_t logopen; +static d_close_t logclose; +static d_read_t logread; +static d_ioctl_t logioctl; +static d_select_t logselect; + +#define CDEV_MAJOR 7 +struct cdevsw log_cdevsw = + { logopen, logclose, logread, nowrite, /*7*/ + logioctl, nostop, nullreset, nodevtotty,/* klog */ + logselect, nommap, NULL, "log", NULL, -1 }; + struct logsoftc { int sc_state; /* see above for possibilities */ struct selinfo sc_selp; /* process waiting on select call */ @@ -71,7 +78,7 @@ struct logsoftc { int log_open; /* also used in log() */ /*ARGSUSED*/ -int +static int logopen(dev, flags, mode, p) dev_t dev; int flags, mode; @@ -85,7 +92,7 @@ logopen(dev, flags, mode, p) } /*ARGSUSED*/ -int +static int logclose(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -98,7 +105,7 @@ logclose(dev, flag, mode, p) } /*ARGSUSED*/ -int +static int logread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -144,7 +151,7 @@ logread(dev, uio, flag) } /*ARGSUSED*/ -int +static int logselect(dev, rw, p) dev_t dev; int rw; @@ -187,7 +194,7 @@ logwakeup() } /*ARGSUSED*/ -int +static int logioctl(dev, com, data, flag, p) dev_t dev; int com; @@ -234,15 +241,11 @@ logioctl(dev, com, data, flag, p) return (0); } -#ifdef JREMOD -struct cdevsw log_cdevsw = - { logopen, logclose, logread, nowrite, /*7*/ - logioctl, nostop, nullreset, nodevtotty,/* klog */ - logselect, nommap, NULL }; - static log_devsw_installed = 0; +static void *log_devfs_token; -static void log_drvinit(void *unused) +static void +log_drvinit(void *unused) { dev_t dev; @@ -251,18 +254,12 @@ static void log_drvinit(void *unused) cdevsw_add(&dev,&log_cdevsw,NULL); log_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*/ - "/", "log", major(dev), 0, DV_CHR, 0, 0, 0600); - } + log_devfs_token = devfs_add_devsw( + "/", "log", &log_cdevsw, 0, DV_CHR, 0, 0, 0600); #endif } } SYSINIT(logdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,log_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/kern/tty_cons.c b/sys/kern/tty_cons.c index 7f2e4d7..4624a28 100644 --- a/sys/kern/tty_cons.c +++ b/sys/kern/tty_cons.c @@ -36,26 +36,22 @@ * SUCH DAMAGE. * * from: @(#)cons.c 7.2 (Berkeley) 5/9/91 - * $Id: cons.c,v 1.35 1995/11/29 10:47:17 julian Exp $ + * $Id: cons.c,v 1.36 1995/11/29 14:39:24 julian Exp $ */ #include <sys/param.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /*DEVFS*/ #include <sys/systm.h> #include <sys/conf.h> +#include <sys/kernel.h> #include <sys/proc.h> #include <sys/tty.h> #include <machine/cons.h> #include <machine/stdarg.h> -#ifdef JREMOD -#include <sys/kernel.h> -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 0 -#endif /*JREMOD*/ - /* XXX this should be config(8)ed. */ #include "sc.h" #include "vt.h" @@ -73,6 +69,19 @@ static struct consdev constab[] = { { 0 }, }; +static d_open_t cnopen; +static d_close_t cnclose; +static d_read_t cnread; +static d_write_t cnwrite; +static d_ioctl_t cnioctl; +static d_select_t cnselect; + +#define CDEV_MAJOR 0 +struct cdevsw cn_cdevsw = + { cnopen, cnclose, cnread, cnwrite, /*0*/ + cnioctl, nullstop, nullreset, nodevtotty,/* console */ + cnselect, nommap, NULL, "console", NULL, -1 }; + struct tty *constty = 0; /* virtual console output device */ struct tty *cn_tty; /* XXX: console tty struct for tprintf */ int cons_unavail = 0; /* XXX: @@ -86,6 +95,9 @@ static d_close_t *cn_phys_close; /* physical device close function */ static d_open_t *cn_phys_open; /* physical device open function */ static struct consdev *cn_tab; /* physical console device info */ static struct tty *cn_tp; /* physical console tty struct */ +#ifdef DEVFS +void *cn_devfs_token; /* represents the devfs entry */ +#endif /* DEVFS */ void cninit() @@ -148,7 +160,7 @@ cninit_finish() cn_tty = cn_tp; } -int +static int cnopen(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -171,7 +183,7 @@ cnopen(dev, flag, mode, p) return (retval); } -int +static int cnclose(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -204,7 +216,7 @@ cnclose(dev, flag, mode, p) return ((*cn_phys_close)(dev, flag, mode, p)); } -int +static int cnread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -216,7 +228,7 @@ cnread(dev, uio, flag) return ((*cdevsw[major(dev)].d_read)(dev, uio, flag)); } -int +static int cnwrite(dev, uio, flag) dev_t dev; struct uio *uio; @@ -231,7 +243,7 @@ cnwrite(dev, uio, flag) return ((*cdevsw[major(dev)].d_write)(dev, uio, flag)); } -int +static int cnioctl(dev, cmd, data, flag, p) dev_t dev; int cmd; @@ -258,7 +270,7 @@ cnioctl(dev, cmd, data, flag, p) return ((*cdevsw[major(dev)].d_ioctl)(dev, cmd, data, flag, p)); } -int +static int cnselect(dev, rw, p) dev_t dev; int rw; @@ -312,18 +324,11 @@ pg(const char *p, ...) { return(cngetc()); } - -#ifdef JREMOD -struct cdevsw cn_cdevsw = - { cnopen, cnclose, cnread, cnwrite, /*0*/ - cnioctl, nullstop, nullreset, nodevtotty,/* console */ - cnselect, nommap, NULL }; - static cn_devsw_installed = 0; -static void cn_drvinit(void *unused) +static void +cn_drvinit(void *unused) { - void * x; dev_t dev; if( ! cn_devsw_installed ) { @@ -331,13 +336,19 @@ static void cn_drvinit(void *unused) cdevsw_add(&dev,&cn_cdevsw,NULL); cn_devsw_installed = 1; #ifdef DEVFS - /* path,name,major,minor,type,uid,gid,perm */ - x=devfs_add_devsw("/","console",major(dev),0,DV_CHR,0,0,0640); + cn_devfs_token = devfs_add_devsw( + "/", + "console", + &cn_cdevsw, + 0, + DV_CHR, + 0, + 0, + 0640); #endif } } SYSINIT(cndev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cn_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/kern/tty_pty.c b/sys/kern/tty_pty.c index 1f9e0d9..9897365 100644 --- a/sys/kern/tty_pty.c +++ b/sys/kern/tty_pty.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)tty_pty.c 8.2 (Berkeley) 9/23/93 - * $Id: tty_pty.c,v 1.27 1995/12/02 07:30:19 julian Exp $ + * $Id: tty_pty.c,v 1.28 1995/12/02 13:08:20 julian Exp $ */ /* @@ -60,6 +60,33 @@ void ptyattach __P((int n)); void ptsstart __P((struct tty *tp)); void ptcwakeup __P((struct tty *tp, int flag)); +static d_open_t ptsopen; +static d_close_t ptsclose; +static d_read_t ptsread; +static d_write_t ptswrite; +static d_ioctl_t ptyioctl; +static d_stop_t ptsstop; +static d_ttycv_t ptydevtotty; +static d_open_t ptcopen; +static d_close_t ptcclose; +static d_read_t ptcread; +static d_write_t ptcwrite; +static d_ioctl_t ptcioctl; +static d_select_t ptcselect; + +#define CDEV_MAJOR_S 5 +#define CDEV_MAJOR_C 6 +struct cdevsw pts_cdevsw = + { ptsopen, ptsclose, ptsread, ptswrite, /*5*/ + ptyioctl, ptsstop, nullreset, ptydevtotty,/* ttyp */ + ttselect, nommap, NULL, "pts", NULL, -1 }; + +struct cdevsw ptc_cdevsw = + { ptcopen, ptcclose, ptcread, ptcwrite, /*6*/ + ptyioctl, nullstop, nullreset, ptydevtotty,/* ptyp */ + ptcselect, nommap, NULL, "ptc", NULL, -1 }; + + #if NPTY == 1 #undef NPTY #define NPTY 32 /* crude XXX */ @@ -114,7 +141,7 @@ ptyattach(n) } /*ARGSUSED*/ -int +static int ptsopen(dev, flag, devtype, p) dev_t dev; int flag, devtype; @@ -152,7 +179,7 @@ ptsopen(dev, flag, devtype, p) return (error); } -int +static int ptsclose(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -168,7 +195,7 @@ ptsclose(dev, flag, mode, p) return (err); } -int +static int ptsread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -223,7 +250,7 @@ again: * Wakeups of controlling tty will happen * indirectly, when tty driver calls ptsstart. */ -int +static int ptswrite(dev, uio, flag) dev_t dev; struct uio *uio; @@ -273,7 +300,7 @@ ptcwakeup(tp, flag) } } -int +static int ptcopen(dev, flag, devtype, p) dev_t dev; int flag, devtype; @@ -300,7 +327,7 @@ ptcopen(dev, flag, devtype, p) return (0); } -int +static int ptcclose(dev, flags, fmt, p) dev_t dev; int flags; @@ -330,7 +357,7 @@ ptcclose(dev, flags, fmt, p) return (0); } -int +static int ptcread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -392,7 +419,7 @@ ptcread(dev, uio, flag) return (error); } -void +static void ptsstop(tp, flush) register struct tty *tp; int flush; @@ -416,7 +443,7 @@ ptsstop(tp, flush) ptcwakeup(tp, flag); } -int +static int ptcselect(dev, rw, p) dev_t dev; int rw; @@ -471,7 +498,7 @@ ptcselect(dev, rw, p) return (0); } -int +static int ptcwrite(dev, uio, flag) dev_t dev; register struct uio *uio; @@ -570,7 +597,7 @@ block: goto again; } -struct tty * +static struct tty * ptydevtotty(dev) dev_t dev; { @@ -581,7 +608,7 @@ ptydevtotty(dev) } /*ARGSUSED*/ -int +static int ptyioctl(dev, cmd, data, flag, p) dev_t dev; int cmd; @@ -738,38 +765,29 @@ ptyioctl(dev, cmd, data, flag, p) return (error); } -#define CDEV_MAJOR_S 5 -#define CDEV_MAJOR_C 6 -#ifdef JREMOD -struct cdevsw pts_cdevsw = - { ptsopen, ptsclose, ptsread, ptswrite, /*5*/ - ptyioctl, ptsstop, nullreset, ptydevtotty,/* ttyp */ - ttselect, nommap, NULL }; - -struct cdevsw ptc_cdevsw = - { ptcopen, ptcclose, ptcread, ptcwrite, /*6*/ - ptyioctl, nullstop, nullreset, ptydevtotty,/* ptyp */ - ptcselect, nommap, NULL }; - static ptc_devsw_installed = 0; +#ifdef DEVFS +#define MAXUNITS (8 * 32) +static void *devfs_token_pts[MAXUNITS]; +static void *devfs_token_ptc[MAXUNITS]; +const char jnames[] = "pqrsPQRS"; +const char knames[] = "0123456789abcdefghijklmnopqrstuv"; +#endif -static void ptc_drvinit(void *unused) +static void +ptc_drvinit(void *unused) { #ifdef DEVFS int i,j,k; - char jnames[] = "pqrsPQRS"; - char knames[] = "0123456789abcdefghijklmnopqrstuv"; - char devname[16]; -#define MAXUNITS (8 * 32) + char name[16]; #endif dev_t dev; - dev_t dev_c; if( ! ptc_devsw_installed ) { - dev = makedev(CDEV_MAJOR_S,0); - cdevsw_add(&dev,&pts_cdevsw,NULL); - dev_c = makedev(CDEV_MAJOR_C,0); - cdevsw_add(&dev_c,&ptc_cdevsw,NULL); + dev = makedev(CDEV_MAJOR_S, 0); + cdevsw_add(&dev, &pts_cdevsw, NULL); + dev = makedev(CDEV_MAJOR_C, 0); + cdevsw_add(&dev, &ptc_cdevsw, NULL); ptc_devsw_installed = 1; #ifdef DEVFS /*XXX*/ @@ -778,14 +796,18 @@ static void ptc_drvinit(void *unused) #define NPTY MAXUNITS #endif for ( i = 0 ; i<NPTY ; i++ ) { - void * x; + void *x; j = i / 32; k = i % 32; - sprintf(devname,"pty%c%c",jnames[j],knames[k]); - x=devfs_add_devsw("/",devname,major(dev_c),0,DV_CHR,0,0,0600); - sprintf(devname,"tty%c%c",jnames[j],knames[k]); - x=devfs_add_devsw("/",devname,major(dev),0,DV_CHR,0,0,0600); + sprintf(name,"pty%c%c",jnames[j],knames[k]); + devfs_token_pts[i] = + devfs_add_devsw("/",name,&pts_cdevsw,i, + DV_CHR,0,0,0600); + sprintf(name,"tty%c%c",jnames[j],knames[k]); + devfs_token_ptc[i] = + devfs_add_devsw("/",name,&ptc_cdevsw,i, + DV_CHR,0,0,0600); } #endif } @@ -793,5 +815,4 @@ static void ptc_drvinit(void *unused) SYSINIT(ptcdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR_C,ptc_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/kern/tty_snoop.c b/sys/kern/tty_snoop.c index 8e16b2f..27ffe9f 100644 --- a/sys/kern/tty_snoop.c +++ b/sys/kern/tty_snoop.c @@ -30,15 +30,25 @@ #include <sys/uio.h> #include <sys/kernel.h> #include <sys/malloc.h> - -#include <sys/snoop.h> - -#ifdef JREMOD #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ + +#include <sys/snoop.h> + +static d_open_t snpopen; +static d_close_t snpclose; +static d_read_t snpread; +static d_write_t snpwrite; +static d_ioctl_t snpioctl; +static d_select_t snpselect; + #define CDEV_MAJOR 53 -#endif /*JREMOD*/ +struct cdevsw snp_cdevsw = + { snpopen, snpclose, snpread, snpwrite, /*53*/ + snpioctl, nostop, nullreset, nodevtotty,/* snoop */ + snpselect, nommap, NULL, "snp", NULL, -1 }; + #ifndef MIN #define MIN(a,b) (((a)<(b))?(a):(b)) @@ -63,7 +73,7 @@ devtotty (dev) * length for function keys... */ -int +static int snpwrite(dev, uio, flag) dev_t dev; struct uio *uio; @@ -104,7 +114,7 @@ tty_input: } -int +static int snpread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -270,7 +280,7 @@ snpin(snp, buf, n) return n; } -int +static int snpopen(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -346,7 +356,7 @@ detach_notty: return (0); } -int +static int snpclose(dev, flags, fmt, p) dev_t dev; int flags; @@ -376,7 +386,7 @@ snpdown(snp) } -int +static int snpioctl(dev, cmd, data, flags, p) dev_t dev; int cmd; @@ -473,7 +483,7 @@ snpioctl(dev, cmd, data, flags, p) } -int +static int snpselect(dev, rw, p) dev_t dev; int rw; @@ -500,29 +510,26 @@ snpselect(dev, rw, p) return 0; } -#ifdef JREMOD -struct cdevsw snp_cdevsw = - { snpopen, snpclose, snpread, snpwrite, /*53*/ - snpioctl, nostop, nullreset, nodevtotty,/* snoop */ - snpselect, nommap, NULL }; - +static void *snp_devfs_token[NSNP]; static snp_devsw_installed = 0; -static void snp_drvinit(void *unused) +static void +snp_drvinit(void *unused) { dev_t dev; + char name[32]; + int i; if( ! snp_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&snp_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&snp_cdevsw, NULL); snp_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*/ - "/", "snp", major(dev), 0, DV_CHR, 0, 0, 0600); + for ( i = 0 ; i < NSNP ; i++) { + sprintf(name,"snp%d",i); + snp_devfs_token[i] = + devfs_add_devsw( "/", name, &snp_cdevsw, i, + DV_CHR, 0, 0, 0600); } #endif } @@ -530,6 +537,5 @@ static void snp_drvinit(void *unused) SYSINIT(snpdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,snp_drvinit,NULL) -#endif /* JREMOD */ #endif diff --git a/sys/kern/tty_tty.c b/sys/kern/tty_tty.c index a970e03..d34536c 100644 --- a/sys/kern/tty_tty.c +++ b/sys/kern/tty_tty.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)tty_tty.c 8.2 (Berkeley) 9/23/93 - * $Id: tty_tty.c,v 1.6 1995/11/29 10:48:30 julian Exp $ + * $Id: tty_tty.c,v 1.7 1995/11/29 14:40:38 julian Exp $ */ /* @@ -45,19 +45,28 @@ #include <sys/tty.h> #include <sys/vnode.h> #include <sys/file.h> - -#ifdef JREMOD #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ + +static d_open_t cttyopen; +static d_read_t cttyread; +static d_write_t cttywrite; +static d_ioctl_t cttyioctl; +static d_select_t cttyselect; + #define CDEV_MAJOR 1 -#endif /*JREMOD*/ +struct cdevsw ctty_cdevsw = + { cttyopen, nullclose, cttyread, cttywrite, /*1*/ + cttyioctl, nullstop, nullreset, nodevtotty,/* tty */ + cttyselect, nommap, NULL, "ctty", NULL, -1 }; + #define cttyvp(p) ((p)->p_flag & P_CONTROLT ? (p)->p_session->s_ttyvp : NULL) /*ARGSUSED*/ -int +static int cttyopen(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -88,7 +97,7 @@ cttyopen(dev, flag, mode, p) } /*ARGSUSED*/ -int +static int cttyread(dev, uio, flag) dev_t dev; struct uio *uio; @@ -106,7 +115,7 @@ cttyread(dev, uio, flag) } /*ARGSUSED*/ -int +static int cttywrite(dev, uio, flag) dev_t dev; struct uio *uio; @@ -124,7 +133,7 @@ cttywrite(dev, uio, flag) } /*ARGSUSED*/ -int +static int cttyioctl(dev, cmd, addr, flag, p) dev_t dev; int cmd; @@ -149,7 +158,7 @@ cttyioctl(dev, cmd, addr, flag, p) } /*ARGSUSED*/ -int +static int cttyselect(dev, flag, p) dev_t dev; int flag; @@ -162,15 +171,11 @@ cttyselect(dev, flag, p) return (VOP_SELECT(ttyvp, flag, FREAD|FWRITE, NOCRED, p)); } -#ifdef JREMOD -struct cdevsw ctty_cdevsw = - { cttyopen, nullclose, cttyread, cttywrite, /*1*/ - cttyioctl, nullstop, nullreset, nodevtotty,/* tty */ - cttyselect, nommap, NULL }; - static ctty_devsw_installed = 0; +static void *ctty_devfs_token; -static void ctty_drvinit(void *unused) +static void +ctty_drvinit(void *unused) { dev_t dev; @@ -179,18 +184,12 @@ static void ctty_drvinit(void *unused) cdevsw_add(&dev,&ctty_cdevsw,NULL); ctty_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*/ - "/", "tty", major(dev), 0, DV_CHR, 0, 0, 0600); - } + ctty_devfs_token = devfs_add_devsw( "/", "tty", + &ctty_cdevsw, 0, DV_CHR, 0, 0, 0600); #endif } } SYSINIT(cttydev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,ctty_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/miscfs/devfs/devfs_tree.c b/sys/miscfs/devfs/devfs_tree.c index 0110f8b..6f32322 100644 --- a/sys/miscfs/devfs/devfs_tree.c +++ b/sys/miscfs/devfs/devfs_tree.c @@ -2,7 +2,7 @@ /* * Written by Julian Elischer (julian@DIALix.oz.au) * - * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_tree.c,v 1.8 1995/10/10 07:12:25 julian Exp $ + * $Header: /home/ncvs/src/sys/miscfs/devfs/devfs_tree.c,v 1.9 1995/11/29 10:48:36 julian Exp $ */ #include "param.h" @@ -908,15 +908,18 @@ int dev_add_entry(char *name, dn_p parent, int type, union typeinfo *by, devnm_p \***********************************************************************/ void *devfs_add_devsw(char *path, char *name, - int major, + void *devsw, int minor, int chrblk, uid_t uid, gid_t gid, int perms) { + int major; devnm_p new_dev; dn_p dnp; /* devnode for parent directory */ + struct cdevsw *cd; + struct bdevsw *bd; int retval; union typeinfo by; @@ -926,13 +929,19 @@ void *devfs_add_devsw(char *path, switch(chrblk) { case DV_CHR: - by.Cdev.cdevsw = cdevsw + major; + cd = devsw; + major = cd->d_maj; + if ( major == -1 ) return NULL; + by.Cdev.cdevsw = cd; by.Cdev.dev = makedev(major, minor); if( dev_add_entry(name, dnp, DEV_CDEV, &by,&new_dev)) return NULL; break; case DV_BLK: - by.Bdev.bdevsw = bdevsw + major; + bd = devsw; + major = bd->d_maj; + if ( major == -1 ) return NULL; + by.Bdev.bdevsw = bd; by.Bdev.dev = makedev(major, minor); if( dev_add_entry(name, dnp, DEV_BDEV, &by, &new_dev)) return NULL; diff --git a/sys/miscfs/fdesc/fdesc_vnops.c b/sys/miscfs/fdesc/fdesc_vnops.c index e4eaafc..bec6bc7 100644 --- a/sys/miscfs/fdesc/fdesc_vnops.c +++ b/sys/miscfs/fdesc/fdesc_vnops.c @@ -35,7 +35,7 @@ * * @(#)fdesc_vnops.c 8.9 (Berkeley) 1/21/94 * - * $Id: fdesc_vnops.c,v 1.13 1995/12/03 14:54:10 bde Exp $ + * $Id: fdesc_vnops.c,v 1.14 1995/12/05 19:12:05 bde Exp $ */ /* @@ -58,8 +58,11 @@ #include <sys/dirent.h> #include <sys/socketvar.h> #include <sys/tty.h> +#include <sys/conf.h> #include <miscfs/fdesc/fdesc.h> +extern struct cdevsw ctty_cdevsw; + #define cttyvp(p) ((p)->p_flag & P_CONTROLT ? (p)->p_session->s_ttyvp : NULL) #define FDL_WANT 0x01 @@ -363,7 +366,7 @@ fdesc_open(ap) break; case Fctty: - error = cttyopen(devctty, ap->a_mode, 0, ap->a_p); + error = (*ctty_cdevsw.d_open)(devctty, ap->a_mode, 0, ap->a_p); break; } @@ -710,7 +713,7 @@ fdesc_read(ap) switch (VTOFDESC(ap->a_vp)->fd_type) { case Fctty: - error = cttyread(devctty, ap->a_uio, ap->a_ioflag); + error = (*ctty_cdevsw.d_read)(devctty, ap->a_uio, ap->a_ioflag); break; default: @@ -734,7 +737,7 @@ fdesc_write(ap) switch (VTOFDESC(ap->a_vp)->fd_type) { case Fctty: - error = cttywrite(devctty, ap->a_uio, ap->a_ioflag); + error = (*ctty_cdevsw.d_write)(devctty, ap->a_uio, ap->a_ioflag); break; default: @@ -760,8 +763,8 @@ fdesc_ioctl(ap) switch (VTOFDESC(ap->a_vp)->fd_type) { case Fctty: - error = cttyioctl(devctty, ap->a_command, ap->a_data, - ap->a_fflag, ap->a_p); + error = (*ctty_cdevsw.d_ioctl)(devctty, ap->a_command, + ap->a_data, ap->a_fflag, ap->a_p); break; default: @@ -786,7 +789,7 @@ fdesc_select(ap) switch (VTOFDESC(ap->a_vp)->fd_type) { case Fctty: - error = cttyselect(devctty, ap->a_fflags, ap->a_p); + error = (*ctty_cdevsw.d_select)(devctty, ap->a_fflags, ap->a_p); break; default: diff --git a/sys/miscfs/specfs/spec_vnops.c b/sys/miscfs/specfs/spec_vnops.c index 38e694e..3a04353 100644 --- a/sys/miscfs/specfs/spec_vnops.c +++ b/sys/miscfs/specfs/spec_vnops.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)spec_vnops.c 8.6 (Berkeley) 4/9/94 - * $Id: spec_vnops.c,v 1.20 1995/12/05 21:51:45 bde Exp $ + * $Id: spec_vnops.c,v 1.21 1995/12/07 12:47:17 davidg Exp $ */ #include <sys/param.h> @@ -159,10 +159,8 @@ spec_open(ap) case VCHR: if ((u_int)maj >= nchrdev) return (ENXIO); -#ifdef JREMOD if ( cdevsw[maj].d_open == NULL) return ENXIO; -#endif /*JREMOD*/ if (ap->a_cred != FSCRED && (ap->a_mode & FWRITE)) { /* * When running in very secure mode, do not allow @@ -194,10 +192,8 @@ spec_open(ap) case VBLK: if ((u_int)maj >= nblkdev) return (ENXIO); -#ifdef JREMOD if ( bdevsw[maj].d_open == NULL) return ENXIO; -#endif /*JREMOD*/ /* * When running in very secure mode, do not allow * opens for writing of any disk block devices. diff --git a/sys/net/bpf.c b/sys/net/bpf.c index db072c3..8a1840c 100644 --- a/sys/net/bpf.c +++ b/sys/net/bpf.c @@ -37,7 +37,7 @@ * * @(#)bpf.c 8.2 (Berkeley) 3/28/94 * - * $Id: bpf.c,v 1.17 1995/12/02 19:37:19 bde Exp $ + * $Id: bpf.c,v 1.18 1995/12/06 23:51:53 bde Exp $ */ #include "bpfilter.h" @@ -80,14 +80,11 @@ #include <netinet/in.h> #include <netinet/if_ether.h> #include <sys/kernel.h> - -#ifdef JREMOD #include <sys/conf.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 23 -#endif /*JREMOD*/ + /* * Older BSDs don't have kernel malloc. @@ -145,6 +142,20 @@ static void catchpacket __P((struct bpf_d *, u_char *, u_int, u_int, void (*)(const void *, void *, u_int))); static void reset_d __P((struct bpf_d *)); +static d_open_t bpfopen; +static d_close_t bpfclose; +static d_read_t bpfread; +static d_write_t bpfwrite; +static d_ioctl_t bpfioctl; +static d_select_t bpfselect; + +#define CDEV_MAJOR 23 +struct cdevsw bpf_cdevsw = + { bpfopen, bpfclose, bpfread, bpfwrite, /*23*/ + bpfioctl, nostop, nullreset, nodevtotty,/* bpf */ + bpfselect, nommap, NULL, "bpf", NULL, -1 }; + + static int bpf_movein(uio, linktype, mp, sockp, datlen) register struct uio *uio; @@ -321,7 +332,7 @@ bpf_detachd(d) * EBUSY if file is open by another process. */ /* ARGSUSED */ -int +static int bpfopen(dev, flags, fmt, p) dev_t dev; int flags; @@ -353,7 +364,7 @@ bpfopen(dev, flags, fmt, p) * deallocating its buffers, and marking it free. */ /* ARGSUSED */ -int +static int bpfclose(dev, flags, fmt, p) dev_t dev; int flags; @@ -425,7 +436,7 @@ bpf_sleep(d) /* * bpfread - read next chunk of packets from buffers */ -int +static int bpfread(dev, uio, ioflag) dev_t dev; register struct uio *uio; @@ -540,7 +551,7 @@ bpf_wakeup(d) #endif } -int +static int bpfwrite(dev, uio, ioflag) dev_t dev; struct uio *uio; @@ -617,7 +628,7 @@ reset_d(d) * BIOCVERSION Get filter language version. */ /* ARGSUSED */ -int +static int bpfioctl(dev, cmd, addr, flags, p) dev_t dev; int cmd; @@ -1006,7 +1017,7 @@ bpf_ifname(ifp, ifr) #if BSD >= 199103 #define bpf_select bpfselect #else -int +static int bpfselect(dev, rw) register dev_t dev; int rw; @@ -1322,30 +1333,26 @@ bpfattach(driverp, ifp, dlt, hdrlen) printf("bpf: %s%d attached\n", ifp->if_name, ifp->if_unit); } - -#ifdef JREMOD -struct cdevsw bpf_cdevsw = - { bpfopen, bpfclose, bpfread, bpfwrite, /*23*/ - bpfioctl, nostop, nullreset, nodevtotty,/* bpf */ - bpfselect, nommap, NULL }; +static void *bpf_devfs_token[NBPFILTER]; static bpf_devsw_installed = 0; static void bpf_drvinit(void *unused) { dev_t dev; + int i; + char name[32]; if( ! bpf_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&bpf_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&bpf_cdevsw, NULL); bpf_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*/ - "/", "bpf", major(dev), 0, DV_CHR, 0, 0, 0600); + for ( i = 0 ; i < NBPFILTER ; i++ ) { + sprintf(name,"bpf%d",i); + bpf_devfs_token[i] = + devfs_add_devsw( "/", name, + &bpf_cdevsw, i, DV_CHR, 0, 0, 0600); } #endif } @@ -1353,6 +1360,4 @@ static void bpf_drvinit(void *unused) SYSINIT(bpfdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,bpf_drvinit,NULL) -#endif /* JREMOD */ - #endif diff --git a/sys/net/if_tun.c b/sys/net/if_tun.c index 12e3e1a..97678c5 100644 --- a/sys/net/if_tun.c +++ b/sys/net/if_tun.c @@ -33,6 +33,9 @@ #ifdef __FreeBSD__ #include <sys/kernel.h> #endif +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /*DEVFS*/ #include <sys/conf.h> #include <machine/cpu.h> @@ -67,12 +70,6 @@ static void tunattach __P((void *)); PSEUDO_SET(tunattach, if_tun); #endif -#ifdef JREMOD -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 52 -#endif /*JREMOD*/ #define TUNDEBUG if (tundebug) printf int tundebug = 0; @@ -82,15 +79,27 @@ struct tun_softc tunctl[NTUN]; int tunoutput __P((struct ifnet *, struct mbuf *, struct sockaddr *, struct rtentry *rt)); int tunifioctl __P((struct ifnet *, int, caddr_t)); +static int tuninit __P((int)); -static struct cdevsw tuncdevsw = { +static d_open_t tunopen; +static d_close_t tunclose; +static d_read_t tunread; +static d_write_t tunwrite; +static d_ioctl_t tunioctl; +static d_select_t tunselect; + +#define CDEV_MAJOR 52 +static struct cdevsw tun_cdevsw = { tunopen, tunclose, tunread, tunwrite, tunioctl, nullstop, noreset, nodevtotty, - tunselect, nommap, nostrategy + tunselect, nommap, nostrategy, "tun", NULL, -1 }; -extern dev_t tuncdev; -static int tuninit __P((int)); + +static tun_devsw_installed = 0; +#ifdef DEVFS +static void *tun_devfs_token[NTUN]; +#endif static void tunattach(dummy) @@ -98,13 +107,20 @@ tunattach(dummy) { register int i; struct ifnet *ifp; + dev_t dev; + char name[32]; - /* - * In case we are an LKM, set up device switch. - */ - cdevsw[major(tuncdev)] = tuncdevsw; - - for (i = 0; i < NTUN; i++) { + if( tun_devsw_installed ) return; + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&tun_cdevsw, NULL); + tun_devsw_installed = 1; + for ( i = 0; i < NTUN; i++ ) { +#ifdef DEVFS + sprintf(name, "tun%d", i ); + tun_devfs_token[i] = devfs_add_devsw( + "/", name, &tun_cdevsw , i, + DV_CHR, 0, 0, 0600); +#endif tunctl[i].tun_flags = TUN_INITED; ifp = &tunctl[i].tun_if; @@ -131,7 +147,7 @@ tunattach(dummy) * tunnel open - must be superuser & the device must be * configured in */ -int +static int tunopen(dev, flag, mode, p) dev_t dev; int flag, mode; @@ -159,7 +175,7 @@ tunopen(dev, flag, mode, p) * tunclose - close the device - mark i/f down & delete * routing info */ -int +static int tunclose(dev_t dev, int foo, int bar, struct proc *p) { register int unit = minor(dev), s; @@ -370,7 +386,7 @@ tunoutput(ifp, m0, dst, rt) /* * the cdevsw interface is now pretty minimal. */ -int +static int tunioctl(dev, cmd, data, flag, p) dev_t dev; int cmd; @@ -437,7 +453,7 @@ tunioctl(dev, cmd, data, flag, p) * The cdevsw read interface - reads a packet at a time, or at * least as much of a packet as can be read. */ -int +static int tunread(dev_t dev, struct uio *uio, int flag) { int unit = minor(dev); @@ -488,7 +504,7 @@ tunread(dev_t dev, struct uio *uio, int flag) /* * the cdevsw write interface - an atomic write is a packet - or else! */ -int +static int tunwrite(dev_t dev, struct uio *uio, int flag) { int unit = minor (dev); @@ -576,7 +592,7 @@ tunwrite(dev_t dev, struct uio *uio, int flag) * really. The write detect always returns true, write never blocks * anyway, it either accepts the packet or drops it. */ -int +static int tunselect(dev_t dev, int rw, struct proc *p) { int unit = minor(dev), s; @@ -605,36 +621,5 @@ tunselect(dev_t dev, int rw, struct proc *p) return 0; } -#ifdef JREMOD -struct cdevsw tun_cdevsw = - { tunopen, tunclose, tunread, tunwrite, /*52*/ - tunioctl, nostop, nullreset, nodevtotty,/* tunnel */ - tunselect, nommap, NULL }; - -static tun_devsw_installed = 0; - -static void tun_drvinit(void *unused) -{ - dev_t dev; - - if( ! tun_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&tun_cdevsw,NULL); - tun_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*/ - "/", "tun", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif - } -} - -SYSINIT(tundev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,tun_drvinit,NULL) - -#endif /* JREMOD */ #endif /* NTUN */ diff --git a/sys/pccard/pccard.c b/sys/pccard/pccard.c index 8954995..3a7eccb 100644 --- a/sys/pccard/pccard.c +++ b/sys/pccard/pccard.c @@ -42,6 +42,10 @@ #include <sys/devconf.h> #include <sys/malloc.h> #include <sys/devconf.h> +#include <sys/conf.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /*DEVFS*/ #include <i386/isa/isa.h> #include <i386/isa/isa_device.h> @@ -50,13 +54,6 @@ #include <pccard/card.h> #include <pccard/slot.h> -#ifdef JREMOD -#include <sys/conf.h> -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 50 -#endif /*JREMOD*/ extern struct kern_devconf kdc_cpu0; @@ -97,6 +94,20 @@ static struct pccard_drv *drivers; /* Card drivers */ static unsigned long pccard_mem; /* Physical memory */ static unsigned char *pccard_kmem; /* Kernel virtual address */ +static d_open_t crdopen; +static d_close_t crdclose; +static d_read_t crdread; +static d_write_t crdwrite; +static d_ioctl_t crdioctl; +static d_select_t crdselect; + +#define CDEV_MAJOR 50 +struct cdevsw crd_cdevsw = + { crdopen, crdclose, crdread, crdwrite, /*50*/ + crdioctl, nostop, nullreset, nodevtotty,/* pcmcia */ + crdselect, nommap, NULL, "crd", NULL, -1 }; + + /* * pccard_configure - called by autoconf code. * Probes for various PC-CARD controllers, and @@ -590,7 +601,7 @@ slot_irq_handler(int sp) /* * Device driver interface. */ -int +static int crdopen(dev_t dev, int oflags, int devtype, struct proc *p) { struct slot *sp; @@ -609,7 +620,7 @@ struct slot *sp; * Close doesn't de-allocate any resources, since * slots may be assigned to drivers already. */ -int +static int crdclose(dev_t dev, int fflag, int devtype, struct proc *p) { return(0); @@ -619,7 +630,7 @@ crdclose(dev_t dev, int fflag, int devtype, struct proc *p) * read interface. Map memory at lseek offset, * then transfer to user space. */ -int +static int crdread(dev_t dev, struct uio *uio, int ioflag) { struct slot *sp = pccard_slots[minor(dev)]; @@ -669,7 +680,7 @@ crdread(dev_t dev, struct uio *uio, int ioflag) * Handles wrap around so that only one memory * window is used. */ -int +static int crdwrite(dev_t dev, struct uio *uio, int ioflag) { struct slot *sp = pccard_slots[minor(dev)]; @@ -721,7 +732,7 @@ struct slot *sp = pccard_slots[minor(dev)]; * ioctl calls - allows setting/getting of memory and I/O * descriptors, and assignment of drivers. */ -int +static int crdioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p) { int s; @@ -853,7 +864,7 @@ crdioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p) * select - Selects on exceptions will return true * when a change in card status occurs. */ -int +static int crdselect(dev_t dev, int rw, struct proc *p) { int s; @@ -905,29 +916,25 @@ find_driver(char *name) return(0); } -#ifdef JREMOD -struct cdevsw crd_cdevsw = - { crdopen, crdclose, crdread, crdwrite, /*50*/ - crdioctl, nostop, nullreset, nodevtotty,/* pcmcia */ - crdselect, nommap, NULL }; - static crd_devsw_installed = 0; -static void crd_drvinit(void *unused) +static void +crd_drvinit(void *unused) { dev_t dev; if( ! crd_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&crd_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&crd_cdevsw, NULL); crd_devsw_installed = 1; #ifdef DEVFS +/* expand on this when ever you know what the f*ck pccard devices +look like and when you know where to store the devfs_token +I had a quick look but thios driver is not one for a quick look */ { - 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*/ - "/", "crd", major(dev), 0, DV_CHR, 0, 0, 0600); + void *devfs_token; + devfs_token=devfs_add_devsw( + "/", "crd", &crd_cdevsw, 0, DV_CHR, 0, 0, 0600); } #endif } @@ -935,5 +942,4 @@ static void crd_drvinit(void *unused) SYSINIT(crddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,crd_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/pci/meteor.c b/sys/pci/meteor.c index b964503..f12173b 100644 --- a/sys/pci/meteor.c +++ b/sys/pci/meteor.c @@ -60,6 +60,9 @@ #include <sys/signalvar.h> #include <sys/devconf.h> #include <sys/mman.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /* DEVFS */ #include <machine/clock.h> #include <vm/vm.h> @@ -74,14 +77,6 @@ #endif #include <machine/ioctl_meteor.h> -#ifdef JREMOD -#include <sys/conf.h> -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /* DEVFS */ -#define CDEV_MAJOR 67 -#endif /* JREMOD */ - extern int meteor_intr __P((void *arg)); @@ -148,6 +143,9 @@ typedef struct { #define METEOR_SINGLE_ODD 0x00200000 #define METEOR_SINGLE_MASK 0x00300000 u_char saa7196_i2c[NUM_SAA7196_I2C_REGS]; /* saa7196 register values */ +#ifdef DEVFS + void *devfs_token; +#endif } meteor_reg_t; meteor_reg_t meteor[NMETEOR]; @@ -175,6 +173,20 @@ struct pci_device met_device = { DATA_SET (pcidevice_set, met_device); +static d_open_t meteor_open; +static d_close_t meteor_close; +static d_read_t meteor_read; +static d_write_t meteor_write; +static d_ioctl_t meteor_ioctl; +static d_mmap_t meteor_mmap; + +#define CDEV_MAJOR 67 +struct cdevsw meteor_cdevsw = + { meteor_open, meteor_close, meteor_read, meteor_write, /*67*/ + meteor_ioctl, nostop, nullreset, nodevtotty,/* Meteor */ + seltrue, meteor_mmap, NULL, "meteor", NULL, -1 }; + + static u_long saa7116_pci_default[NUM_SAA7116_PCI_REGS] = { /* PCI Memory registers */ /* BITS Type Description */ @@ -630,6 +642,10 @@ static void met_attach(pcici_t tag, int unit) mtr->rows = 480; mtr->depth = 2; /* two bytes per pixel */ mtr->frames = 1; /* one frame */ +#ifdef DEVFS + mtr->devfs_token = devfs_add_devsw( "/", "meteor", &meteor_cdevsw, unit, + DV_CHR, 0, 0, 0600); +#endif } static void @@ -1265,12 +1281,6 @@ meteor_mmap(dev_t dev, int offset, int nprot) } -#ifdef JREMOD -struct cdevsw meteor_cdevsw = - { meteor_open, meteor_close, meteor_read, meteor_write, /*67*/ - meteor_ioctl, nostop, nullreset, nodevtotty,/* Meteor */ - seltrue, meteor_mmap, NULL }; - static meteor_devsw_installed = 0; static void meteor_drvinit(void *unused) @@ -1278,23 +1288,12 @@ static void meteor_drvinit(void *unused) dev_t dev; if( ! meteor_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&meteor_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&meteor_cdevsw, NULL); meteor_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*/ - "/", "meteor", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(meteordev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,meteor_drvinit,NULL) -#endif /* JREMOD */ - #endif /* NMETEOR > 0 */ diff --git a/sys/scsi/cd.c b/sys/scsi/cd.c index d3210d9..9fd6a4a 100644 --- a/sys/scsi/cd.c +++ b/sys/scsi/cd.c @@ -14,7 +14,7 @@ * * Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992 * - * $Id: cd.c,v 1.46 1995/11/29 10:48:55 julian Exp $ + * $Id: cd.c,v 1.47 1995/11/29 14:40:51 julian Exp $ */ #define SPLCD splbio @@ -31,24 +31,20 @@ #include <sys/uio.h> #include <sys/malloc.h> #include <sys/cdio.h> - #include <sys/errno.h> #include <sys/disklabel.h> -#include <scsi/scsi_all.h> -#include <scsi/scsi_cd.h> -#include <scsi/scsi_disk.h> /* rw_big and start_stop come from there */ -#include <scsi/scsiconf.h> #include <sys/devconf.h> #include <sys/dkstat.h> - -#ifdef JREMOD #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 15 -#define BDEV_MAJOR 6 -#endif /*JREMOD */ + +#include <scsi/scsi_all.h> +#include <scsi/scsi_cd.h> +#include <scsi/scsi_disk.h> /* rw_big and start_stop come from there */ +#include <scsi/scsiconf.h> + /* static function prototypes */ static errval cd_get_parms __P((int, int)); @@ -65,6 +61,26 @@ static errval cd_play_tracks __P((u_int32, u_int32, u_int32, u_int32, u_int32)); static errval cd_read_subchannel __P((u_int32, u_int32, u_int32, int, struct cd_sub_channel_info *, u_int32)); static errval cd_getdisklabel __P((u_int8)); +static d_open_t cdopen; +static d_close_t cdclose; +static d_ioctl_t cdioctl; +static d_psize_t cdsize; +static d_strategy_t cdstrategy; + +#define CDEV_MAJOR 15 +#define BDEV_MAJOR 6 +extern struct cdevsw cd_cdevsw; +struct bdevsw cd_bdevsw = + { cdopen, cdclose, cdstrategy, cdioctl, /*6*/ + nxdump, cdsize, 0, "cd", &cd_cdevsw, -1 }; + +struct cdevsw cd_cdevsw = + { cdopen, cdclose, rawread, nowrite, /*15*/ + cdioctl, nostop, nullreset, nodevtotty,/* cd */ + seltrue, nommap, cdstrategy, "cd", + &cd_bdevsw, -1 }; + + int32 cdstrats, cdqueues; #define CDUNIT(DEV) ((minor(DEV)&0xF8) >> 3) /* 5 bit unit */ @@ -94,6 +110,12 @@ struct scsi_data { u_int32 xfer_block_wait; struct buf_queue_head buf_queue; int dkunit; +#ifdef DEVFS + void *ra_devfs_token; + void *rc_devfs_token; + void *a_devfs_token; + void *c_devfs_token; +#endif }; static int cdunit(dev_t dev) { return CDUNIT(dev); } @@ -111,18 +133,18 @@ SCSI_DEVICE_ENTRIES(cd) static struct scsi_device cd_switch = { - NULL, /* use default error handler */ - cdstart, /* we have a queue, which is started by this */ - NULL, /* we do not have an async handler */ - NULL, /* use default 'done' routine */ - "cd", /* we are to be refered to by this name */ - 0, /* no device specific flags */ + NULL, /* use default error handler */ + cdstart, /* we have a queue, which is started by this */ + NULL, /* we do not have an async handler */ + NULL, /* use default 'done' routine */ + "cd", /* we are to be refered to by this name */ + 0, /* no device specific flags */ {0, 0}, - 0, /* Link flags */ + 0, /* Link flags */ cdattach, "CD-ROM", cdopen, - sizeof(struct scsi_data), + sizeof(struct scsi_data), T_READONLY, cdunit, cdsetunit, @@ -183,6 +205,7 @@ cdattach(struct scsi_link *sc_link) u_int32 unit; struct cd_parms *dp; struct scsi_data *cd = sc_link->sd; + char name[32]; unit = sc_link->dev_unit; dp = &(cd->params); @@ -212,6 +235,29 @@ cdattach(struct scsi_link *sc_link) cd->flags |= CDINIT; cd_registerdev(unit); +#ifdef DEVFS +#define CD_UID 0 +#define CD_GID 13 + sprintf(name, "rcd%da",unit); + cd->ra_devfs_token = devfs_add_devsw( + "/", name, &cd_cdevsw, unit * 8, + DV_CHR, CD_UID, CD_GID, 0660); + + sprintf(name, "rcd%dc",unit); + cd->rc_devfs_token = devfs_add_devsw( + "/", name, &cd_cdevsw, (unit * 8 ) + RAW_PART, + DV_CHR, CD_UID, CD_GID, 0600); + + sprintf(name, "cd%da",unit); + cd->a_devfs_token = devfs_add_devsw( + "/", name, &cd_bdevsw, (unit * 8 ) + 0, + DV_BLK, CD_UID, CD_GID, 0660); + + sprintf(name, "cd%dc",unit); + cd->c_devfs_token = devfs_add_devsw( + "/", name, &cd_bdevsw, (unit * 8 ) + RAW_PART, + DV_BLK, CD_UID, CD_GID, 0600); +#endif return 0; } @@ -1306,47 +1352,21 @@ cdsize(dev_t dev) return (-1); } -#ifdef JREMOD -struct bdevsw cd_bdevsw = - { cdopen, cdclose, cdstrategy, cdioctl, /*6*/ - nxdump, cdsize, 0 }; -#endif /*JREMOD*/ - -#ifdef JREMOD -struct cdevsw cd_cdevsw = - { cdopen, cdclose, rawread, nowrite, /*15*/ - cdioctl, nostop, nullreset, nodevtotty,/* cd */ - seltrue, nommap, cdstrategy }; - static cd_devsw_installed = 0; static void cd_drvinit(void *unused) { dev_t dev; - dev_t dev_chr; if( ! cd_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&cd_cdevsw,NULL); - dev_chr = dev; -#if defined(BDEV_MAJOR) - dev = makedev(BDEV_MAJOR,0); - bdevsw_add(&dev,&cd_bdevsw,NULL); -#endif /*BDEV_MAJOR*/ + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&cd_cdevsw, NULL); + dev = makedev(BDEV_MAJOR, 0); + bdevsw_add(&dev,&cd_bdevsw, NULL); cd_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*/ - "/", "cd", major(dev_chr), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(cddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cd_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/scsi/ch.c b/sys/scsi/ch.c index 9724593..360a8c8 100644 --- a/sys/scsi/ch.c +++ b/sys/scsi/ch.c @@ -2,7 +2,7 @@ * Written by grefen@convex.com (probably moved by now) * Based on scsi drivers by Julian Elischer (julian@tfs.com) * - * $Id: ch.c,v 1.24 1995/11/29 14:40:54 julian Exp $ + * $Id: ch.c,v 1.25 1995/12/06 23:44:14 bde Exp $ */ #include <sys/types.h> @@ -10,27 +10,23 @@ #include <sys/param.h> #include <sys/systm.h> - #include <sys/errno.h> #include <sys/ioctl.h> #include <sys/buf.h> #include <sys/proc.h> #include <sys/chio.h> #include <sys/malloc.h> - -#include <scsi/scsi_all.h> -#include <scsi/scsi_changer.h> -#include <scsi/scsiconf.h> -#include <sys/devconf.h> - -#ifdef JREMOD #include <sys/conf.h> #include <sys/kernel.h> +#include <sys/devconf.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 17 -#endif /*JREMOD*/ + +#include <scsi/scsi_all.h> +#include <scsi/scsi_changer.h> +#include <scsi/scsiconf.h> + errval ch_getelem __P((u_int32 unit, short *stat, int type, u_int32 from, @@ -64,6 +60,9 @@ struct scsi_data { u_long op_matrix; /* possible opertaions */ u_int16 lsterr; /* details of lasterror */ u_char stor; /* posible Storage locations */ +#ifdef DEVFS + void *devfs_token; +#endif }; static int chunit(dev_t dev) { return CHUNIT(dev); } @@ -76,6 +75,16 @@ errval ch_ioctl(dev_t dev, int cmd, caddr_t addr, int flag, errval ch_close(dev_t dev, int flag, int fmt, struct proc *p, struct scsi_link *sc_link); +static d_open_t chopen; +static d_close_t chclose; +static d_ioctl_t chioctl; + +#define CDEV_MAJOR 17 +struct cdevsw ch_cdevsw = + { chopen, chclose, noread, nowrite, /*17*/ + chioctl, nostop, nullreset, nodevtotty,/* ch */ + noselect, nommap, nostrat, "ch", NULL, -1 }; + SCSI_DEVICE_ENTRIES(ch) struct scsi_device ch_switch = @@ -139,6 +148,7 @@ errval chattach(struct scsi_link *sc_link) { u_int32 unit; + char name[32]; struct scsi_data *ch = sc_link->sd; @@ -157,6 +167,11 @@ chattach(struct scsi_link *sc_link) } ch_registerdev(unit); +#ifdef DEVFS + sprintf(name,"ch%d",unit); + ch->devfs_token = devfs_add_devsw( "/", name, &ch_cdevsw, unit << 4, + DV_CHR, 0, 0, 0600); +#endif return 0; } @@ -511,11 +526,6 @@ ch_mode_sense(unit, flags) return (0); } -#ifdef JREMOD -struct cdevsw ch_cdevsw = - { chopen, chclose, noread, nowrite, /*17*/ - chioctl, nostop, nullreset, nodevtotty,/* ch */ - noselect, nommap, nostrat }; static ch_devsw_installed = 0; @@ -524,22 +534,12 @@ static void ch_drvinit(void *unused) dev_t dev; if( ! ch_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&ch_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&ch_cdevsw, NULL); ch_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*/ - "/", "ch", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(chdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,ch_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/scsi/od.c b/sys/scsi/od.c index 3137a51..568d343 100644 --- a/sys/scsi/od.c +++ b/sys/scsi/od.c @@ -28,7 +28,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: od.c,v 1.4 1995/11/29 10:48:57 julian Exp $ + * $Id: od.c,v 1.5 1995/11/29 14:40:57 julian Exp $ */ /* @@ -53,6 +53,9 @@ #include <sys/dkstat.h> #include <sys/disklabel.h> #include <sys/diskslice.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /*DEVFS*/ #include <scsi/scsi_all.h> #include <scsi/scsi_disk.h> #include <scsi/scsiconf.h> @@ -60,15 +63,7 @@ #include <sys/devconf.h> #include <sys/dkstat.h> #include <machine/md_var.h> -#include <i386/i386/cons.h> /* XXX */ -#ifdef JREMOD -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 70 -#define BDEV_MAJOR 20 -#endif /*JREMOD */ u_int32 odstrats, odqueues; @@ -103,6 +98,10 @@ struct scsi_data { struct diskslices *dk_slices; /* virtual drives */ struct buf_queue_head buf_queue; int dkunit; /* disk stats unit number */ +#ifdef DEVFS + void *b_devfs_token; /*eventually move to common disk struct */ + void *c_devfs_token; /*eventually move to common disk struct */ +#endif }; static int odunit(dev_t dev) { return ODUNIT(dev); } @@ -116,6 +115,28 @@ errval od_close __P((dev_t dev, int fflag, int fmt, struct proc *p, struct scsi_link *sc_link)); void od_strategy(struct buf *bp, struct scsi_link *sc_link); +static d_open_t odopen; +static d_close_t odclose; +static d_ioctl_t odioctl; +static d_psize_t odsize; +static d_strategy_t odstrategy; + +#define CDEV_MAJOR 70 +#define BDEV_MAJOR 20 +extern struct cdevsw od_cdevsw; +struct bdevsw od_bdevsw = + { odopen, odclose, odstrategy, odioctl, /*20*/ + nxdump, odsize, 0, "od", &od_cdevsw, -1 }; + +struct cdevsw od_cdevsw = + { odopen, odclose, rawread, rawwrite, /*70*/ + odioctl, nostop, nullreset, nodevtotty, + seltrue, nommap, odstrategy, "od", + &od_bdevsw, -1 }; + +/* + * Actually include the interface routines + */ SCSI_DEVICE_ENTRIES(od) struct scsi_device od_switch = @@ -188,6 +209,7 @@ odattach(struct scsi_link *sc_link) { u_int32 unit; struct disk_parms *dp; + char name[32]; struct scsi_data *od = sc_link->sd; @@ -231,6 +253,15 @@ odattach(struct scsi_link *sc_link) od->flags |= ODINIT; od_registerdev(unit); +#ifdef DEVFS +/* FIX PROPERLY WHEN DISKSLICE CODE IS UNDERSTOOD */ + sprintf(name, "rod%d", unit); + od->c_devfs_token = devfs_add_devsw( "/", name, &od_cdevsw, 0, + DV_CHR, 0, 0, 0600); + sprintf(name, "od%d", unit); + od->b_devfs_token = devfs_add_devsw( "/", name, &od_bdevsw, 0, + DV_BLK, 0, 0, 0600); +#endif return 0; } @@ -806,45 +837,21 @@ od_sense_handler(struct scsi_xfer *xs) return SCSIRET_DO_RETRY; } -#ifdef JREMOD -struct bdevsw od_bdevsw = - { odopen, odclose, odstrategy, odioctl, /*20*/ - nxdump, odsize, 0 }; - -struct cdevsw od_cdevsw = - { odopen, odclose, rawread, rawwrite, /*70*/ - odioctl, nostop, nullreset, nodevtotty,/* od */ - seltrue, nommap, odstrategy }; - static od_devsw_installed = 0; static void od_drvinit(void *unused) { dev_t dev; - dev_t dev_chr; if( ! od_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&od_cdevsw,NULL); - dev_chr = dev; - dev = makedev(BDEV_MAJOR,0); - bdevsw_add(&dev,&od_bdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&od_cdevsw, NULL); + dev = makedev(BDEV_MAJOR, 0); + bdevsw_add(&dev,&od_bdevsw, NULL); od_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*/ - "/", "rod", major(dev_chr), 0, DV_CHR, 0, 0, 0600); - x=devfs_add_devsw( - "/", "od", major(dev), 0, DV_BLK, 0, 0, 0600); - } -#endif } } SYSINIT(oddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,od_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/scsi/pt.c b/sys/scsi/pt.c index 75eb13b..12fa2fb 100644 --- a/sys/scsi/pt.c +++ b/sys/scsi/pt.c @@ -37,7 +37,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: pt.c,v 1.7 1995/11/29 10:48:59 julian Exp $ + * $Id: pt.c,v 1.8 1995/11/29 14:40:59 julian Exp $ */ /* @@ -50,17 +50,14 @@ #include <sys/systm.h> #include <sys/buf.h> #include <sys/proc.h> -#include <scsi/scsi_all.h> -#include <scsi/scsiconf.h> - -#ifdef JREMOD #include <sys/conf.h> #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 61 -#endif /*JREMOD*/ +#include <scsi/scsi_all.h> +#include <scsi/scsiconf.h> + struct scsi_data { struct buf_queue_head buf_queue; @@ -70,8 +67,20 @@ void ptstart(u_int32 unit, u_int32 flags); void pt_strategy(struct buf *bp, struct scsi_link *sc_link); int pt_sense(struct scsi_xfer *scsi_xfer); +static d_open_t ptopen; +static d_close_t ptclose; +static d_ioctl_t ptioctl; +static d_strategy_t ptstrategy; + +#define CDEV_MAJOR 61 +struct cdevsw pt_cdevsw = + { ptopen, ptclose, rawread, rawwrite, /*61*/ + ptioctl, nostop, nullreset, nodevtotty,/* pt */ + seltrue, nommap, ptstrategy, "pt", NULL, -1 }; + SCSI_DEVICE_ENTRIES(pt) + struct scsi_device pt_switch = { pt_sense, @@ -259,12 +268,6 @@ int pt_sense(struct scsi_xfer *xs) } } -#ifdef JREMOD -struct cdevsw pt_cdevsw = - { ptopen, ptclose, rawread, rawwrite, /*61*/ - ptioctl, nostop, nullreset, nodevtotty,/* pt */ - seltrue, nommap, ptstrategy }; - static pt_devsw_installed = 0; static void pt_drvinit(void *unused) @@ -272,16 +275,16 @@ static void pt_drvinit(void *unused) dev_t dev; if( ! pt_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&pt_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&pt_cdevsw, NULL); pt_devsw_installed = 1; #ifdef DEVFS { - int x; + void *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*/ - "/", "pt", major(dev), 0, DV_CHR, 0, 0, 0600); + "/", "pt", &pt_cdevsw, 0, DV_CHR, 0, 0, 0600); } #endif } @@ -289,5 +292,4 @@ static void pt_drvinit(void *unused) SYSINIT(ptdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,pt_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/scsi/sctarg.c b/sys/scsi/sctarg.c index 42592eb..de3e748 100644 --- a/sys/scsi/sctarg.c +++ b/sys/scsi/sctarg.c @@ -1,5 +1,5 @@ /* - * sctarg: Processor Type driver. + * sctarg: Target mode user interface * * Copyright (C) 1995, HD Associates, Inc. * PO Box 276 @@ -37,7 +37,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: sctarg.c,v 1.7 1995/11/29 10:49:01 julian Exp $ + * $Id: sctarg.c,v 1.8 1995/11/29 14:41:00 julian Exp $ */ /* @@ -50,17 +50,14 @@ #include <sys/systm.h> #include <sys/buf.h> #include <sys/proc.h> -#include <scsi/scsi_all.h> -#include <scsi/scsiconf.h> - -#ifdef JREMOD #include <sys/conf.h> #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 65 -#endif /*JREMOD*/ +#include <scsi/scsi_all.h> +#include <scsi/scsiconf.h> + #define OPEN 0x01 @@ -76,6 +73,17 @@ errval sctarg_close(dev_t dev, int flag, int fmt, struct proc *p, struct scsi_link *sc_link); void sctarg_strategy(struct buf *bp, struct scsi_link *sc_link); +static d_open_t sctargopen; +static d_close_t sctargclose; +static d_ioctl_t sctargioctl; +static d_strategy_t sctargstrategy; + +#define CDEV_MAJOR 65 +struct cdevsw sctarg_cdevsw = + { sctargopen, sctargclose, rawread, rawwrite, /*65*/ + sctargioctl, nostop, nullreset, nodevtotty,/* sctarg */ + seltrue, nommap, sctargstrategy, "sctarg", NULL, -1 }; + SCSI_DEVICE_ENTRIES(sctarg) struct scsi_device sctarg_switch = @@ -276,35 +284,25 @@ sctarg_strategy(struct buf *bp, struct scsi_link *sc_link) return; } -#ifdef JREMOD -struct cdevsw sctarg_cdevsw = - { sctargopen, sctargclose, rawread, rawwrite, /*65*/ - sctargioctl, nostop, nullreset, nodevtotty,/* sctarg */ - seltrue, nommap, sctargstrategy }; - static sctarg_devsw_installed = 0; static void sctarg_drvinit(void *unused) { dev_t dev; + void *x; if( ! sctarg_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&sctarg_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&sctarg_cdevsw, NULL); sctarg_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*/ - "/", "sctarg", major(dev), 0, DV_CHR, 0, 0, 0600); - } + /* XXX should be in ADAPTER code */ + x=devfs_add_devsw( "/scsi", "sctarg", &sctarg_cdevsw, 0, + DV_CHR, 0, 0, 0600); #endif } } SYSINIT(sctargdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,sctarg_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/scsi/sd.c b/sys/scsi/sd.c index 7b5e106..fa70096 100644 --- a/sys/scsi/sd.c +++ b/sys/scsi/sd.c @@ -14,7 +14,7 @@ * * Ported to run under 386BSD by Julian Elischer (julian@dialix.oz.au) Sept 1992 * - * $Id: sd.c,v 1.74 1995/11/29 14:41:02 julian Exp $ + * $Id: sd.c,v 1.75 1995/12/07 12:47:48 davidg Exp $ */ #define SPLSD splbio @@ -30,6 +30,10 @@ #include <sys/dkstat.h> #include <sys/errno.h> #include <sys/malloc.h> +#include <sys/conf.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /*DEVFS*/ #include <scsi/scsi_all.h> #include <scsi/scsi_disk.h> @@ -39,17 +43,7 @@ #include <vm/vm_param.h> #include <vm/pmap.h> #include <machine/md_var.h> -#include <i386/i386/cons.h> /* XXX */ - -#ifdef JREMOD -#include <sys/conf.h> -#include <sys/kernel.h> -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 13 -#define BDEV_MAJOR 4 -#endif /*JREMOD */ +#include <i386/i386/cons.h> /* XXX *//* for aborting dump */ u_int32 sdstrats, sdqueues; @@ -84,6 +78,10 @@ struct scsi_data { struct diskslices *dk_slices; /* virtual drives */ struct buf_queue_head buf_queue; int dkunit; /* disk stats unit number */ +#ifdef DEVFS + void *c_devfs_token; + void *b_devfs_token; +#endif }; static int sdunit(dev_t dev) { return SDUNIT(dev); } @@ -97,6 +95,27 @@ static errval sd_close __P((dev_t dev, int fflag, int fmt, struct proc *p, struct scsi_link *sc_link)); static void sd_strategy(struct buf *bp, struct scsi_link *sc_link); +static d_open_t sdopen; +static d_close_t sdclose; +static d_ioctl_t sdioctl; +static d_dump_t sddump; +static d_psize_t sdsize; +static d_strategy_t sdstrategy; + +#define CDEV_MAJOR 13 +#define BDEV_MAJOR 4 +extern struct cdevsw sd_cdevsw; /* hold off the complaints for a second */ +struct bdevsw sd_bdevsw = + { sdopen, sdclose, sdstrategy, sdioctl, /*4*/ + sddump, sdsize, 0, "sd", &sd_cdevsw, -1 }; + +struct cdevsw sd_cdevsw = + { sdopen, sdclose, rawread, rawwrite, /*13*/ + sdioctl, nostop, nullreset, nodevtotty, + seltrue, nommap, sdstrategy, "sd", + &sd_bdevsw, -1 }; + + SCSI_DEVICE_ENTRIES(sd) static struct scsi_device sd_switch = @@ -169,6 +188,7 @@ sdattach(struct scsi_link *sc_link) { u_int32 unit; struct disk_parms *dp; + char name[32]; struct scsi_data *sd = sc_link->sd; @@ -209,6 +229,15 @@ sdattach(struct scsi_link *sc_link) sd->flags |= SDINIT; sd_registerdev(unit); +#ifdef DEVFS +/* Fix minor numbers */ + sprintf(name,"rsd%d",unit); + sd->c_devfs_token = devfs_add_devsw( "/", name, &sd_cdevsw, 0, + DV_CHR, 0, 0, 0600); + sprintf(name,"sd%d",unit); + sd->b_devfs_token = devfs_add_devsw( "/", name, &sd_bdevsw, 0, + DV_BLK, 0, 0, 0600); +#endif return 0; } @@ -963,45 +992,20 @@ sddump(dev_t dev) return (0); } -#ifdef JREMOD -struct bdevsw sd_bdevsw = - { sdopen, sdclose, sdstrategy, sdioctl, /*4*/ - sddump, sdsize, 0 }; - -struct cdevsw sd_cdevsw = - { sdopen, sdclose, rawread, rawwrite, /*13*/ - sdioctl, nostop, nullreset, nodevtotty,/* sd */ - seltrue, nommap, sdstrategy }; - static sd_devsw_installed = 0; static void sd_drvinit(void *unused) { dev_t dev; - dev_t dev_chr; if( ! sd_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&sd_cdevsw,NULL); - dev_chr = dev; - dev = makedev(BDEV_MAJOR,0); - bdevsw_add(&dev,&sd_bdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&sd_cdevsw, NULL); + dev = makedev(BDEV_MAJOR, 0); + bdevsw_add(&dev,&sd_bdevsw, NULL); sd_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*/ - "/", "rsd", major(dev_chr), 0, DV_CHR, 0, 0, 0600); - x=devfs_add_devsw( - "/", "sd", major(dev), 0, DV_BLK, 0, 0, 0600); - } -#endif } } SYSINIT(sddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,sd_drvinit,NULL) -#endif /* JREMOD */ - diff --git a/sys/scsi/ssc.c b/sys/scsi/ssc.c index d94def1..2a0988b 100644 --- a/sys/scsi/ssc.c +++ b/sys/scsi/ssc.c @@ -49,38 +49,49 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *End copyright - * $Id: ssc.c,v 1.6 1995/11/29 14:41:03 julian Exp $ + * $Id: ssc.c,v 1.7 1995/12/05 19:36:33 bde Exp $ */ #include <sys/types.h> +#include <sys/param.h> #include <sys/conf.h> -#include <scsi/scsiconf.h> #include <sys/scsiio.h> - +#include <sys/kernel.h> #include <sys/errno.h> #include <sys/stat.h> -#include <sys/param.h> #include <sys/buf.h> #include <sys/systm.h> - -#ifdef JREMOD -#include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ +#include <scsi/scsiconf.h> + +static d_open_t sscopen; +static d_close_t sscclose; +static d_ioctl_t sscioctl; + +extern d_open_t suopen; +extern d_close_t suclose; +extern d_ioctl_t suioctl; + #define CDEV_MAJOR 49 -#endif /*JREMOD*/ +struct cdevsw ssc_cdevsw = + { sscopen, sscclose, noread, nowrite, /*49*/ + sscioctl, nostop, nullreset, nodevtotty, + noselect, nxmmap, nostrategy, "ssc", NULL, -1 }; static dev_t sscdev = NODEV; -int sscopen(dev_t dev, int flag, int type, struct proc *p) +static int +sscopen(dev_t dev, int flag, int type, struct proc *p) { if (sscdev != NODEV) return suopen(sscdev, flag, type, p); return 0; } -int sscclose(dev_t dev, int fflag, int type, struct proc *p) +static int +sscclose(dev_t dev, int fflag, int type, struct proc *p) { if (sscdev != NODEV) @@ -88,7 +99,8 @@ int sscclose(dev_t dev, int fflag, int type, struct proc *p) return 0; } -int sscioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p) +static int +sscioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p) { if (cmd == SCIOCADDR) { @@ -121,42 +133,25 @@ int sscioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p) * good reason other than I'm not sure how you would use them. */ - -#ifdef JREMOD -struct cdevsw ssc_cdevsw = - { sscopen, sscclose, noread, nowrite, /*49*/ - sscioctl, nostop, nullreset, nodevtotty,/* scsi super */ - noselect, nommap, nostrategy }; - static ssc_devsw_installed = 0; +static void *ssc_devfs_token; -static void ssc_drvinit(void *unused) +static void +ssc_drvinit(void *unused) { dev_t dev; - dev_t dev_chr; if( ! ssc_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&ssc_cdevsw,NULL); - dev_chr = dev; -#if defined(BDEV_MAJOR) - dev = makedev(BDEV_MAJOR,0); - bdevsw_add(&dev,&ssc_bdevsw,NULL); -#endif /*BDEV_MAJOR*/ + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&ssc_cdevsw, NULL); ssc_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*/ - "/", "ssc", major(dev_chr), 0, DV_CHR, 0, 0, 0600); - } + ssc_devfs_token = devfs_add_devsw( + "/scsi", "ssc", &ssc_cdevsw, 0, + DV_CHR, 0, 0, 0600); #endif } } SYSINIT(sscdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,ssc_drvinit,NULL) -#endif /* JREMOD */ - diff --git a/sys/scsi/st.c b/sys/scsi/st.c index 4dc59c5..86cb8c6 100644 --- a/sys/scsi/st.c +++ b/sys/scsi/st.c @@ -12,7 +12,7 @@ * on the understanding that TFS is not responsible for the correct * functioning of this software in any circumstances. * - * $Id: st.c,v 1.47 1995/11/30 07:43:47 pst Exp $ + * $Id: st.c,v 1.48 1995/12/06 23:44:23 bde Exp $ */ /* @@ -39,21 +39,17 @@ #include <sys/buf.h> #include <sys/proc.h> #include <sys/mtio.h> +#include <sys/conf.h> +#include <sys/kernel.h> +#ifdef DEVFS +#include <sys/devfsext.h> +#endif /*DEVFS*/ #include <scsi/scsi_all.h> #include <scsi/scsi_tape.h> #include <scsi/scsiconf.h> #include <sys/devconf.h> -#ifdef JREMOD -#include <sys/conf.h> -#include <sys/kernel.h> -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ -#define CDEV_MAJOR 14 -#define BDEV_MAJOR 5 -#endif /*JREMOD */ /* Defines for device specific stuff */ @@ -229,6 +225,30 @@ struct scsi_data { struct buf_queue_head buf_queue; struct scsi_xfer scsi_xfer; /* scsi xfer struct for this drive */ u_int32 xfer_block_wait; /* is a process waiting? */ +#ifdef DEVFS + struct { + void *rst; + void *nrst; + void *enrst; + /* end of aliases */ + void *rst_0; + void *nrst_0; + void *enrst_0; + void *ctl_0; + void *rst_1; + void *nrst_1; + void *enrst_1; + void *ctl_1; + void *rst_2; + void *nrst_2; + void *enrst_2; + void *ctl_2; + void *rst_3; + void *nrst_3; + void *enrst_3; + void *ctl_3; + } devfs_token; +#endif }; static int stunit(dev_t dev) { return STUNIT(dev); } @@ -242,6 +262,22 @@ static errval st_close(dev_t dev, int flag, int fmt, struct proc *p, struct scsi_link *sc_link); static void st_strategy(struct buf *bp, struct scsi_link *sc_link); +d_open_t stopen; +d_close_t stclose; +d_ioctl_t stioctl; +d_strategy_t ststrategy; + +#define CDEV_MAJOR 14 +#define BDEV_MAJOR 5 +struct bdevsw st_bdevsw = + { stopen, stclose, ststrategy, stioctl, /*5*/ + nxdump, zerosize, 0 }; + +struct cdevsw st_cdevsw = + { stopen, stclose, rawread, rawwrite, /*14*/ + stioctl, nostop, nullreset, nodevtotty,/* st */ + seltrue, nommap, ststrategy }; + SCSI_DEVICE_ENTRIES(st) static struct scsi_device st_switch = @@ -325,10 +361,11 @@ st_registerdev(int unit) * a device suitable for this driver */ -errval +static errval stattach(struct scsi_link *sc_link) { u_int32 unit; + char name[32]; struct scsi_data *st = sc_link->sd; @@ -371,7 +408,81 @@ stattach(struct scsi_link *sc_link) */ st->flags |= ST_INITIALIZED; st_registerdev(unit); - +#ifdef DEVFS +#define ST_GID 13 +#define ST_UID 0 + sprintf(name,"rst%d.0",unit); + st->devfs_token.rst_0 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 0, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"nrst%d.0",unit); + st->devfs_token.nrst_0 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 1, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"enrst%d.0",unit); + st->devfs_token.enrst_0 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 2, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"st%dctl.0",unit); + st->devfs_token.ctl_0 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 3, + DV_CHR, ST_UID, ST_GID, 0600 ); + sprintf(name,"rst%d.1",unit); + st->devfs_token.rst_1 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 4, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"nrst%d.1",unit); + st->devfs_token.nrst_1 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 5, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"enrst%d.1",unit); + st->devfs_token.enrst_1 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 6, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"st%dctl.1",unit); + st->devfs_token.ctl_1 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 7, + DV_CHR, ST_UID, ST_GID, 0600 ); + sprintf(name,"rst%d.2",unit); + st->devfs_token.rst_2 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 8, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"nrst%d.2",unit); + st->devfs_token.nrst_2 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 9, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"enrst%d.2",unit); + st->devfs_token.enrst_2 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 10, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"st%dctl.2",unit); + st->devfs_token.ctl_2 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 11, + DV_CHR, ST_UID, ST_GID, 0600 ); + sprintf(name,"rst%d.3",unit); + st->devfs_token.rst_3 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 12, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"nrst%d.3",unit); + st->devfs_token.nrst_3 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 13, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"enrst%d.3",unit); + st->devfs_token.enrst_3 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 14, + DV_CHR, ST_UID, ST_GID, 0660 ); + sprintf(name,"st%dctl.3",unit); + st->devfs_token.ctl_3 = devfs_add_devsw( "/tape", name, + &st_cdevsw, (unit << 4 ) + 15, + DV_CHR, ST_UID, ST_GID, 0600 ); + /** add links **/ + sprintf(name,"rst%d",unit); + st->devfs_token.rst = dev_link( "/", name, st->devfs_token.rst_0); + sprintf(name,"nrst%d",unit); + st->devfs_token.nrst = dev_link( "/", name, st->devfs_token.nrst_0); + sprintf(name,"enrst%d",unit); + st->devfs_token.enrst = dev_link( "/", name, st->devfs_token.enrst_0); +#endif return 0; } @@ -380,7 +491,7 @@ stattach(struct scsi_link *sc_link) * Use the inquiry routine in 'scsi_base' to get drive info so we can * Further tailor our behaviour. */ -void +static void st_identify_drive(unit) u_int32 unit; { @@ -458,7 +569,7 @@ st_identify_drive(unit) * this will remove any setting made by the system operator or previous * operations. */ -void +static void st_loadquirks(sc_link) struct scsi_link *sc_link; { @@ -513,7 +624,7 @@ st_loadquirks(sc_link) /* * open the device. */ -errval +static errval st_open(dev_t dev, int flags, int fmt, struct proc *p, struct scsi_link *sc_link) { @@ -599,7 +710,7 @@ struct scsi_link *sc_link) * close the device.. only called if we are the LAST * occurence of an open device */ -errval +static errval st_close(dev_t dev, int flag, int fmt, struct proc *p, struct scsi_link *sc_link) { @@ -636,7 +747,7 @@ st_close(dev_t dev, int flag, int fmt, struct proc *p, * Copy in all the default parameters from the selected device mode. * and try guess any that seem to be defaulted. */ -errval +static errval st_mount_tape(dev, flags) dev_t dev; u_int32 flags; @@ -766,7 +877,7 @@ st_unmount(int unit, boolean eject) * initial operation, make a decision as to how we should be set * to run (regarding blocking and EOD marks) */ -errval +static errval st_decide_mode(unit, first_read) u_int32 unit; boolean first_read; @@ -904,7 +1015,7 @@ done: * The transfer is described by a buf and will include * only one physical transfer. */ -void +static void st_strategy(struct buf *bp, struct scsi_link *sc_link) { u_int32 unit; @@ -1003,7 +1114,7 @@ done: * continues to be drained. * ststart() is called at splbio */ -void +static void ststart(unit, flags) u_int32 unit; u_int32 flags; @@ -1133,7 +1244,7 @@ badnews: * Perform special action on behalf of the user; * knows about the internals of this device */ -errval +static errval st_ioctl(dev_t dev, int cmd, caddr_t arg, int flag, struct proc *p, struct scsi_link *sc_link) { @@ -1364,7 +1475,7 @@ st_read(unit, buf, size, flags) /* * Ask the drive what it's min and max blk sizes are. */ -errval +static errval st_rd_blk_lim(unit, flags) u_int32 unit, flags; { @@ -1506,7 +1617,7 @@ st_mode_sense(unit, flags, page, pagelen, pagecode) * Send a filled out parameter structure to the drive to * set it into the desire modes etc. */ -errval +static errval st_mode_select(unit, flags, page, pagelen) u_int32 unit, flags; struct tape_pages *page; @@ -1573,7 +1684,8 @@ static int noisy_st = 0; * Set the compression mode of the drive to on (1) or off (0) * still doesn't work! grrr! \***************************************************************/ -errval st_comp(unit,mode) +static errval +st_comp(unit,mode) u_int32 unit,mode; { struct tape_pages page; @@ -1621,7 +1733,7 @@ u_int32 unit,mode; /* * skip N blocks/filemarks/seq filemarks/eom */ -errval +static errval st_space(unit, number, what, flags) u_int32 unit, what, flags; int32 number; @@ -1706,7 +1818,7 @@ st_space(unit, number, what, flags) /* * write N filemarks */ -errval +static errval st_write_filemarks(unit, number, flags) u_int32 unit, flags; int32 number; @@ -1758,7 +1870,7 @@ st_write_filemarks(unit, number, flags) * nmarks returns the number of marks to skip (or, if position * true, which were skipped) to get back original position. */ -int32 +static int32 st_chkeod(unit, position, nmarks, flags) u_int32 unit; boolean position; @@ -1788,7 +1900,7 @@ st_chkeod(unit, position, nmarks, flags) /* * load/unload (with retension if true) */ -errval +static errval st_load(unit, type, flags) u_int32 unit, type, flags; { @@ -1824,7 +1936,7 @@ st_load(unit, type, flags) /* * Rewind the device */ -errval +static errval st_rewind(unit, immed, flags) u_int32 unit, flags; boolean immed; @@ -1856,7 +1968,7 @@ st_rewind(unit, immed, flags) /* ** Erase the device */ -errval +static errval st_erase(unit, immed, flags) u_int32 unit, flags; boolean immed; @@ -1900,7 +2012,7 @@ st_erase(unit, immed, flags) * The unix error number to pass back... (0 = report no error) * (SCSIRET_CONTINUE = continue processing) */ -errval +static errval st_interpret_sense(xs) struct scsi_xfer *xs; { @@ -2039,7 +2151,7 @@ st_interpret_sense(xs) * The rest of the code for this quirk is in ILI processing and BLANK CHECK * error processing, both part of st_interpret_sense. */ -errval +static errval st_touch_tape(unit) u_int32 unit; { @@ -2079,43 +2191,22 @@ bad: free(buf, M_TEMP); return 0; } -#ifdef JREMOD -struct bdevsw st_bdevsw = - { stopen, stclose, ststrategy, stioctl, /*5*/ - nxdump, zerosize, 0 }; - -struct cdevsw st_cdevsw = - { stopen, stclose, rawread, rawwrite, /*14*/ - stioctl, nostop, nullreset, nodevtotty,/* st */ - seltrue, nommap, ststrategy }; - static st_devsw_installed = 0; -static void st_drvinit(void *unused) +static void +st_drvinit(void *unused) { dev_t dev; - dev_t dev_chr; if( ! st_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&st_cdevsw,NULL); - dev_chr = dev; - dev = makedev(BDEV_MAJOR,0); - bdevsw_add(&dev,&st_bdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&st_cdevsw, NULL); + dev = makedev(BDEV_MAJOR, 0); + bdevsw_add(&dev,&st_bdevsw, NULL); st_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*/ - "/", "rst", major(dev_chr), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(stdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,st_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/scsi/su.c b/sys/scsi/su.c index a7dac94..1bbefa1 100644 --- a/sys/scsi/su.c +++ b/sys/scsi/su.c @@ -44,27 +44,41 @@ * SUCH DAMAGE. *End copyright * - * $Id: su.c,v 1.7 1995/11/29 10:49:06 julian Exp $ + * $Id: su.c,v 1.8 1995/11/29 14:41:06 julian Exp $ * * Tabstops 4 + * XXX devfs entries for this device should be handled by generic scsiconfig + * Add a bdevsw interface.. ? */ #include <sys/types.h> #include <sys/conf.h> -#include <scsi/scsiconf.h> #include <sys/errno.h> #include <sys/stat.h> #include <sys/param.h> #include <sys/buf.h> #include <sys/systm.h> - -#ifdef JREMOD #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ +#include <scsi/scsiconf.h> #define CDEV_MAJOR 18 -#endif /*JREMOD*/ + + + d_open_t suopen; /* these three used by ssc */ + d_close_t suclose; + d_ioctl_t suioctl; +static d_read_t suread; +static d_write_t suwrite; +static d_select_t suselect; +static d_strategy_t sustrategy; + +struct cdevsw su_cdevsw = + { suopen, suclose, suread, suwrite, /*18*/ + suioctl, nostop, nullreset, nodevtotty,/* scsi */ + suselect, nxmmap, sustrategy, "su", NULL, -1 }; + /* Build an old style device number (unit encoded in the minor number) * from a base old one (no flag bits) and a full new one @@ -88,7 +102,10 @@ static struct bdevsw bnxio = { nxioctl, nxdump, nxpsize, - 0 + 0, + "NON", + NULL, + -1 }; static struct cdevsw cnxio = { @@ -102,7 +119,10 @@ static struct cdevsw cnxio = { nxdevtotty, nxselect, nxmmap, - nxstrategy + nxstrategy, + "NON", + NULL, + -1 }; /* getsws: Look up the base dev switch for a given "by minor number" style @@ -192,7 +212,8 @@ suopen(dev_t dev, int flag, int type, struct proc *p) return (*bdev->d_open)(base, flag, S_IFBLK, p); } -int suclose(dev_t dev, int fflag, int type, struct proc *p) +int +suclose(dev_t dev, int fflag, int type, struct proc *p) { struct cdevsw *cdev; struct bdevsw *bdev; @@ -206,7 +227,8 @@ int suclose(dev_t dev, int fflag, int type, struct proc *p) return (*bdev->d_open)(base, fflag, S_IFBLK, p); } -void sustrategy(struct buf *bp) +static void +sustrategy(struct buf *bp) { dev_t base; struct bdevsw *bdev; @@ -224,7 +246,8 @@ void sustrategy(struct buf *bp) bp->b_dev = dev; } -int suioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p) +int +suioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p) { struct cdevsw *cdev; dev_t base; @@ -237,7 +260,8 @@ int suioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p) return (*cdev->d_ioctl)(base, cmd, data, fflag, p); } -int sudump(dev_t dev) +static int +sudump(dev_t dev) { dev_t base; struct bdevsw *bdev; @@ -247,7 +271,8 @@ int sudump(dev_t dev) return (*bdev->d_dump)(base); } -int supsize(dev_t dev) +static int +supsize(dev_t dev) { dev_t base; struct bdevsw *bdev; @@ -257,7 +282,8 @@ int supsize(dev_t dev) return (*bdev->d_psize)(base); } -int suread(dev_t dev, struct uio *uio, int ioflag) +static int +suread(dev_t dev, struct uio *uio, int ioflag) { dev_t base; struct cdevsw *cdev; @@ -267,7 +293,8 @@ int suread(dev_t dev, struct uio *uio, int ioflag) return (*cdev->d_read)(base, uio, ioflag); } -int suwrite(dev_t dev, struct uio *uio, int ioflag) +static int +suwrite(dev_t dev, struct uio *uio, int ioflag) { dev_t base; struct cdevsw *cdev; @@ -277,7 +304,8 @@ int suwrite(dev_t dev, struct uio *uio, int ioflag) return (*cdev->d_write)(base, uio, ioflag); } -int suselect(dev_t dev, int which, struct proc *p) +static int +suselect(dev_t dev, int which, struct proc *p) { dev_t base; struct cdevsw *cdev; @@ -287,35 +315,20 @@ int suselect(dev_t dev, int which, struct proc *p) return (*cdev->d_select)(base, which, p); } -#ifdef JREMOD -struct cdevsw su_cdevsw = - { suopen, suclose, suread, suwrite, /*18*/ - suioctl, nostop, nullreset, nodevtotty,/* scsi */ - suselect, nxmmap, sustrategy }; /* 'generic' */ - static su_devsw_installed = 0; -static void su_drvinit(void *unused) +static void +su_drvinit(void *unused) { dev_t dev; if( ! su_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&su_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&su_cdevsw, NULL); su_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*/ - "/", "su", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(sudev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,su_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/scsi/uk.c b/sys/scsi/uk.c index 0cf4cf6..53302e2 100644 --- a/sys/scsi/uk.c +++ b/sys/scsi/uk.c @@ -2,7 +2,7 @@ * Driver for a device we can't identify. * by Julian Elischer (julian@tfs.com) * - * $Id: uk.c,v 1.10 1995/11/29 10:49:07 julian Exp $ + * $Id: uk.c,v 1.11 1995/11/29 14:41:07 julian Exp $ * * If you find that you are adding any code to this file look closely * at putting it in "scsi_driver.c" instead. @@ -10,34 +10,41 @@ #include <sys/param.h> #include <sys/systm.h> -#include <scsi/scsi_all.h> -#include <scsi/scsiconf.h> -#ifdef JREMOD #include <sys/conf.h> #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 31 -#endif /*JREMOD*/ +#include <scsi/scsi_all.h> +#include <scsi/scsiconf.h> +static d_open_t ukopen; +static d_close_t ukclose; +static d_ioctl_t ukioctl; + +#define CDEV_MAJOR 31 +struct cdevsw uk_cdevsw = + { ukopen, ukclose, noread, nowrite, /*31*/ + ukioctl, nostop, nullreset, nodevtotty,/* unknown */ + seltrue, nommap, NULL, "uk" ,NULL, -1 }; + SCSI_DEVICE_ENTRIES(uk) struct scsi_device uk_switch = { - NULL, - NULL, - NULL, - NULL, - "uk", - 0, + NULL, + NULL, + NULL, + NULL, + "uk", + 0, {0, 0}, SDEV_ONCE_ONLY, /* Only one open allowed */ 0, "Unknown", ukopen, - 0, + 0, T_UNKNOWN, 0, 0, @@ -47,11 +54,6 @@ struct scsi_device uk_switch = 0, }; -#ifdef JREMOD -struct cdevsw uk_cdevsw = - { ukopen, ukclose, noread, nowrite, /*31*/ - ukioctl, nostop, nullreset, nodevtotty,/* unknown */ - seltrue, nommap, NULL }; /* scsi */ static uk_devsw_installed = 0; @@ -60,22 +62,12 @@ static void uk_drvinit(void *unused) dev_t dev; if( ! uk_devsw_installed ) { - dev = makedev(CDEV_MAJOR,0); - cdevsw_add(&dev,&uk_cdevsw,NULL); + dev = makedev(CDEV_MAJOR, 0); + cdevsw_add(&dev,&uk_cdevsw, NULL); uk_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*/ - "/", "uk", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(ukdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,uk_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/scsi/worm.c b/sys/scsi/worm.c index 8878bd2..b065bf8 100644 --- a/sys/scsi/worm.c +++ b/sys/scsi/worm.c @@ -37,7 +37,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: worm.c,v 1.12 1995/11/29 14:41:09 julian Exp $ + * $Id: worm.c,v 1.13 1995/12/05 07:14:27 julian Exp $ */ /* XXX This is PRELIMINARY. @@ -55,24 +55,23 @@ #include <sys/systm.h> #include <sys/buf.h> #include <sys/proc.h> -#include <scsi/scsi_all.h> -#include <scsi/scsiconf.h> -#include <scsi/scsi_disk.h> - -#ifdef JREMOD #include <sys/conf.h> #include <sys/kernel.h> #ifdef DEVFS #include <sys/devfsext.h> #endif /*DEVFS*/ -#define CDEV_MAJOR 62 -#endif /*JREMOD*/ +#include <scsi/scsi_all.h> +#include <scsi/scsiconf.h> +#include <scsi/scsi_disk.h> struct scsi_data { struct buf_queue_head buf_queue; u_int32 n_blks; /* Number of blocks (0 for bogus) */ u_int32 blk_size; /* Size of each blocks */ +#ifdef DEVFS + void *devfs_token; /* more elaborate later */ +#endif }; static void wormstart(u_int32 unit, u_int32 flags); @@ -85,22 +84,34 @@ static errval worm_close(dev_t dev, int flag, int fmt, struct proc *p, struct scsi_link *sc_link); static void worm_strategy(struct buf *bp, struct scsi_link *sc_link); +static d_open_t wormopen; +static d_close_t wormclose; +static d_ioctl_t wormioctl; +d_strategy_t wormstrategy; + +#define CDEV_MAJOR 62 +struct cdevsw worm_cdevsw = + { wormopen, wormclose, rawread, rawwrite, /*62*/ + wormioctl, nostop, nullreset, nodevtotty,/* worm */ + seltrue, nommap, wormstrategy }; + + SCSI_DEVICE_ENTRIES(worm) static struct scsi_device worm_switch = { - NULL, - wormstart, /* we have a queue, and this is how we service it */ - NULL, - NULL, - "worm", - 0, + NULL, + wormstart, /* we have a queue, and this is how we service it */ + NULL, + NULL, + "worm", + 0, {0, 0}, SDEV_ONCE_ONLY, /* Only one open allowed */ wormattach, "Write-Once", wormopen, - sizeof(struct scsi_data), + sizeof(struct scsi_data), T_WORM, 0, 0, @@ -147,7 +158,13 @@ wormattach(struct scsi_link *sc_link) if (worm_size(sc_link, SCSI_NOSLEEP | SCSI_NOMASK) == 0) printf("- can't get capacity."); else - printf("with %ld %ld byte blocks.", worm->n_blks, worm->blk_size); + printf("with %ld %ld byte blocks.", + worm->n_blks, worm->blk_size); +#ifdef DEVFS + + worm->devfs_token = devfs_add_devsw( "/", "rworm", &worm_cdevsw, 0, + DV_CHR, 0, 0, 0600); +#endif return 0; } @@ -358,15 +375,10 @@ worm_close(dev_t dev, int flag, int fmt, struct proc *p, return 0; } -#ifdef JREMOD -struct cdevsw worm_cdevsw = - { wormopen, wormclose, rawread, rawwrite, /*62*/ - wormioctl, nostop, nullreset, nodevtotty,/* worm */ - seltrue, nommap, wormstrategy }; - static worm_devsw_installed = 0; -static void worm_drvinit(void *unused) +static void +worm_drvinit(void *unused) { dev_t dev; @@ -374,19 +386,9 @@ static void worm_drvinit(void *unused) dev = makedev(CDEV_MAJOR,0); cdevsw_add(&dev,&worm_cdevsw,NULL); worm_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*/ - "/", "rworm", major(dev), 0, DV_CHR, 0, 0, 0600); - } -#endif } } SYSINIT(wormdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,worm_drvinit,NULL) -#endif /* JREMOD */ diff --git a/sys/sys/conf.h b/sys/sys/conf.h index 1fc0c04..d29f7e0 100644 --- a/sys/sys/conf.h +++ b/sys/sys/conf.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)conf.h 8.3 (Berkeley) 1/21/94 - * $Id: conf.h,v 1.23 1995/11/29 14:41:17 julian Exp $ + * $Id: conf.h,v 1.24 1995/12/05 19:53:14 bde Exp $ */ #ifndef _SYS_CONF_H_ @@ -58,6 +58,7 @@ typedef int d_close_t __P((dev_t, int, int, struct proc *)); typedef int d_ioctl_t __P((dev_t, int, caddr_t, int, struct proc *)); typedef int d_dump_t __P((dev_t)); typedef int d_psize_t __P((dev_t)); +typedef int d_size_t __P((dev_t)); typedef int d_read_t __P((dev_t, struct uio *, int)); typedef int d_write_t __P((dev_t, struct uio *, int)); @@ -87,6 +88,9 @@ struct bdevsw { d_dump_t *d_dump; d_psize_t *d_psize; int d_flags; + char *d_name; /* name of the driver e.g. audio */ + struct cdevsw *d_cdev; /* cross pointer to the cdev */ + int d_maj; /* the major number we were assigned */ }; #ifdef KERNEL @@ -105,6 +109,9 @@ struct cdevsw { d_select_t *d_select; d_mmap_t *d_mmap; d_strategy_t *d_strategy; + char *d_name; + struct bdevsw *d_bdev; /* cross pointer to the bdev */ + int d_maj; /* the major number we were assigned */ }; #ifdef KERNEL @@ -153,12 +160,10 @@ d_devtotty_t nodevtotty; d_select_t noselect; d_mmap_t nommap; -#ifdef JREMOD /* Bogus defines for compatibility. */ #define noioc noioctl #define nostrat nostrategy #define zerosize nopsize -#endif /*JREMOD*/ /* * XXX d_strategy seems to be unused for cdevs that aren't associated with * bdevs and called without checking for it being non-NULL for bdevs. @@ -197,10 +202,8 @@ d_rdwr_t rawwrite; l_read_t l_noread; l_write_t l_nowrite; -#ifdef JREMOD int bdevsw_add __P((dev_t *descrip,struct bdevsw *new,struct bdevsw *old)); int cdevsw_add __P((dev_t *descrip,struct cdevsw *new,struct cdevsw *old)); -#endif dev_t chrtoblk __P((dev_t dev)); int getmajorbyname __P((const char *name)); int isdisk __P((dev_t dev, int type)); diff --git a/sys/sys/cons.h b/sys/sys/cons.h index 8fbd43f..8fa2d90 100644 --- a/sys/sys/cons.h +++ b/sys/sys/cons.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * from: @(#)cons.h 7.2 (Berkeley) 5/9/91 - * $Id: cons.h,v 1.10 1995/09/10 18:57:26 bde Exp $ + * $Id: cons.h,v 1.11 1995/09/10 21:34:50 bde Exp $ */ #ifndef _MACHINE_CONS_H_ @@ -106,14 +106,6 @@ extern int cons_unavail; struct proc; struct uio; -/* cdevsw[] entries */ -extern int cnopen(dev_t, int, int, struct proc *); -extern int cnclose(dev_t, int, int, struct proc *); -extern int cnread(dev_t, struct uio *, int); -extern int cnwrite(dev_t, struct uio *, int); -extern int cnioctl(dev_t, int, caddr_t, int, struct proc *); -extern int cnselect(dev_t, int, struct proc *); - /* other kernel entry points */ extern void cninit(void); extern void cninit_finish(void); diff --git a/sys/sys/devfsext.h b/sys/sys/devfsext.h index 3e33f76..31f16e4 100644 --- a/sys/sys/devfsext.h +++ b/sys/sys/devfsext.h @@ -1,14 +1,14 @@ /* usual BSD style copyright here */ /* Written by Julian Elischer (julian@dialix.oz.au)*/ /* - * $Id: devfsext.h,v 1.2 1995/09/08 04:46:04 julian Exp $ + * $Id: devfsext.h,v 1.3 1995/11/29 10:49:13 julian Exp $ */ #ifndef _SYS_DEVFSECT_H_ #define _SYS_DEVFSECT_H_ 1 void *devfs_add_devsw(char *path, char *name, - int major, + void *devsw, int minor, int chrblk, uid_t uid, diff --git a/sys/sys/linedisc.h b/sys/sys/linedisc.h index 1fc0c04..d29f7e0 100644 --- a/sys/sys/linedisc.h +++ b/sys/sys/linedisc.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)conf.h 8.3 (Berkeley) 1/21/94 - * $Id: conf.h,v 1.23 1995/11/29 14:41:17 julian Exp $ + * $Id: conf.h,v 1.24 1995/12/05 19:53:14 bde Exp $ */ #ifndef _SYS_CONF_H_ @@ -58,6 +58,7 @@ typedef int d_close_t __P((dev_t, int, int, struct proc *)); typedef int d_ioctl_t __P((dev_t, int, caddr_t, int, struct proc *)); typedef int d_dump_t __P((dev_t)); typedef int d_psize_t __P((dev_t)); +typedef int d_size_t __P((dev_t)); typedef int d_read_t __P((dev_t, struct uio *, int)); typedef int d_write_t __P((dev_t, struct uio *, int)); @@ -87,6 +88,9 @@ struct bdevsw { d_dump_t *d_dump; d_psize_t *d_psize; int d_flags; + char *d_name; /* name of the driver e.g. audio */ + struct cdevsw *d_cdev; /* cross pointer to the cdev */ + int d_maj; /* the major number we were assigned */ }; #ifdef KERNEL @@ -105,6 +109,9 @@ struct cdevsw { d_select_t *d_select; d_mmap_t *d_mmap; d_strategy_t *d_strategy; + char *d_name; + struct bdevsw *d_bdev; /* cross pointer to the bdev */ + int d_maj; /* the major number we were assigned */ }; #ifdef KERNEL @@ -153,12 +160,10 @@ d_devtotty_t nodevtotty; d_select_t noselect; d_mmap_t nommap; -#ifdef JREMOD /* Bogus defines for compatibility. */ #define noioc noioctl #define nostrat nostrategy #define zerosize nopsize -#endif /*JREMOD*/ /* * XXX d_strategy seems to be unused for cdevs that aren't associated with * bdevs and called without checking for it being non-NULL for bdevs. @@ -197,10 +202,8 @@ d_rdwr_t rawwrite; l_read_t l_noread; l_write_t l_nowrite; -#ifdef JREMOD int bdevsw_add __P((dev_t *descrip,struct bdevsw *new,struct bdevsw *old)); int cdevsw_add __P((dev_t *descrip,struct cdevsw *new,struct cdevsw *old)); -#endif dev_t chrtoblk __P((dev_t dev)); int getmajorbyname __P((const char *name)); int isdisk __P((dev_t dev, int type)); diff --git a/sys/sys/tty.h b/sys/sys/tty.h index a0694e1..5023bcd 100644 --- a/sys/sys/tty.h +++ b/sys/sys/tty.h @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)tty.h 8.6 (Berkeley) 1/21/94 - * $Id: tty.h,v 1.30 1995/07/31 22:48:46 bde Exp $ + * $Id: tty.h,v 1.31 1995/07/31 22:50:08 bde Exp $ */ #ifndef _SYS_TTY_H_ @@ -261,18 +261,6 @@ int ttywflush __P((struct tty *tp)); struct tty *ttymalloc __P((void)); void ttyfree __P((struct tty *)); -/* From tty_tty.c. */ -/* - * XXX misplaced - these are just the cdev functions for a particular - * driver. - */ -int cttyioctl __P((dev_t dev, int cmd, caddr_t addr, int flag, - struct proc *p)); -int cttyopen __P((dev_t dev, int flag, int mode, struct proc *p)); -int cttyread __P((dev_t dev, struct uio *uio, int flag)); -int cttyselect __P((dev_t dev, int flag, struct proc *p)); -int cttywrite __P((dev_t dev, struct uio *uio, int flag)); - #endif /* KERNEL */ #endif /* !_SYS_TTY_H_ */ diff --git a/sys/vm/vm_swap.c b/sys/vm/vm_swap.c index c91b10e..db7b2ad 100644 --- a/sys/vm/vm_swap.c +++ b/sys/vm/vm_swap.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)vm_swap.c 8.5 (Berkeley) 2/17/94 - * $Id: vm_swap.c,v 1.27 1995/11/29 14:41:20 julian Exp $ + * $Id: vm_swap.c,v 1.28 1995/12/07 12:48:28 davidg Exp $ */ #include <sys/param.h> @@ -45,21 +45,26 @@ #include <sys/vnode.h> #include <sys/file.h> #include <sys/rlist.h> - +#include <sys/kernel.h> #include <vm/vm.h> #include <vm/vm_param.h> #include <vm/vm_extern.h> #include <miscfs/specfs/specdev.h> -#ifdef JREMOD -#include <sys/kernel.h> -#ifdef DEVFS -#include <sys/devfsext.h> -#endif /*DEVFS*/ + #define CDEV_MAJOR 4 #define BDEV_MAJOR 1 -#endif /*JREMOD */ + +struct bdevsw sw_bdevsw = + { noopen, noclose, swstrategy, noioc, /*1*/ + nodump, zerosize, NULL, "sw", NULL, -1 }; + +struct cdevsw sw_cdevsw = + { nullopen, nullclose, rawread, rawwrite, /*4*/ + noioc, nostop, noreset, nodevtotty,/* swap */ + noselect, nommap, swstrategy, "sw", NULL, -1 }; + /* * Indirect driver for multi-controller paging. @@ -264,45 +269,20 @@ swaponvp(p, vp, dev, nblks) return (0); } -#ifdef JREMOD -struct bdevsw sw_bdevsw = - { noopen, noclose, swstrategy, noioc, /*1*/ - nodump, zerosize, 0 }; - -struct cdevsw sw_cdevsw = - { nullopen, nullclose, rawread, rawwrite, /*4*/ - noioc, nostop, noreset, nodevtotty,/* swap */ - noselect, nommap, swstrategy }; - static sw_devsw_installed = 0; static void sw_drvinit(void *unused) { dev_t dev; - dev_t dev_chr; if( ! sw_devsw_installed ) { dev = makedev(CDEV_MAJOR,0); cdevsw_add(&dev,&sw_cdevsw,NULL); - dev_chr = dev; dev = makedev(BDEV_MAJOR,0); bdevsw_add(&dev,&sw_bdevsw,NULL); sw_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*/ - "/", "rsw", major(dev_chr), 0, DV_CHR, 0, 0, 0600); - x=devfs_add_devsw( - "/", "sw", major(dev), 0, DV_BLK, 0, 0, 0600); - } -#endif } } SYSINIT(swdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,sw_drvinit,NULL) -#endif /* JREMOD */ - |