Pass 3 of the great devsw changes

most devsw referenced functions are now static, as they are
in the same file as their devsw structure. I've also added DEVFS
support for nearly every device in the system, however
many of the devices have 'incorrect' names under DEVFS
because I couldn't quickly work out the correct naming conventions.
(but devfs won't be coming on line for a month or so anyhow so that doesn't
matter)

If you "OWN" a device which would normally have an entry in /dev
then search for the devfs_add_devsw() entries and munge to make them right..
check out similar devices to see what I might have done in them in you
can't see what's going on..
for a laugh compare conf.c conf.h defore and after... :)
I have not doen DEVFS entries for any DISKSLICE devices yet as that will be
a much more complicated job.. (pass 5 :)

pass 4 will be to make the devsw tables of type (cdevsw * )
rather than (cdevsw)
seems to work here..
complaints to the usual places.. :)
This commit is contained in:
Julian Elischer 1995-12-08 11:19:42 +00:00
parent 0b7a315970
commit 87f6c6625d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=12675
100 changed files with 3743 additions and 3998 deletions

View File

@ -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 *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(dev_t dev)
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 */

View File

@ -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

View File

@ -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 @@ sioopen(dev, flag, mode, p)
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 */

View File

@ -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 @@ sioopen(dev, flag, mode, p)
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 */

View File

@ -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 @@ dgbattach(dev)
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 @@ dgbattach(dev)
}
/* ARGSUSED */
int
static int
dgbopen(dev, flag, mode, p)
dev_t dev;
int flag;
@ -1011,7 +1053,7 @@ dgbopen(dev, flag, mode, p)
}
/*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 */

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 @@ void rcpoll()
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 @@ int rcopen(dev, flag, mode, p)
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 */

View File

@ -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 */

View File

@ -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 @@ siattach(id)
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 @@ siopen(dev, flag, mode, p)
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 @@ siwrite(dev, uio, flag)
}
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 */

View File

@ -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 @@ sioopen(dev, flag, mode, p)
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 @@ if (com->iptr - com->ibuf == 8)
}
}
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 @@ LoadSoftModem(int unit, int base_io, u_long size, u_char *ptr)
}
#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 */

View File

@ -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 @@ snpwrite(dev, uio, flag)
}
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 @@ snp_detach(snp)
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

View File

@ -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 */

View File

@ -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;

View File

@ -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

View File

@ -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:

View File

@ -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.

View File

@ -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 @@ dgbattach(dev)
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 @@ dgbattach(dev)
}
/* ARGSUSED */
int
static int
dgbopen(dev, flag, mode, p)
dev_t dev;
int flag;
@ -1011,7 +1053,7 @@ dgbopen(dev, flag, mode, p)
}
/*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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 */

View File

@ -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__ */

View File

@ -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__ */

File diff suppressed because it is too large Load Diff

View File

@ -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 */

View File

@ -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);

View File

@ -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 *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(dev_t dev)
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 */

View File

@ -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_ */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */
};
/*

View File

@ -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 */

View File

@ -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 */

View File

@ -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 @@ sioopen(dev, flag, mode, p)
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 */

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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);

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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*/

View File

@ -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 */

View File

@ -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 */

View File

@ -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

View File

@ -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 */

View File

@ -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

View File

@ -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 @@ void rcpoll()
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 @@ int rcopen(dev, flag, mode, p)
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 */

View File

@ -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 */

View File

@ -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 @@ siattach(id)
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 @@ siopen(dev, flag, mode, p)
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 @@ siwrite(dev, uio, flag)
}
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 */

View File

@ -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 @@ sioopen(dev, flag, mode, p)
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 @@ if (com->iptr - com->ibuf == 8)
}
}
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 @@ LoadSoftModem(int unit, int base_io, u_long size, u_char *ptr)
}
#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 */

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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;

View File

@ -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

View File

@ -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);
}
@ -1073,22 +1120,14 @@ static int wcd_eject (struct wcd *t)
#include <sys/sysent.h>
#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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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

View File

@ -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 */

View File

@ -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 @@ sioopen(dev, flag, mode, p)
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 @@ if (com->iptr - com->ibuf == 8)
}
}
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 @@ LoadSoftModem(int unit, int base_io, u_long size, u_char *ptr)
}
#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 */

View File

@ -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;

View File

@ -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)); \
\

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 @@ ptsread(dev, uio, flag)
* 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 @@ ptcwrite(dev, uio, flag)
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 */

View File

@ -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 @@ snpwrite(dev, uio, flag)
}
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 @@ snp_detach(snp)
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

View File

@ -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 */

View File

@ -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;

View File

@ -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:

View File

@ -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.

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 <sys/conf.h>
#include <sys/kernel.h>
#include <sys/devconf.h>
#ifdef DEVFS
#include <sys/devfsext.h>
#endif /*DEVFS*/
#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>
#ifdef DEVFS
#include <sys/devfsext.h>
#endif /*DEVFS*/
#define CDEV_MAJOR 17
#endif /*JREMOD*/
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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 @@ st_decide_mode(unit, first_read)
* 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 @@ st_strategy(struct buf *bp, struct scsi_link *sc_link)
* 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 @@ ststart(unit, flags)
* 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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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));

View File

@ -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);

View File

@ -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,

View File

@ -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));

View File

@ -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_ */

View File

@ -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 */