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:
parent
0b7a315970
commit
87f6c6625d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=12675
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
113
sys/dev/si/si.c
113
sys/dev/si/si.c
@ -30,7 +30,7 @@
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||
* NO EVENT SHALL THE AUTHORS BE LIABLE.
|
||||
*
|
||||
* $Id: si.c,v 1.21 1995/12/06 23:50:27 bde Exp $
|
||||
* $Id: si.c,v 1.22 1995/12/07 12:46:06 davidg Exp $
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
@ -53,6 +53,9 @@ static char si_copyright1[] = "@(#) (C) Specialix International, 1990,1992",
|
||||
#include <sys/syslog.h>
|
||||
#include <sys/malloc.h>
|
||||
#include <sys/devconf.h>
|
||||
#ifdef DEVFS
|
||||
#include <sys/devfsext.h>
|
||||
#endif /*DEVFS*/
|
||||
|
||||
#include <machine/clock.h>
|
||||
|
||||
@ -84,12 +87,8 @@ static char si_copyright1[] = "@(#) (C) Specialix International, 1990,1992",
|
||||
|
||||
enum si_mctl { GET, SET, BIS, BIC };
|
||||
|
||||
#ifdef JREMOD
|
||||
#ifdef DEVFS
|
||||
#include <sys/devfsext.h>
|
||||
#endif /*DEVFS*/
|
||||
#define CDEV_MAJOR 68
|
||||
#endif /*JREMOD*/
|
||||
static const char devchar[] = "ABCDEFGHIJK";
|
||||
static const char portchar[] = "0123456789abcdefghijklmnopqrstuvwxyz";
|
||||
|
||||
|
||||
static void si_command __P((struct si_port *, int, int));
|
||||
@ -110,6 +109,25 @@ extern int siprobe __P((struct isa_device *id));
|
||||
extern int siattach __P((struct isa_device *id));
|
||||
static void si_modem_state __P((struct si_port *pp, struct tty *tp, int hi_ip));
|
||||
|
||||
struct isa_driver sidriver =
|
||||
{ siprobe, siattach, "si" };
|
||||
|
||||
|
||||
static d_open_t siopen;
|
||||
static d_close_t siclose;
|
||||
static d_read_t siread;
|
||||
static d_write_t siwrite;
|
||||
static d_ioctl_t siioctl;
|
||||
static d_stop_t sistop;
|
||||
static d_ttycv_t sidevtotty;
|
||||
|
||||
#define CDEV_MAJOR 68
|
||||
struct cdevsw si_cdevsw =
|
||||
{ siopen, siclose, siread, siwrite, /*68*/
|
||||
siioctl, sistop, nxreset, sidevtotty,/* si */
|
||||
ttselect, nxmmap, NULL, "si", NULL, -1 };
|
||||
|
||||
|
||||
#ifdef SI_DEBUG /* use: ``options "SI_DEBUG"'' in your config file */
|
||||
/* XXX: should be varargs, I know.. but where's vprintf()? */
|
||||
static void si_dprintf __P((/* struct si_port *pp, int flags, char *str, int a1, int a2, int a3, int a4, int a5, int a6 */));
|
||||
@ -142,6 +160,16 @@ struct si_softc {
|
||||
int sc_eisa_iobase; /* EISA io port address */
|
||||
int sc_eisa_irqbits;
|
||||
struct kern_devconf sc_kdc;
|
||||
#ifdef DEVFS
|
||||
struct {
|
||||
void *ttyd;
|
||||
void *ttyl;
|
||||
void *ttyi;
|
||||
void *cuaa;
|
||||
void *cual;
|
||||
void *cuai;
|
||||
} devfs_token[32]; /* what is the max per card? */
|
||||
#endif
|
||||
};
|
||||
struct si_softc si_softc[NSI]; /* up to 4 elements */
|
||||
|
||||
@ -460,6 +488,7 @@ siattach(id)
|
||||
struct speedtab *spt;
|
||||
int nmodule, nport, x, y;
|
||||
int uart_type;
|
||||
char name[32];
|
||||
|
||||
DPRINT((0, DBG_AUTOBOOT, "si%d: siattach\n", id->id_unit));
|
||||
|
||||
@ -663,14 +692,39 @@ 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 */
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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.
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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__ */
|
||||
|
@ -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
@ -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 */
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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_ */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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*/
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
75
sys/isa/fd.c
75
sys/isa/fd.c
@ -1,4 +1,4 @@
|
||||
/*-
|
||||
/*
|
||||
* Copyright (c) 1990 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
*
|
||||
@ -43,7 +43,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
|
||||
* $Id: fd.c,v 1.71 1995/11/20 12:41:38 phk Exp $
|
||||
* $Id: fd.c,v 1.72 1995/11/28 09:41:00 julian Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
@ -87,11 +87,7 @@
|
||||
#include <sys/devfsext.h>
|
||||
#endif
|
||||
|
||||
#ifdef JREMOD
|
||||
#define CDEV_MAJOR 9
|
||||
#define BDEV_MAJOR 2
|
||||
static void fd_devsw_install();
|
||||
#endif /*JREMOD */
|
||||
|
||||
static int fd_goaway(struct kern_devconf *, int);
|
||||
static int fdc_goaway(struct kern_devconf *, int);
|
||||
static int fd_externalize(struct kern_devconf *, struct sysctl_req *);
|
||||
@ -250,6 +246,10 @@ struct fd_data {
|
||||
int track; /* where we think the head is */
|
||||
int options; /* user configurable options, see ioctl_fd.h */
|
||||
int dkunit; /* disk stats unit number */
|
||||
#ifdef DEVFS
|
||||
void *rfd_devfs_token;
|
||||
void *fd_devfs_token;
|
||||
#endif
|
||||
} fd_data[NFD];
|
||||
|
||||
/***********************************************************************\
|
||||
@ -342,6 +342,24 @@ struct isa_driver fdcdriver = {
|
||||
fdprobe, fdattach, "fdc",
|
||||
};
|
||||
|
||||
static d_open_t Fdopen; /* NOTE, not fdopen */
|
||||
static d_close_t fdclose;
|
||||
static d_ioctl_t fdioctl;
|
||||
static d_strategy_t fdstrategy;
|
||||
|
||||
#define CDEV_MAJOR 9
|
||||
#define BDEV_MAJOR 2
|
||||
extern struct cdevsw fd_cdevsw;
|
||||
struct bdevsw fd_bdevsw =
|
||||
{ Fdopen, fdclose, fdstrategy, fdioctl, /*2*/
|
||||
nxdump, zerosize, 0, "fd", &fd_cdevsw, -1 };
|
||||
|
||||
struct cdevsw fd_cdevsw =
|
||||
{ Fdopen, fdclose, rawread, rawwrite, /*9*/
|
||||
fdioctl, nostop, nullreset, nodevtotty,
|
||||
seltrue, nommap, fdstrategy, "fd",
|
||||
&fd_bdevsw, -1 };
|
||||
|
||||
struct isa_device *fdcdevs[NFDC];
|
||||
|
||||
/*
|
||||
@ -518,9 +536,6 @@ fdprobe(struct isa_device *dev)
|
||||
#ifndef DEV_LKM
|
||||
fdc_registerdev(dev);
|
||||
#endif
|
||||
#ifdef JREMOD
|
||||
fd_devsw_install();
|
||||
#endif /*JREMOD*/
|
||||
|
||||
/* First - lets reset the floppy controller */
|
||||
outb(dev->id_iobase+FDOUT, 0);
|
||||
@ -554,7 +569,6 @@ fdattach(struct isa_device *dev)
|
||||
int ic_type = 0;
|
||||
#ifdef DEVFS
|
||||
char name[64];
|
||||
void *key;
|
||||
#endif /* DEVFS */
|
||||
|
||||
fdc->fdcu = fdcu;
|
||||
@ -750,10 +764,12 @@ fdattach(struct isa_device *dev)
|
||||
}
|
||||
kdc_fd[fdu].kdc_state = DC_IDLE;
|
||||
#ifdef DEVFS
|
||||
key = dev_add("/disks/rfloppy",name,(caddr_t)Fdopen,fdu * 8,
|
||||
DV_CHR,0,0,0644);
|
||||
key = dev_add("/disks/floppy",name,(caddr_t)Fdopen,fdu * 8,
|
||||
DV_BLK,0,0,0644);
|
||||
fd->rfd_devfs_token = devfs_add_devsw(
|
||||
"/",name,&fd_cdevsw, fdu * 8,
|
||||
DV_CHR,0,0,0644);
|
||||
fd->fd_devfs_token = devfs_add_devsw(
|
||||
"/",name, &fd_bdevsw, fdu * 8,
|
||||
DV_BLK,0,0,0644);
|
||||
#endif /* DEVFS */
|
||||
if (dk_ndrive < DK_NDRIVE) {
|
||||
sprintf(dk_names[dk_ndrive], "fd%d", fdu);
|
||||
@ -1893,32 +1909,23 @@ fdioctl(dev, cmd, addr, flag, p)
|
||||
}
|
||||
|
||||
|
||||
#ifdef JREMOD
|
||||
struct bdevsw fd_bdevsw =
|
||||
{ Fdopen, fdclose, fdstrategy, fdioctl, /*2*/
|
||||
nxdump, zerosize, 0 };
|
||||
|
||||
struct cdevsw fd_cdevsw =
|
||||
{ Fdopen, fdclose, rawread, rawwrite, /*9*/
|
||||
fdioctl, nostop, nullreset, nodevtotty,/* Fd (!=fd) */
|
||||
seltrue, nommap, fdstrategy };
|
||||
|
||||
static fd_devsw_installed = 0;
|
||||
|
||||
static void fd_devsw_install()
|
||||
static void fd_drvinit(void *notused )
|
||||
{
|
||||
dev_t descript;
|
||||
dev_t dev;
|
||||
|
||||
if( ! fd_devsw_installed ) {
|
||||
descript = makedev(CDEV_MAJOR,0);
|
||||
cdevsw_add(&descript,&fd_cdevsw,NULL);
|
||||
#if defined(BDEV_MAJOR)
|
||||
descript = makedev(BDEV_MAJOR,0);
|
||||
bdevsw_add(&descript,&fd_bdevsw,NULL);
|
||||
#endif /*BDEV_MAJOR*/
|
||||
dev = makedev(CDEV_MAJOR, 0);
|
||||
cdevsw_add(&dev,&fd_cdevsw, NULL);
|
||||
dev = makedev(BDEV_MAJOR, 0);
|
||||
bdevsw_add(&dev,&fd_bdevsw, NULL);
|
||||
fd_devsw_installed = 1;
|
||||
}
|
||||
}
|
||||
#endif /* JREMOD */
|
||||
|
||||
SYSINIT(fddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,fd_drvinit,NULL)
|
||||
|
||||
#endif
|
||||
/*
|
||||
* Hello emacs, these are the
|
||||
|
@ -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 */
|
||||
|
106
sys/isa/sio.c
106
sys/isa/sio.c
@ -31,7 +31,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
|
||||
* $Id: sio.c,v 1.123 1995/11/29 15:00:07 bde Exp $
|
||||
* $Id: sio.c,v 1.124 1995/12/06 23:43:07 bde Exp $
|
||||
*/
|
||||
|
||||
#include "sio.h"
|
||||
@ -59,6 +59,9 @@
|
||||
#include <sys/malloc.h>
|
||||
#include <sys/syslog.h>
|
||||
#include <sys/devconf.h>
|
||||
#ifdef DEVFS
|
||||
#include <sys/devfsext.h>
|
||||
#endif /*DEVFS*/
|
||||
|
||||
#include <machine/clock.h>
|
||||
|
||||
@ -95,12 +98,6 @@
|
||||
|
||||
#define com_scr 7 /* scratch register for 16450-16550 (R/W) */
|
||||
|
||||
#ifdef JREMOD
|
||||
#ifdef DEVFS
|
||||
#include <sys/devfsext.h>
|
||||
#endif /*DEVFS*/
|
||||
#define CDEV_MAJOR 28
|
||||
#endif /*JREMOD*/
|
||||
|
||||
|
||||
#include "crd.h"
|
||||
@ -251,6 +248,14 @@ struct com_s {
|
||||
*/
|
||||
u_char obuf1[256];
|
||||
u_char obuf2[256];
|
||||
#ifdef DEVFS
|
||||
void *devfs_token_ttyd;
|
||||
void *devfs_token_ttyl;
|
||||
void *devfs_token_ttyi;
|
||||
void *devfs_token_cuaa;
|
||||
void *devfs_token_cual;
|
||||
void *devfs_token_cuai;
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
@ -285,6 +290,8 @@ static void disc_optim __P((struct tty *tp, struct termios *t,
|
||||
static int LoadSoftModem __P((int unit,int base_io, u_long size, u_char *ptr));
|
||||
#endif /* DSI_SOFT_MODEM */
|
||||
|
||||
static char driver_name[] = "sio";
|
||||
|
||||
/* table and macro for fast conversion from a unit number to its com struct */
|
||||
static struct com_s *p_com_addr[NSIO];
|
||||
#define com_addr(unit) (p_com_addr[unit])
|
||||
@ -292,9 +299,24 @@ static struct com_s *p_com_addr[NSIO];
|
||||
static struct timeval intr_timestamp;
|
||||
|
||||
struct isa_driver siodriver = {
|
||||
sioprobe, sioattach, "sio"
|
||||
sioprobe, sioattach, driver_name
|
||||
};
|
||||
|
||||
static d_open_t sioopen;
|
||||
static d_close_t sioclose;
|
||||
static d_read_t sioread;
|
||||
static d_write_t siowrite;
|
||||
static d_ioctl_t sioioctl;
|
||||
static d_stop_t siostop;
|
||||
static d_ttycv_t siodevtotty;
|
||||
|
||||
#define CDEV_MAJOR 28
|
||||
struct cdevsw sio_cdevsw =
|
||||
{ sioopen, sioclose, sioread, siowrite, /*28*/
|
||||
sioioctl, siostop, nxreset, siodevtotty,/* sio */
|
||||
ttselect, nommap, NULL, driver_name, NULL, -1 };
|
||||
|
||||
|
||||
static int comconsole = -1;
|
||||
static speed_t comdefaultrate = TTYDEF_SPEED;
|
||||
static u_int com_events; /* input chars + weighted output completions */
|
||||
@ -338,9 +360,10 @@ static struct speedtab comspeedtab[] = {
|
||||
{ -1, -1 }
|
||||
};
|
||||
|
||||
static char chardev[] = "0123456789abcdefghijklmnopqrstuvwxyz";
|
||||
static struct kern_devconf kdc_sio[NSIO] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"sio", 0, { MDDT_ISA, 0, "tty" },
|
||||
driver_name, 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
@ -359,7 +382,7 @@ static int sioinit(struct pccard_dev *, int); /* init device */
|
||||
|
||||
static struct pccard_drv sio_info =
|
||||
{
|
||||
"sio",
|
||||
driver_name,
|
||||
card_intr,
|
||||
siounload,
|
||||
siosuspend,
|
||||
@ -696,6 +719,7 @@ sioattach(isdp)
|
||||
Port_t iobase;
|
||||
int s;
|
||||
int unit;
|
||||
char name[32];
|
||||
|
||||
isdp->id_ri_flags |= RI_FAST;
|
||||
iobase = isdp->id_iobase;
|
||||
@ -880,10 +904,37 @@ determined_type: ;
|
||||
com_addr(unit) = com;
|
||||
splx(s);
|
||||
|
||||
#ifdef DEVFS
|
||||
/* path name devsw minor type uid gid perm*/
|
||||
sprintf(name,"ttyd%c",chardev[unit]);
|
||||
com->devfs_token_ttyd = devfs_add_devsw(
|
||||
"/", name, &sio_cdevsw, unit,
|
||||
DV_CHR, 0, 0, 0600);
|
||||
sprintf(name,"ttyid%c",chardev[unit]);
|
||||
com->devfs_token_ttyi = devfs_add_devsw(
|
||||
"/", name, &sio_cdevsw, unit+32,
|
||||
DV_CHR, 0, 0, 0600);
|
||||
sprintf(name,"ttyld%c",chardev[unit]);
|
||||
com->devfs_token_ttyl = devfs_add_devsw(
|
||||
"/", name, &sio_cdevsw, unit+64,
|
||||
DV_CHR, 0, 0, 0600);
|
||||
sprintf(name,"cuaa%c",chardev[unit]);
|
||||
com->devfs_token_cuaa = devfs_add_devsw(
|
||||
"/", name, &sio_cdevsw, unit+128,
|
||||
DV_CHR, 0, 0, 0600);
|
||||
sprintf(name,"cuaia%c",chardev[unit]);
|
||||
com->devfs_token_cuai = devfs_add_devsw(
|
||||
"/", name, &sio_cdevsw, unit+160,
|
||||
DV_CHR, 0, 0, 0600);
|
||||
sprintf(name,"cuala%c",chardev[unit]);
|
||||
com->devfs_token_cual = devfs_add_devsw(
|
||||
"/", name, &sio_cdevsw, unit+192,
|
||||
DV_CHR, 0, 0, 0600);
|
||||
#endif
|
||||
return (1);
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
sioopen(dev, flag, mode, p)
|
||||
dev_t dev;
|
||||
int flag;
|
||||
@ -1055,7 +1106,7 @@ 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 */
|
||||
|
@ -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;
|
||||
|
@ -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)); \
|
||||
\
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
118
sys/scsi/cd.c
118
sys/scsi/cd.c
@ -14,7 +14,7 @@
|
||||
*
|
||||
* Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992
|
||||
*
|
||||
* $Id: cd.c,v 1.46 1995/11/29 10:48:55 julian Exp $
|
||||
* $Id: cd.c,v 1.47 1995/11/29 14:40:51 julian Exp $
|
||||
*/
|
||||
|
||||
#define SPLCD splbio
|
||||
@ -31,24 +31,20 @@
|
||||
#include <sys/uio.h>
|
||||
#include <sys/malloc.h>
|
||||
#include <sys/cdio.h>
|
||||
|
||||
#include <sys/errno.h>
|
||||
#include <sys/disklabel.h>
|
||||
#include <scsi/scsi_all.h>
|
||||
#include <scsi/scsi_cd.h>
|
||||
#include <scsi/scsi_disk.h> /* rw_big and start_stop come from there */
|
||||
#include <scsi/scsiconf.h>
|
||||
#include <sys/devconf.h>
|
||||
#include <sys/dkstat.h>
|
||||
|
||||
#ifdef JREMOD
|
||||
#include <sys/kernel.h>
|
||||
#ifdef DEVFS
|
||||
#include <sys/devfsext.h>
|
||||
#endif /*DEVFS*/
|
||||
#define CDEV_MAJOR 15
|
||||
#define BDEV_MAJOR 6
|
||||
#endif /*JREMOD */
|
||||
|
||||
#include <scsi/scsi_all.h>
|
||||
#include <scsi/scsi_cd.h>
|
||||
#include <scsi/scsi_disk.h> /* rw_big and start_stop come from there */
|
||||
#include <scsi/scsiconf.h>
|
||||
|
||||
|
||||
/* static function prototypes */
|
||||
static errval cd_get_parms __P((int, int));
|
||||
@ -65,6 +61,26 @@ static errval cd_play_tracks __P((u_int32, u_int32, u_int32, u_int32, u_int32));
|
||||
static errval cd_read_subchannel __P((u_int32, u_int32, u_int32, int, struct cd_sub_channel_info *, u_int32));
|
||||
static errval cd_getdisklabel __P((u_int8));
|
||||
|
||||
static d_open_t cdopen;
|
||||
static d_close_t cdclose;
|
||||
static d_ioctl_t cdioctl;
|
||||
static d_psize_t cdsize;
|
||||
static d_strategy_t cdstrategy;
|
||||
|
||||
#define CDEV_MAJOR 15
|
||||
#define BDEV_MAJOR 6
|
||||
extern struct cdevsw cd_cdevsw;
|
||||
struct bdevsw cd_bdevsw =
|
||||
{ cdopen, cdclose, cdstrategy, cdioctl, /*6*/
|
||||
nxdump, cdsize, 0, "cd", &cd_cdevsw, -1 };
|
||||
|
||||
struct cdevsw cd_cdevsw =
|
||||
{ cdopen, cdclose, rawread, nowrite, /*15*/
|
||||
cdioctl, nostop, nullreset, nodevtotty,/* cd */
|
||||
seltrue, nommap, cdstrategy, "cd",
|
||||
&cd_bdevsw, -1 };
|
||||
|
||||
|
||||
int32 cdstrats, cdqueues;
|
||||
|
||||
#define CDUNIT(DEV) ((minor(DEV)&0xF8) >> 3) /* 5 bit unit */
|
||||
@ -94,6 +110,12 @@ struct scsi_data {
|
||||
u_int32 xfer_block_wait;
|
||||
struct buf_queue_head buf_queue;
|
||||
int dkunit;
|
||||
#ifdef DEVFS
|
||||
void *ra_devfs_token;
|
||||
void *rc_devfs_token;
|
||||
void *a_devfs_token;
|
||||
void *c_devfs_token;
|
||||
#endif
|
||||
};
|
||||
|
||||
static int cdunit(dev_t dev) { return CDUNIT(dev); }
|
||||
@ -111,18 +133,18 @@ SCSI_DEVICE_ENTRIES(cd)
|
||||
|
||||
static struct scsi_device cd_switch =
|
||||
{
|
||||
NULL, /* use default error handler */
|
||||
cdstart, /* we have a queue, which is started by this */
|
||||
NULL, /* we do not have an async handler */
|
||||
NULL, /* use default 'done' routine */
|
||||
"cd", /* we are to be refered to by this name */
|
||||
0, /* no device specific flags */
|
||||
NULL, /* use default error handler */
|
||||
cdstart, /* we have a queue, which is started by this */
|
||||
NULL, /* we do not have an async handler */
|
||||
NULL, /* use default 'done' routine */
|
||||
"cd", /* we are to be refered to by this name */
|
||||
0, /* no device specific flags */
|
||||
{0, 0},
|
||||
0, /* Link flags */
|
||||
0, /* Link flags */
|
||||
cdattach,
|
||||
"CD-ROM",
|
||||
cdopen,
|
||||
sizeof(struct scsi_data),
|
||||
sizeof(struct scsi_data),
|
||||
T_READONLY,
|
||||
cdunit,
|
||||
cdsetunit,
|
||||
@ -183,6 +205,7 @@ cdattach(struct scsi_link *sc_link)
|
||||
u_int32 unit;
|
||||
struct cd_parms *dp;
|
||||
struct scsi_data *cd = sc_link->sd;
|
||||
char name[32];
|
||||
|
||||
unit = sc_link->dev_unit;
|
||||
dp = &(cd->params);
|
||||
@ -212,6 +235,29 @@ cdattach(struct scsi_link *sc_link)
|
||||
|
||||
cd->flags |= CDINIT;
|
||||
cd_registerdev(unit);
|
||||
#ifdef DEVFS
|
||||
#define CD_UID 0
|
||||
#define CD_GID 13
|
||||
sprintf(name, "rcd%da",unit);
|
||||
cd->ra_devfs_token = devfs_add_devsw(
|
||||
"/", name, &cd_cdevsw, unit * 8,
|
||||
DV_CHR, CD_UID, CD_GID, 0660);
|
||||
|
||||
sprintf(name, "rcd%dc",unit);
|
||||
cd->rc_devfs_token = devfs_add_devsw(
|
||||
"/", name, &cd_cdevsw, (unit * 8 ) + RAW_PART,
|
||||
DV_CHR, CD_UID, CD_GID, 0600);
|
||||
|
||||
sprintf(name, "cd%da",unit);
|
||||
cd->a_devfs_token = devfs_add_devsw(
|
||||
"/", name, &cd_bdevsw, (unit * 8 ) + 0,
|
||||
DV_BLK, CD_UID, CD_GID, 0660);
|
||||
|
||||
sprintf(name, "cd%dc",unit);
|
||||
cd->c_devfs_token = devfs_add_devsw(
|
||||
"/", name, &cd_bdevsw, (unit * 8 ) + RAW_PART,
|
||||
DV_BLK, CD_UID, CD_GID, 0600);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1306,47 +1352,21 @@ cdsize(dev_t dev)
|
||||
return (-1);
|
||||
}
|
||||
|
||||
#ifdef JREMOD
|
||||
struct bdevsw cd_bdevsw =
|
||||
{ cdopen, cdclose, cdstrategy, cdioctl, /*6*/
|
||||
nxdump, cdsize, 0 };
|
||||
#endif /*JREMOD*/
|
||||
|
||||
#ifdef JREMOD
|
||||
struct cdevsw cd_cdevsw =
|
||||
{ cdopen, cdclose, rawread, nowrite, /*15*/
|
||||
cdioctl, nostop, nullreset, nodevtotty,/* cd */
|
||||
seltrue, nommap, cdstrategy };
|
||||
|
||||
static cd_devsw_installed = 0;
|
||||
|
||||
static void cd_drvinit(void *unused)
|
||||
{
|
||||
dev_t dev;
|
||||
dev_t dev_chr;
|
||||
|
||||
if( ! cd_devsw_installed ) {
|
||||
dev = makedev(CDEV_MAJOR,0);
|
||||
cdevsw_add(&dev,&cd_cdevsw,NULL);
|
||||
dev_chr = dev;
|
||||
#if defined(BDEV_MAJOR)
|
||||
dev = makedev(BDEV_MAJOR,0);
|
||||
bdevsw_add(&dev,&cd_bdevsw,NULL);
|
||||
#endif /*BDEV_MAJOR*/
|
||||
dev = makedev(CDEV_MAJOR, 0);
|
||||
cdevsw_add(&dev,&cd_cdevsw, NULL);
|
||||
dev = makedev(BDEV_MAJOR, 0);
|
||||
bdevsw_add(&dev,&cd_bdevsw, NULL);
|
||||
cd_devsw_installed = 1;
|
||||
#ifdef DEVFS
|
||||
{
|
||||
int x;
|
||||
/* default for a simple device with no probe routine (usually delete this) */
|
||||
x=devfs_add_devsw(
|
||||
/* path name devsw minor type uid gid perm*/
|
||||
"/", "cd", major(dev_chr), 0, DV_CHR, 0, 0, 0600);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
SYSINIT(cddev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cd_drvinit,NULL)
|
||||
|
||||
#endif /* JREMOD */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
209
sys/scsi/st.c
209
sys/scsi/st.c
@ -12,7 +12,7 @@
|
||||
* on the understanding that TFS is not responsible for the correct
|
||||
* functioning of this software in any circumstances.
|
||||
*
|
||||
* $Id: st.c,v 1.47 1995/11/30 07:43:47 pst Exp $
|
||||
* $Id: st.c,v 1.48 1995/12/06 23:44:23 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -39,21 +39,17 @@
|
||||
#include <sys/buf.h>
|
||||
#include <sys/proc.h>
|
||||
#include <sys/mtio.h>
|
||||
#include <sys/conf.h>
|
||||
#include <sys/kernel.h>
|
||||
#ifdef DEVFS
|
||||
#include <sys/devfsext.h>
|
||||
#endif /*DEVFS*/
|
||||
|
||||
#include <scsi/scsi_all.h>
|
||||
#include <scsi/scsi_tape.h>
|
||||
#include <scsi/scsiconf.h>
|
||||
#include <sys/devconf.h>
|
||||
|
||||
#ifdef JREMOD
|
||||
#include <sys/conf.h>
|
||||
#include <sys/kernel.h>
|
||||
#ifdef DEVFS
|
||||
#include <sys/devfsext.h>
|
||||
#endif /*DEVFS*/
|
||||
#define CDEV_MAJOR 14
|
||||
#define BDEV_MAJOR 5
|
||||
#endif /*JREMOD */
|
||||
|
||||
|
||||
/* Defines for device specific stuff */
|
||||
@ -229,6 +225,30 @@ struct scsi_data {
|
||||
struct buf_queue_head buf_queue;
|
||||
struct scsi_xfer scsi_xfer; /* scsi xfer struct for this drive */
|
||||
u_int32 xfer_block_wait; /* is a process waiting? */
|
||||
#ifdef DEVFS
|
||||
struct {
|
||||
void *rst;
|
||||
void *nrst;
|
||||
void *enrst;
|
||||
/* end of aliases */
|
||||
void *rst_0;
|
||||
void *nrst_0;
|
||||
void *enrst_0;
|
||||
void *ctl_0;
|
||||
void *rst_1;
|
||||
void *nrst_1;
|
||||
void *enrst_1;
|
||||
void *ctl_1;
|
||||
void *rst_2;
|
||||
void *nrst_2;
|
||||
void *enrst_2;
|
||||
void *ctl_2;
|
||||
void *rst_3;
|
||||
void *nrst_3;
|
||||
void *enrst_3;
|
||||
void *ctl_3;
|
||||
} devfs_token;
|
||||
#endif
|
||||
};
|
||||
|
||||
static int stunit(dev_t dev) { return STUNIT(dev); }
|
||||
@ -242,6 +262,22 @@ static errval st_close(dev_t dev, int flag, int fmt, struct proc *p,
|
||||
struct scsi_link *sc_link);
|
||||
static void st_strategy(struct buf *bp, struct scsi_link *sc_link);
|
||||
|
||||
d_open_t stopen;
|
||||
d_close_t stclose;
|
||||
d_ioctl_t stioctl;
|
||||
d_strategy_t ststrategy;
|
||||
|
||||
#define CDEV_MAJOR 14
|
||||
#define BDEV_MAJOR 5
|
||||
struct bdevsw st_bdevsw =
|
||||
{ stopen, stclose, ststrategy, stioctl, /*5*/
|
||||
nxdump, zerosize, 0 };
|
||||
|
||||
struct cdevsw st_cdevsw =
|
||||
{ stopen, stclose, rawread, rawwrite, /*14*/
|
||||
stioctl, nostop, nullreset, nodevtotty,/* st */
|
||||
seltrue, nommap, ststrategy };
|
||||
|
||||
SCSI_DEVICE_ENTRIES(st)
|
||||
|
||||
static struct scsi_device st_switch =
|
||||
@ -325,10 +361,11 @@ st_registerdev(int unit)
|
||||
* a device suitable for this driver
|
||||
*/
|
||||
|
||||
errval
|
||||
static errval
|
||||
stattach(struct scsi_link *sc_link)
|
||||
{
|
||||
u_int32 unit;
|
||||
char name[32];
|
||||
|
||||
struct scsi_data *st = sc_link->sd;
|
||||
|
||||
@ -371,7 +408,81 @@ stattach(struct scsi_link *sc_link)
|
||||
*/
|
||||
st->flags |= ST_INITIALIZED;
|
||||
st_registerdev(unit);
|
||||
|
||||
#ifdef DEVFS
|
||||
#define ST_GID 13
|
||||
#define ST_UID 0
|
||||
sprintf(name,"rst%d.0",unit);
|
||||
st->devfs_token.rst_0 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 0,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"nrst%d.0",unit);
|
||||
st->devfs_token.nrst_0 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 1,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"enrst%d.0",unit);
|
||||
st->devfs_token.enrst_0 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 2,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"st%dctl.0",unit);
|
||||
st->devfs_token.ctl_0 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 3,
|
||||
DV_CHR, ST_UID, ST_GID, 0600 );
|
||||
sprintf(name,"rst%d.1",unit);
|
||||
st->devfs_token.rst_1 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 4,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"nrst%d.1",unit);
|
||||
st->devfs_token.nrst_1 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 5,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"enrst%d.1",unit);
|
||||
st->devfs_token.enrst_1 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 6,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"st%dctl.1",unit);
|
||||
st->devfs_token.ctl_1 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 7,
|
||||
DV_CHR, ST_UID, ST_GID, 0600 );
|
||||
sprintf(name,"rst%d.2",unit);
|
||||
st->devfs_token.rst_2 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 8,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"nrst%d.2",unit);
|
||||
st->devfs_token.nrst_2 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 9,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"enrst%d.2",unit);
|
||||
st->devfs_token.enrst_2 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 10,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"st%dctl.2",unit);
|
||||
st->devfs_token.ctl_2 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 11,
|
||||
DV_CHR, ST_UID, ST_GID, 0600 );
|
||||
sprintf(name,"rst%d.3",unit);
|
||||
st->devfs_token.rst_3 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 12,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"nrst%d.3",unit);
|
||||
st->devfs_token.nrst_3 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 13,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"enrst%d.3",unit);
|
||||
st->devfs_token.enrst_3 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 14,
|
||||
DV_CHR, ST_UID, ST_GID, 0660 );
|
||||
sprintf(name,"st%dctl.3",unit);
|
||||
st->devfs_token.ctl_3 = devfs_add_devsw( "/tape", name,
|
||||
&st_cdevsw, (unit << 4 ) + 15,
|
||||
DV_CHR, ST_UID, ST_GID, 0600 );
|
||||
/** add links **/
|
||||
sprintf(name,"rst%d",unit);
|
||||
st->devfs_token.rst = dev_link( "/", name, st->devfs_token.rst_0);
|
||||
sprintf(name,"nrst%d",unit);
|
||||
st->devfs_token.nrst = dev_link( "/", name, st->devfs_token.nrst_0);
|
||||
sprintf(name,"enrst%d",unit);
|
||||
st->devfs_token.enrst = dev_link( "/", name, st->devfs_token.enrst_0);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -380,7 +491,7 @@ stattach(struct scsi_link *sc_link)
|
||||
* Use the inquiry routine in 'scsi_base' to get drive info so we can
|
||||
* Further tailor our behaviour.
|
||||
*/
|
||||
void
|
||||
static void
|
||||
st_identify_drive(unit)
|
||||
u_int32 unit;
|
||||
{
|
||||
@ -458,7 +569,7 @@ st_identify_drive(unit)
|
||||
* this will remove any setting made by the system operator or previous
|
||||
* operations.
|
||||
*/
|
||||
void
|
||||
static void
|
||||
st_loadquirks(sc_link)
|
||||
struct scsi_link *sc_link;
|
||||
{
|
||||
@ -513,7 +624,7 @@ st_loadquirks(sc_link)
|
||||
/*
|
||||
* open the device.
|
||||
*/
|
||||
errval
|
||||
static errval
|
||||
st_open(dev_t dev, int flags, int fmt, struct proc *p,
|
||||
struct scsi_link *sc_link)
|
||||
{
|
||||
@ -599,7 +710,7 @@ struct scsi_link *sc_link)
|
||||
* close the device.. only called if we are the LAST
|
||||
* occurence of an open device
|
||||
*/
|
||||
errval
|
||||
static errval
|
||||
st_close(dev_t dev, int flag, int fmt, struct proc *p,
|
||||
struct scsi_link *sc_link)
|
||||
{
|
||||
@ -636,7 +747,7 @@ st_close(dev_t dev, int flag, int fmt, struct proc *p,
|
||||
* Copy in all the default parameters from the selected device mode.
|
||||
* and try guess any that seem to be defaulted.
|
||||
*/
|
||||
errval
|
||||
static errval
|
||||
st_mount_tape(dev, flags)
|
||||
dev_t dev;
|
||||
u_int32 flags;
|
||||
@ -766,7 +877,7 @@ st_unmount(int unit, boolean eject)
|
||||
* initial operation, make a decision as to how we should be set
|
||||
* to run (regarding blocking and EOD marks)
|
||||
*/
|
||||
errval
|
||||
static errval
|
||||
st_decide_mode(unit, first_read)
|
||||
u_int32 unit;
|
||||
boolean first_read;
|
||||
@ -904,7 +1015,7 @@ 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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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));
|
||||
|
@ -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_ */
|
||||
|
@ -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 */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user