Hi,

   FreeBSD maintains a ports package for OSS[1], which has accumelated a number 
of patches for OSS. From what I could gather via CVS history and private 
e-mail, these patches are backward compatible with previous FreeBSD versions, 
and (per maintainer) correct. The attached patch includes the following changes 
from FreeBSD:

    1. Use M_WAITOK instead of M_NOWAIT when allocating memory in 
setup/FreeBSD/oss/build/osscore.c.
    2. Try to unbusy device before detaching in 
setup/FreeBSD/oss/build/bsdpci.inc and setup/FreeBSD/oss/build/bsdvirtual.inc.

[1] http://www.freebsd.org/cgi/cvsweb.cgi/ports/audio/oss/

Yours,
        Yair K.
diff -r 124841211ded setup/FreeBSD/oss/build/bsdpci.inc
--- a/setup/FreeBSD/oss/build/bsdpci.inc	Fri Jun 13 03:49:38 2008 +0300
+++ b/setup/FreeBSD/oss/build/bsdpci.inc	Fri Jun 13 14:45:50 2008 +0300
@@ -92,6 +92,8 @@
       osdev = device_list[i];
       if (osdev->dip == dev)
 	{
+	  if (device_get_state(dev) == DS_BUSY)
+	    device_unbusy(dev);
 	  if (!DRIVER_DETACH (osdev))
 	    {
 	      printf (DRIVER_NICK ": Unloading busy device\n");
diff -r 124841211ded setup/FreeBSD/oss/build/bsdvirtual.inc
--- a/setup/FreeBSD/oss/build/bsdvirtual.inc	Fri Jun 13 03:49:38 2008 +0300
+++ b/setup/FreeBSD/oss/build/bsdvirtual.inc	Fri Jun 13 14:45:50 2008 +0300
@@ -34,6 +34,8 @@
     {
       osdev = device_list[i];
 
+      if (osdev->dip != NULL && device_get_state(osdev->dip) == DS_BUSY)
+	device_unbusy(osdev->dip);
       if (!DRIVER_DETACH (osdev))
 	{
 	  printf (DRIVER_NICK ": Unloading busy device\n");
diff -r 124841211ded setup/FreeBSD/oss/build/osscore.c
--- a/setup/FreeBSD/oss/build/osscore.c	Fri Jun 13 03:49:38 2008 +0300
+++ b/setup/FreeBSD/oss/build/osscore.c	Fri Jun 13 14:45:50 2008 +0300
@@ -264,7 +264,7 @@
   *phaddr = 0;
 
   tmpbuf =
-    (char *) contigmalloc (buffsize, M_DEVBUF, M_NOWAIT, 0ul, memlimit,
+    (char *) contigmalloc (buffsize, M_DEVBUF, M_WAITOK, 0ul, memlimit,
 			   PAGE_SIZE, 0ul);
   if (tmpbuf == NULL)
     {
_______________________________________________
oss-devel mailing list
oss-devel@mailman.opensound.com
http://mailman.opensound.com/mailman/listinfo/oss-devel

Reply via email to