Date: Wed, 12 Mar 2003 14:05:42 +0900 From: Norikatsu Shigemura <nork@FreeBSD.org> To: freebsd-emulation@FreeBSD.org Cc: freebsd-current@FreeBSD.org, vsilyaev@mindspring.com, saper@system.pl, saper@sgh.waw.pl Subject: Re: Fix for rtc, vmware modules and post-500104 -current Message-ID: <200303120505.h2C55gcE083509@nd250009.gab.xdsl.ne.jp> In-Reply-To: <Pine.SOL.4.43.0303051932230.27381-300000@akson.sgh.waw.pl> References: <Pine.SOL.4.43.0303051932230.27381-300000@akson.sgh.waw.pl>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On Wed, 5 Mar 2003 19:37:35 +0100 (MET)
Marcin CIE LAK <saper@sgh.waw.pl> 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....
[-- Attachment #2 --]
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
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200303120505.h2C55gcE083509>
