kqemu and sched_lock, please test port update
Juergen Lock
nox at jelal.kn-bremen.de
Fri Jul 20 22:06:04 UTC 2007
I just noticed this, and came up with the update below. I still don't
have a -current box so I need you to test this before I commit it...
Thanx,
Juergen
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/emulators/kqemu-kmod/Makefile,v
retrieving revision 1.19
diff -u -r1.19 Makefile
--- Makefile 14 Jul 2007 17:48:56 -0000 1.19
+++ Makefile 20 Jul 2007 21:21:14 -0000
@@ -7,7 +7,7 @@
PORTNAME= kqemu
PORTVERSION= 1.3.0.p11
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= emulators kld
MASTER_SITES= http://fabrice.bellard.free.fr/qemu/ \
http://qemu.org/ \
Index: files/patch-kqemu-freebsd.c
===================================================================
RCS file: /home/pcvs/ports/emulators/kqemu-kmod/files/patch-kqemu-freebsd.c,v
retrieving revision 1.5
diff -u -r1.5 patch-kqemu-freebsd.c
--- files/patch-kqemu-freebsd.c 6 Feb 2007 20:46:29 -0000 1.5
+++ files/patch-kqemu-freebsd.c 20 Jul 2007 21:17:33 -0000
@@ -1,5 +1,23 @@
Index: kqemu-freebsd.c
-@@ -321,6 +321,9 @@
+@@ -208,9 +208,17 @@
+ int CDECL kqemu_schedule(void)
+ {
+ /* kqemu_log("kqemu_schedule\n"); */
++#if __FreeBSD_version < 700044
+ mtx_lock_spin(&sched_lock);
+ mi_switch(SW_VOL, NULL);
+ mtx_unlock_spin(&sched_lock);
++#else
++ /* -current no longer uses sched_lock */
++ struct thread *td = curthread;
++ thread_lock(td);
++ mi_switch(SW_VOL, NULL);
++ thread_unlock(td);
++#endif
+ return SIGPENDING(curthread);
+ }
+ #endif
+@@ -320,6 +328,9 @@
#if __FreeBSD_version >= 500000
dev->si_drv1 = NULL;
TAILQ_REMOVE(&kqemuhead, ks, kqemu_ent);
@@ -9,4 +27,3 @@
destroy_dev(dev);
#endif
free(ks, M_KQEMU);
-
More information about the freebsd-current
mailing list