#include <sys/param.h>
#include <sys/systm.h>
#include <sys/buf.h>
#include <sys/ioctl.h>
#include <sys/tty.h>
#include <sys/conf.h>
extern int nulldev();
struct bdevsw bdevsw[] =
{
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
NO_BDEVICE,
};
int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]);
extern struct tty *km_tty[];
extern int consopen(), consclose(), consread(), conswrite(), consioctl(),
consselect(), cons_getc(), cons_putc();
extern int kmopen(),kmclose(),kmread(),kmwrite(),kmioctl(),
kmgetc(), kmputc(dev_t dev, char c);
extern int cttyopen(), cttyread(), cttywrite(), cttyioctl(), cttyselect();
extern int mmread(),mmwrite();
#define mmselect seltrue
#if 1
#define NPTY 32
#else
#include <pty.h>
#endif
#if NPTY > 0
extern struct tty *pt_tty[];
extern int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(),ptsputc();
extern int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(),
ptyioctl();
#else
#define ptsopen eno_opcl
#define ptsclose eno_opcl
#define ptsread eno_rdwrt
#define ptswrite eno_rdwrt
#define ptsstop nulldev
#define ptsputc nulldev
#define ptcopen eno_opcl
#define ptcclose eno_opcl
#define ptcread eno_rdwrt
#define ptcwrite eno_rdwrt
#define ptcselect eno_select
#define ptyioctl eno_ioctl
#endif
extern int logopen(),logclose(),logread(),logioctl(),logselect();
extern int seltrue();
struct cdevsw cdevsw[] =
{
{
consopen, consclose, consread, conswrite,
consioctl, nulldev, nulldev, 0, consselect,
eno_mmap, eno_strat, cons_getc, cons_putc, D_TTY
},
NO_CDEVICE,
{
cttyopen, nulldev, cttyread, cttywrite,
cttyioctl, nulldev, nulldev, 0, cttyselect,
eno_mmap, eno_strat, eno_getc, eno_putc, D_TTY
},
{
nulldev, nulldev, mmread, mmwrite,
eno_ioctl, nulldev, nulldev, 0, mmselect,
eno_mmap, eno_strat, eno_getc, eno_putc, 0
},
{
ptsopen, ptsclose, ptsread, ptswrite,
ptyioctl, ptsstop, nulldev, pt_tty, ttselect,
eno_mmap, eno_strat, eno_getc, eno_putc, D_TTY
},
{
ptcopen, ptcclose, ptcread, ptcwrite,
ptyioctl, nulldev, nulldev, 0, ptcselect,
eno_mmap, eno_strat, eno_getc, eno_putc, D_TTY
},
{
logopen, logclose, logread, eno_rdwrt,
logioctl, eno_stop, nulldev, 0, logselect,
eno_mmap, eno_strat, eno_getc, eno_putc, 0
},
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
{
kmopen, kmclose, kmread, kmwrite,
kmioctl, nulldev, nulldev, km_tty, ttselect,
eno_mmap, eno_strat, kmgetc, kmputc, 0
},
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
NO_CDEVICE,
};
int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);
#include <sys/vnode.h>
int
isdisk(dev, type)
dev_t dev;
int type;
{
switch (major(dev)) {
case 1:
case 6:
case 3:
if (type == VBLK)
return(1);
break;
case 14:
case 41:
if (type == VCHR)
return(1);
break;
}
return(0);
}
static int chrtoblktab[] = {
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
6, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, NODEV,
NODEV, 1,
NODEV, NODEV,
NODEV,
};
dev_t
chrtoblk(dev)
dev_t dev;
{
int blkmaj;
if (major(dev) >= nchrdev)
return(NODEV);
blkmaj = chrtoblktab[major(dev)];
if (blkmaj == NODEV)
return(NODEV);
return(makedev(blkmaj, minor(dev)));
}
int iskmemdev(dev)
dev_t dev;
{
return (major(dev) == 3 && minor(dev) < 2);
}