summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>1995-11-29 10:49:16 +0000
committerjulian <julian@FreeBSD.org>1995-11-29 10:49:16 +0000
commitf2f63c6ece7d25485976323df6d684743fe14bb6 (patch)
tree5ed2d747156a38098db0e540f833114bc9dd1b51 /sys/kern
parentbe48321f04abe146ffbc5091fe940b107f46c175 (diff)
downloadFreeBSD-src-f2f63c6ece7d25485976323df6d684743fe14bb6.zip
FreeBSD-src-f2f63c6ece7d25485976323df6d684743fe14bb6.tar.gz
OK, that's it..
That's EVERY SINGLE driver that has an entry in conf.c.. my next trick will be to define cdevsw[] and bdevsw[] as empty arrays and remove all those DAMNED defines as well.. Each of these drivers has a SYSINIT linker set entry that comes in very early.. and asks teh driver to add it's own entry to the two devsw[] tables. some slight reworking of the commits from yesterday (added the SYSINIT stuff and some usually wrong but token DEVFS entries to all these devices. BTW does anyone know where the 'ata' entries in conf.c actually reside? seems we don't actually have a 'ataopen() etc... If you want to add a new device in conf.c please make sure I know so I can keep it up to date too.. as before, this is all dependent on #if defined(JREMOD) (and #ifdef DEVFS in parts)
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_descrip.c47
-rw-r--r--sys/kern/kern_lkm.c42
-rw-r--r--sys/kern/subr_log.c44
-rw-r--r--sys/kern/tty_cons.c54
-rw-r--r--sys/kern/tty_pty.c64
-rw-r--r--sys/kern/tty_snoop.c39
-rw-r--r--sys/kern/tty_tty.c43
7 files changed, 310 insertions, 23 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 4912d73..f1f5557 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)kern_descrip.c 8.6 (Berkeley) 4/19/94
- * $Id: kern_descrip.c,v 1.13 1995/11/12 06:42:52 bde Exp $
+ * $Id: kern_descrip.c,v 1.14 1995/11/14 08:58:35 phk Exp $
*/
#include <sys/param.h>
@@ -57,6 +57,14 @@
#include <sys/unistd.h>
#include <sys/resourcevar.h>
+#ifdef JREMOD
+#include <sys/conf.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
+#define CDEV_MAJOR 22
+#endif /*JREMOD*/
+
int finishdup(struct filedesc *fdp, int old, int new, int *retval);
/*
* Descriptor management.
@@ -1013,6 +1021,43 @@ sysctl_kern_file SYSCTL_HANDLER_ARGS
}
return (0);
}
+#ifdef JREMOD
+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 fildesc_drvinit(void *unused)
+{
+ dev_t dev;
+
+ 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);
+ }
+ }
+#endif
+}
+
+SYSINIT(fildescdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,
+ fildesc_drvinit,NULL)
+
+#endif /* JREMOD */
+
SYSCTL_PROC(_kern, KERN_FILE, file, CTLTYPE_OPAQUE|CTLFLAG_RD,
0, 0, sysctl_kern_file, "");
diff --git a/sys/kern/kern_lkm.c b/sys/kern/kern_lkm.c
index ad78d28..902ed4c 100644
--- a/sys/kern/kern_lkm.c
+++ b/sys/kern/kern_lkm.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kern_lkm.c,v 1.18 1995/11/09 09:43:32 bde Exp $
+ * $Id: kern_lkm.c,v 1.19 1995/11/20 12:06:21 phk Exp $
*/
/*
@@ -61,6 +61,13 @@
#include <vm/vm_param.h>
#include <vm/vm_kern.h>
+#ifdef JREMOD
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
+#define CDEV_MAJOR 32
+#endif /*JREMOD */
+
#define PAGESIZE 1024 /* kmem_alloc() allocation quantum */
#define LKM_ALLOC 0x01
@@ -993,3 +1000,36 @@ 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 lkm_drvinit(void *unused)
+{
+ dev_t dev;
+
+ if( ! lkm_devsw_installed ) {
+ dev = makedev(CDEV_MAJOR,0);
+ cdevsw_add(&dev,&lkm_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);
+ }
+ }
+#endif
+}
+
+SYSINIT(lkmdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,lkm_drvinit,NULL)
+
+#endif /* JREMOD */
+
diff --git a/sys/kern/subr_log.c b/sys/kern/subr_log.c
index a2e2d47..0b9d5da 100644
--- a/sys/kern/subr_log.c
+++ b/sys/kern/subr_log.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)subr_log.c 8.1 (Berkeley) 6/10/93
- * $Id: subr_log.c,v 1.9 1995/08/07 07:58:17 davidg Exp $
+ * $Id: subr_log.c,v 1.10 1995/10/29 15:30:59 phk Exp $
*/
/*
@@ -47,6 +47,15 @@
#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
@@ -223,3 +232,36 @@ 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_drvinit(void *unused)
+{
+ dev_t dev;
+
+ if( ! log_devsw_installed ) {
+ dev = makedev(CDEV_MAJOR,0);
+ 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);
+ }
+ }
+#endif
+}
+
+SYSINIT(logdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,log_drvinit,NULL)
+
+#endif /* JREMOD */
+
diff --git a/sys/kern/tty_cons.c b/sys/kern/tty_cons.c
index 0b509594..9b8735d 100644
--- a/sys/kern/tty_cons.c
+++ b/sys/kern/tty_cons.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* from: @(#)cons.c 7.2 (Berkeley) 5/9/91
- * $Id: cons.c,v 1.33 1995/09/10 18:57:25 bde Exp $
+ * $Id: cons.c,v 1.34 1995/09/10 21:34:49 bde Exp $
*/
#include <sys/param.h>
@@ -48,6 +48,14 @@
#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"
@@ -79,23 +87,6 @@ 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
-#include <sys/kernel.h>
-#include <sys/devfsext.h>
-
-static void cndev_init __P((void *));
-SYSINIT(cndev, SI_SUB_DEVFS, SI_ORDER_ANY, cndev_init, NULL)
-
-static void
-cndev_init(dummy)
- void *dummy;
-{
- void * x;
-/* path name devsw minor type uid gid perm*/
- x=dev_add("/misc", "console", cnopen, 0, DV_CHR, 0, 0, 0640);
-}
-#endif /* DEVFS */
-
void
cninit()
{
@@ -322,3 +313,30 @@ pg(const char *p, ...) {
}
+#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)
+{
+ void * x;
+ dev_t dev;
+
+ if( ! cn_devsw_installed ) {
+ dev = makedev(CDEV_MAJOR,0);
+ 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);
+#endif
+}
+
+SYSINIT(cndev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cn_drvinit,NULL)
+
+#endif /* JREMOD */
+
diff --git a/sys/kern/tty_pty.c b/sys/kern/tty_pty.c
index 2baaea2..ad41417 100644
--- a/sys/kern/tty_pty.c
+++ b/sys/kern/tty_pty.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tty_pty.c 8.2 (Berkeley) 9/23/93
- * $Id: tty_pty.c,v 1.23 1995/10/30 17:16:55 bde Exp $
+ * $Id: tty_pty.c,v 1.24 1995/11/04 13:24:55 bde Exp $
*/
/*
@@ -52,6 +52,10 @@
#include <sys/vnode.h>
#include <sys/signalvar.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
+
void ptyattach __P((int n));
void ptsstart __P((struct tty *tp));
void ptcwakeup __P((struct tty *tp, int flag));
@@ -733,3 +737,61 @@ 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;
+
+static void ptc_drvinit(void *unused)
+{
+#ifdef DEVFS
+ int i
+ char jnames[] = "pqrstu"
+ char knames[] = "0123456789abcdef"
+ char devname[16];
+#define MAXUNITS (6 * 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);
+ pts_devsw_installed = 1;
+ dev_c = makedev(CDEV_MAJOR_C,0);
+ cdevsw_add(&dev_c,&ptc_cdevsw,NULL);
+ ptc_devsw_installed = 1;
+#ifdef DEVFS
+/*XXX*/
+#if NPTY > MAXUNITS
+#undef NPTY
+#define NPTY MAXUNITS
+#endif
+ for ( i = 0 ; i<NPTY ; i++ ) {
+ int x;
+
+ j = i / 16;
+ k = i % 16;
+ 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);
+ }
+#endif
+}
+
+SYSINIT(ptcdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR_C,ptc_drvinit,NULL)
+
+#endif /* JREMOD */
+
diff --git a/sys/kern/tty_snoop.c b/sys/kern/tty_snoop.c
index 77c1596..c89c975 100644
--- a/sys/kern/tty_snoop.c
+++ b/sys/kern/tty_snoop.c
@@ -33,6 +33,13 @@
#include <sys/snoop.h>
+#ifdef JREMOD
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
+#define CDEV_MAJOR 53
+#endif /*JREMOD*/
+
#ifndef MIN
#define MIN(a,b) (((a)<(b))?(a):(b))
#endif
@@ -491,4 +498,36 @@ 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 snp_devsw_installed = 0;
+
+static void snp_drvinit(void *unused)
+{
+ dev_t dev;
+
+ if( ! snp_devsw_installed ) {
+ 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);
+ }
+ }
+#endif
+}
+
+SYSINIT(snpdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,snp_drvinit,NULL)
+
+#endif /* JREMOD */
+
#endif
diff --git a/sys/kern/tty_tty.c b/sys/kern/tty_tty.c
index 9fe7f33..d0a0c8c 100644
--- a/sys/kern/tty_tty.c
+++ b/sys/kern/tty_tty.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)tty_tty.c 8.2 (Berkeley) 9/23/93
- * $Id: tty_tty.c,v 1.4 1994/12/04 01:46:13 ache Exp $
+ * $Id: tty_tty.c,v 1.5 1995/05/30 08:06:19 rgrimes Exp $
*/
/*
@@ -46,6 +46,14 @@
#include <sys/vnode.h>
#include <sys/file.h>
+#ifdef JREMOD
+#include <sys/kernel.h>
+#ifdef DEVFS
+#include <sys/devfsext.h>
+#endif /*DEVFS*/
+#define CDEV_MAJOR 1
+#endif /*JREMOD*/
+
#define cttyvp(p) ((p)->p_flag & P_CONTROLT ? (p)->p_session->s_ttyvp : NULL)
/*ARGSUSED*/
@@ -153,3 +161,36 @@ cttyselect(dev, flag, p)
return (1); /* try operation to get EOF/failure */
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_drvinit(void *unused)
+{
+ dev_t dev;
+
+ if( ! ctty_devsw_installed ) {
+ dev = makedev(CDEV_MAJOR,0);
+ 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);
+ }
+ }
+#endif
+}
+
+SYSINIT(cttydev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,ctty_drvinit,NULL)
+
+#endif /* JREMOD */
+
OpenPOWER on IntegriCloud