Date: Fri, 14 Mar 2003 06:35:49 +0900 From: Norikatsu Shigemura <nork@FreeBSD.org> To: Yoshinori KASAZAKI <mia@gold.ocn.ne.jp> Cc: freebsd-emulation@FreeBSD.org, freebsd-current@FreeBSD.org, saper@sgh.waw.pl Subject: Re: Fix for rtc, vmware modules and post-500104 -current Message-ID: <200303132135.h2DLZoFE073570@nd250009.gab.xdsl.ne.jp> In-Reply-To: <20030313040927.189addca.mia@gold.ocn.ne.jp> References: <Pine.SOL.4.43.0303051932230.27381-300000@akson.sgh.waw.pl> <200303120505.h2C55gcE083509@nd250009.gab.xdsl.ne.jp> <20030313040927.189addca.mia@gold.ocn.ne.jp>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On Thu, 13 Mar 2003 04:09:27 +0900
Yoshinori KASAZAKI <mia@gold.ocn.ne.jp> 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'.
[-- Attachment #2 --]
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
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200303132135.h2DLZoFE073570>
