Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Feb 2011 14:26:55 -0500
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        freebsd-emulation@FreeBSD.org
Subject:   Re: virtualbox-ose-kmod breakage after svn r218425
Message-ID:  <201102091426.57152.jkim@FreeBSD.org>
In-Reply-To: <4D52E51F.8080304@protected-networks.net>
References:  <4D52E45E.4040505@protected-networks.net> <4D52E51F.8080304@protected-networks.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--Boundary-00=_BquUNeUXVU/HjRl
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Wednesday 09 February 2011 02:03 pm, Michael Butler wrote:
> On 02/09/11 14:00, Michael Butler wrote:
> > Attached is a patch required for vboxdrv.ko to load after the
> > (public) disappearance of uio_yield.
> >
> > Presumably, this will need to be applied to the other branches at
> > bluelife.at
> >
> > 	imb
>
> Mailman ate my homework!
>
> *** ./src/VBox/Runtime/r0drv/freebsd/thread-r0drv-freebsd.c~    Wed
> Dec 1 12:09:43 2010
> --- ./src/VBox/Runtime/r0drv/freebsd/thread-r0drv-freebsd.c     Wed
> Feb 9 13:44:28 2011
> ***************
> *** 101,107 ****
> --- 101,111 ----
>
>   RTDECL(bool) RTThreadYield(void)
>   {
> + #if (__FreeBSD_version >= 900032)
> +     kern_yield(curthread->td_user_pri);
> + #else
>       uio_yield();
> + #endif
>       return false; /** @todo figure this one ... */
>   }

Actually I did the same thing last night.  Please see the attachment.

Jung-uk Kim

--Boundary-00=_BquUNeUXVU/HjRl
Content-Type: text/plain;
  charset="iso-8859-1";
  name="patch-uio_yield"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="patch-uio_yield"

--- src/VBox/Runtime/r0drv/freebsd/the-freebsd-kernel.h.orig	2010-12-01 12:09:43.000000000 -0500
+++ src/VBox/Runtime/r0drv/freebsd/the-freebsd-kernel.h	2011-02-08 18:19:00.000000000 -0500
@@ -112,4 +112,13 @@
 # define USE_KMEM_ALLOC_PROT
 #endif
 
+/**
+ * Check whether we can use uio_yield.
+ */
+#if __FreeBSD_version >= 900032
+# define UIO_YIELD() kern_yield(curthread->td_user_pri)
+#else
+# define UIO_YIELD() uio_yield()
+#endif
+
 #endif
--- src/VBox/Runtime/r0drv/freebsd/thread-r0drv-freebsd.c.orig	2010-12-01 12:09:43.000000000 -0500
+++ src/VBox/Runtime/r0drv/freebsd/thread-r0drv-freebsd.c	2011-02-08 18:19:00.000000000 -0500
@@ -101,7 +101,7 @@
 
 RTDECL(bool) RTThreadYield(void)
 {
-    uio_yield();
+    UIO_YIELD();
     return false; /** @todo figure this one ... */
 }
 

--Boundary-00=_BquUNeUXVU/HjRl--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102091426.57152.jkim>