On Wed, 5 Mar 2003 19:37:35 +0100 (MET)
Marcin CIE LAK <[EMAIL PROTECTED]> wrote:
> See the patches enclosed to emulators/rtc
> and emulators/vmware2 ports.
> Tested only for -current with:
> #define __FreeBSD_version 500104

        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.

        BTW, vmmon_*.ko is not good.  hum....
diff -urN emulators/rtc/Makefile local/rtc/Makefile
--- emulators/rtc/Makefile	Fri Mar  7 15:01:17 2003
+++ local/rtc/Makefile	Tue Mar 11 16:48:46 2003
@@ -6,7 +6,7 @@
 #
 
 PORTNAME=	rtc
-PORTVERSION=	2001.09.16.1
+PORTVERSION=	2002.03.05.1
 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	Tue Mar 11 19:40:39 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 
 };
 
 /* 
@@ -118,7 +127,6 @@
 static struct rtc_softc *
 rtc_attach(dev_t dev)
 {
-	struct rtc_softc *sc;
 	int unit;
 
 #if __FreeBSD_version >= 500014
@@ -132,24 +140,8 @@
 		return dev->si_drv1;
 	}
 
-	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;
-
-	bzero(sc, sizeof(*sc));
-	rtc_sc = sc;
-	dev->si_drv1 = sc; /* Link together */
-	sc->dev = dev;
-	
-	DLog(Lexit, "new %p,%p", dev, sc);
-	return sc;
+	DLog(Lexit, "new %p,%p", dev, rtc_sc);
+	return rtc_sc;
 }
 
 static int
@@ -264,11 +256,26 @@
 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)
+		return ENOMEM;
+
+	MALLOC(rtc_sc, struct rtc_softc*, sizeof(*rtc_sc), M_DEVBUF, M_WAITOK);
+	if (rtc_sc==NULL)
+		return ENOMEM;
+
+	bzero(rtc_sc, sizeof(*rtc_sc));
+	dev->si_drv1 = rtc_sc; /* Link together */
+	rtc_sc->dev = dev;
 
 	return error;
 }
@@ -286,7 +293,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