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