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

Reply via email to