diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-03-09 10:28:05 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-03-09 10:28:05 +0000 |
| commit | 06a8bb906c1eee09ebce808466ff6a72f6c3a913 (patch) | |
| tree | 08f4afd4e1839a32d9d9e45af4ad738ade44a594 | |
| parent | e76a843b59b2d3930c8d1af5eb7ca1c1e9d13671 (diff) | |
Notes
| -rw-r--r-- | sys/kern/kern_conf.c | 2 | ||||
| -rw-r--r-- | sys/kern/tty_cons.c | 19 |
2 files changed, 9 insertions, 12 deletions
diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c index 4606fd6c8e01..2f06fa64ebc7 100644 --- a/sys/kern/kern_conf.c +++ b/sys/kern/kern_conf.c @@ -295,6 +295,8 @@ make_dev(struct cdevsw *devsw, int minor, uid_t uid, gid_t gid, int perms, const devsw->d_maj = i; reserved_majors[i] = i; } else { + if (devsw->d_maj == 256) /* XXX: tty_cons.c is magic */ + devsw->d_maj = 0; KASSERT(devsw->d_maj >= 0 && devsw->d_maj < 256, ("Invalid major (%d) in make_dev", devsw->d_maj)); if (reserved_majors[devsw->d_maj] != devsw->d_maj) { diff --git a/sys/kern/tty_cons.c b/sys/kern/tty_cons.c index cd5c84f7d855..89bed410fed2 100644 --- a/sys/kern/tty_cons.c +++ b/sys/kern/tty_cons.c @@ -69,7 +69,6 @@ static d_ioctl_t cnioctl; static d_poll_t cnpoll; static d_kqfilter_t cnkqfilter; -#define CDEV_MAJOR 0 static struct cdevsw cn_cdevsw = { .d_open = cnopen, .d_close = cnclose, @@ -78,7 +77,12 @@ static struct cdevsw cn_cdevsw = { .d_ioctl = cnioctl, .d_poll = cnpoll, .d_name = "console", - .d_maj = CDEV_MAJOR, + .d_maj = 256, + /* + * XXX: We really want major #0, but zero here means + * XXX: allocate a major number automatically. + * XXX: kern_conf.c knows what to do when it sees 256. + */ .d_flags = D_TTY, .d_kqfilter = cnkqfilter, }; @@ -171,6 +175,7 @@ cninit(void) * Make the best console the preferred console. */ cnselect(best_cn); + make_dev(&cn_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "console"); } void @@ -582,13 +587,3 @@ cndbctl(int on) if (on) refcount++; } - -static void -cn_drvinit(void *unused) -{ - - make_dev(&cn_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, - "console"); -} - -SYSINIT(cndev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,cn_drvinit,NULL) |
