On Thu, 13 Mar 2003 04:09:27 +0900 Yoshinori KASAZAKI <[EMAIL PROTECTED]> wrote: > > Hum.. This is not work in my environment. Because MOD_LOAD initializer > > didn't kick rtc_attach. I fixed this problem and merge(but ADHOC:-). > > Please, anyone, check following patch. > I've just applied your patch and rebuilt rtc.ko. > It gave me /dev/rtc and VMware2 doesn't complain about > 'cannot open /dev/rtc...' any more. > It seems to be working well.
Humm.. I saw it. I make MOD_LOAD initializer do only make_dev. > (except > WARNING: driver "rtc" used unreserved major device number 202 > message, which seems to be harmless) :-). > > BTW, vmmon_*.ko is not good. hum.... > vmmon_up.ko is working for me now with Marcin's patch. > My -current is dated as 2003/03/10. Yes. vmmon_up.ko is works.. But when vmware2 reseted, vmware2 complains 'cannnot open /dev/vmmon'.
diff -urN emulators/rtc/Makefile local/rtc/Makefile --- emulators/rtc/Makefile Fri Mar 7 15:01:17 2003 +++ local/rtc/Makefile Fri Mar 14 06:28:23 2003 @@ -6,7 +6,7 @@ # PORTNAME= rtc -PORTVERSION= 2001.09.16.1 +PORTVERSION= 2002.03.05.2 CATEGORIES= emulators linux MASTER_SITES= # none DISTFILES= # none diff -urN emulators/rtc/files/rtc.c local/rtc/files/rtc.c --- emulators/rtc/files/rtc.c Sun Sep 16 16:05:18 2001 +++ local/rtc/files/rtc.c Fri Mar 14 06:27:40 2003 @@ -85,6 +85,14 @@ static int rtc_modeevent(module_t mod, int cmd, void *arg); static struct cdevsw rtc_cdevsw = { +#if __FreeBSD_version >= 500104 + .d_open = rtc_open, + .d_close = rtc_close, + .d_ioctl = rtc_ioctl, + .d_poll = rtc_poll, + .d_name = DEVICE_NAME, + .d_maj = CDEV_MAJOR, +#else /* open */ rtc_open, /* close */ rtc_close, /* read */ noread, @@ -104,6 +112,7 @@ #if __FreeBSD_version >= 500018 || __FreeBSD_version >= 430000 /* kqfilter */ nokqfilter, #endif +#endif }; /* @@ -135,10 +144,6 @@ if (rtc_sc!=NULL) return NULL; - dev = make_dev(&rtc_cdevsw, minor(dev), UID_ROOT, GID_WHEEL, 0600, DEVICE_NAME); - if (dev==NULL) - return (NULL); - MALLOC(sc, struct rtc_softc*, sizeof(*sc), M_DEVBUF, M_WAITOK); if (sc==NULL) return NULL; @@ -264,11 +269,18 @@ static int init_module(void) { -int error; + int error = 0; + dev_t dev; +#if __FreeBSD_version < 500104 error = cdevsw_add(&rtc_cdevsw); if (error) return error; +#endif + + dev = make_dev(&rtc_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, DEVICE_NAME); + if (dev==NULL) + error = ENOMEM; return error; } @@ -286,7 +298,9 @@ DLog(Lfail, "%p busy", sc); return error; } +#if __FreeBSD_version < 500104 error = cdevsw_remove(&rtc_cdevsw); +#endif DLog(Linfo, "return %d", error); return error; } diff -urN emulators/rtc/files/rtc.sh local/rtc/files/rtc.sh --- emulators/rtc/files/rtc.sh Fri Sep 22 20:08:22 2000 +++ local/rtc/files/rtc.sh Tue Mar 11 16:49:55 2003 @@ -7,11 +7,11 @@ start) if [ -x $kmoddir/$kmod ]; then echo -n ' rtc' - kldload $kmoddir/$kmod + /sbin/kldload $kmoddir/$kmod fi ;; stop) - kldunload $kmod && echo -n ' rtc' + /sbin/kldunload $kmod && echo -n ' rtc' ;; *) echo "Usage: `basename $0` {start|stop}" >&2