linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Whoopie <whoopie79@gmx.net>
To: bluez-devel@lists.sourceforge.net
Subject: [Bluez-devel] [PATCH] snd-bt-sco and new mutex API in kernel 2.6.16
Date: Fri, 31 Mar 2006 16:08:31 +0200	[thread overview]
Message-ID: <442D37DF.8030201@gmx.net> (raw)

[-- Attachment #1: Type: text/plain, Size: 127 bytes --]

Hi,

attached a patch to use the new mutex API introduced in kernel 2.6.16.
It's backwards compatible.

Best regards,
Whoopie


[-- Attachment #2: btsco-mutex.patch --]
[-- Type: text/x-patch, Size: 4484 bytes --]

--- btsco.c.orig	2006-03-31 14:37:18.000000000 +0200
+++ btsco.c	2006-03-31 14:41:10.000000000 +0200
@@ -65,6 +65,15 @@
 #define SNDRV_GET_ID
 #include <sound/initval.h>
 
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,15)
+#include <linux/mutex.h>
+#else
+#define mutex semaphore
+#define mutex_init init_MUTEX
+#define mutex_lock down
+#define mutex_unlock up
+#endif
+
 #ifndef SNDRV_HWDEP_IFACE_BLUETOOTH
 #define SNDRV_HWDEP_IFACE_BLUETOOTH (SNDRV_HWDEP_IFACE_EMUX_WAVETABLE + 1)
 #endif
@@ -139,15 +148,15 @@
 	struct completion thread_done;
 
 	volatile int thread_exit;
-	struct semaphore thread_sem;
+	struct mutex thread_sem;
 
 	volatile struct socket *sco_sock;
-	struct semaphore sock_sem;
+	struct mutex sock_sem;
 	wait_queue_head_t wait;
 
-	struct semaphore playback_sem;
+	struct mutex playback_sem;
 	struct snd_card_bt_sco_pcm *playback;
-	struct semaphore capture_sem;
+	struct mutex capture_sem;
 	struct snd_card_bt_sco_pcm *capture;
 } snd_card_bt_sco_t;
 
@@ -435,8 +444,8 @@
 	    );
 
 	/* Ensure any references to this in our thread have finished */
-	down(&bt_sco->playback_sem);
-	up(&bt_sco->playback_sem);
+	mutex_lock(&bt_sco->playback_sem);
+	mutex_unlock(&bt_sco->playback_sem);
 
 	atomic_dec(&bt_sco->playback_count);
 	spin_lock_irq(&bt_sco->count_changed_lock);
@@ -458,8 +467,8 @@
 	    );
 
 	/* Ensure any references to this in our thread have finished */
-	down(&bt_sco->capture_sem);
-	up(&bt_sco->capture_sem);
+	mutex_lock(&bt_sco->capture_sem);
+	mutex_unlock(&bt_sco->capture_sem);
 
 	atomic_dec(&bt_sco->capture_count);
 	spin_lock_irq(&bt_sco->count_changed_lock);
@@ -700,7 +709,7 @@
 		err = 0;
 		/*  Interrupt any socket operations, so that we may
 		 *  change the socket */
-		down(&bt_sco->sock_sem);
+		mutex_lock(&bt_sco->sock_sem);
 		kill_proc(bt_sco->thread_pid, SIGINT, 1);
 		if (bt_sco->sco_sock) {
 			dprintk("Disposing of previous socket count %d\n",
@@ -729,7 +738,7 @@
 				}
 			}
 		}
-		up(&bt_sco->sock_sem);
+		mutex_unlock(&bt_sco->sock_sem);
 		break;
 	case SNDRV_BT_SCO_IOCTL_REQ_INFO:
 		spin_lock_irq(&bt_sco->count_changed_lock);
@@ -888,7 +897,7 @@
 	set_fs(KERNEL_DS);
 
 	dprintk("snd-bt-scod thread starting\n");
-	up(&bt_sco->thread_sem);
+	mutex_unlock(&bt_sco->thread_sem);
 
 	do {
 
@@ -912,11 +921,11 @@
 		if (bt_sco->thread_exit)
 			break;
 
-		down(&bt_sco->sock_sem);
+		mutex_lock(&bt_sco->sock_sem);
 		sock = (struct socket *)bt_sco->sco_sock;
 		if (sock)
 			get_file(sock->file);
-		up(&bt_sco->sock_sem);
+		mutex_unlock(&bt_sco->sock_sem);
 
 		if (!sock)
 			continue;
@@ -1011,14 +1020,14 @@
 			}
 #endif
 #endif /* any of them */
-			down(&bt_sco->capture_sem);
+			mutex_lock(&bt_sco->capture_sem);
 			if (bt_sco->capture) {
 				snd_card_bt_sco_pcm_receive
 				    (bt_sco->capture, buf, len);
 			}
-			up(&bt_sco->capture_sem);
+			mutex_unlock(&bt_sco->capture_sem);
 
-			down(&bt_sco->playback_sem);
+			mutex_lock(&bt_sco->playback_sem);
 
 			if (bt_sco->playback || !bt_sco->loopback) {
 				memset(buf, 0, len);
@@ -1055,7 +1064,7 @@
 					buf[notzero] = 0;
 				}
 			}
-			up(&bt_sco->playback_sem);
+			mutex_unlock(&bt_sco->playback_sem);
 
 #if 0
 			/* This chunk of code lets us record (using arecord)
@@ -1072,7 +1081,7 @@
 			   which is unsigned, whereas we are dealing with signed).
 			 */
 
-			down(&bt_sco->capture_sem);
+			mutex_lock(&bt_sco->capture_sem);
 			if (bt_sco->capture) {
 				snd_card_bt_sco_pcm_receive
 				    (bt_sco->capture, "\001\002\003\004", 4);
@@ -1081,7 +1090,7 @@
 				snd_card_bt_sco_pcm_receive
 				    (bt_sco->capture, "\004\003\002\001", 4);
 			}
-			up(&bt_sco->capture_sem);
+			mutex_unlock(&bt_sco->capture_sem);
 #endif
 			msg.msg_flags = 0;
 			msg.msg_iov = &iov;
@@ -1151,11 +1160,11 @@
 	bt_sco->card = card;
 
 	init_completion(&bt_sco->thread_done);
-	init_MUTEX(&bt_sco->thread_sem);
-	down(&bt_sco->thread_sem);
-	init_MUTEX(&bt_sco->sock_sem);
-	init_MUTEX(&bt_sco->capture_sem);
-	init_MUTEX(&bt_sco->playback_sem);
+	mutex_init(&bt_sco->thread_sem);
+	mutex_lock(&bt_sco->thread_sem);
+	mutex_init(&bt_sco->sock_sem);
+	mutex_init(&bt_sco->capture_sem);
+	mutex_init(&bt_sco->playback_sem);
 	init_waitqueue_head(&bt_sco->wait);
 	init_waitqueue_head(&bt_sco->hwdep_wait);
 	spin_lock_init(&bt_sco->mixer_changed_lock);
@@ -1170,7 +1179,7 @@
 		goto __nodev;
 	}
 
-	down(&bt_sco->thread_sem);
+	mutex_lock(&bt_sco->thread_sem);
 
 	if ((err = snd_card_bt_sco_pcm(bt_sco)) < 0)
 		goto __nodev;


             reply	other threads:[~2006-03-31 14:08 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-31 14:08 Whoopie [this message]
2006-04-13 19:50 ` [Bluez-devel] [PATCH] snd-bt-sco and new mutex API in kernel 2.6.16 Brad Midgley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=442D37DF.8030201@gmx.net \
    --to=whoopie79@gmx.net \
    --cc=bluez-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).