summaryrefslogtreecommitdiffstats
path: root/sound/oss/sh_dac_audio.c
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2010-09-14 21:53:41 +0200
committerTakashi Iwai <tiwai@suse.de>2010-09-14 23:14:50 +0200
commit645ef9ef1fc0ff70456495b1e21d3420b7b08541 (patch)
treef5e5df85076f397690437f09cb56688b06a03dbf /sound/oss/sh_dac_audio.c
parent7b6c3a34e93aafc5dd9adc7dee87c7fa61d8bdbb (diff)
sound: autoconvert trivial BKL users to private mutex
The usage of the BKL in the OSS sound drivers is trivial, and each of them only locks against itself, so it can be turned into per-driver mutexes. This is the script that was used for the conversion: file=$1 name=$2 if grep -q lock_kernel ${file} ; then if grep -q 'include.*linux.mutex.h' ${file} ; then sed -i '/include.*<linux\/smp_lock.h>/d' ${file} else sed -i 's/include.*<linux\/smp_lock.h>.*$/include <linux\/mutex.h>/g' ${file} fi sed -i ${file} \ -e "/^#include.*linux.mutex.h/,$ { 1,/^\(static\|int\|long\)/ { /^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex); } }" \ -e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \ -e '/[ ]*cycle_kernel_lock();/d' else sed -i -e '/include.*\<smp_lock.h\>/d' ${file} \ -e '/cycle_kernel_lock()/d' fi Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/oss/sh_dac_audio.c')
-rw-r--r--sound/oss/sh_dac_audio.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sound/oss/sh_dac_audio.c b/sound/oss/sh_dac_audio.c
index 479e3025a8a..53bba16bf70 100644
--- a/sound/oss/sh_dac_audio.c
+++ b/sound/oss/sh_dac_audio.c
@@ -16,7 +16,7 @@
#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/sound.h>
-#include <linux/smp_lock.h>
+#include <linux/mutex.h>
#include <linux/soundcard.h>
#include <linux/interrupt.h>
#include <linux/hrtimer.h>
@@ -34,6 +34,7 @@
#define BUFFER_SIZE 48000
+static DEFINE_MUTEX(sh_dac_audio_mutex);
static int rate;
static int empty;
static char *data_buffer, *buffer_begin, *buffer_end;
@@ -163,9 +164,9 @@ static long dac_audio_unlocked_ioctl(struct file *file, u_int cmd, u_long arg)
{
int ret;
- lock_kernel();
+ mutex_lock(&sh_dac_audio_mutex);
ret = dac_audio_ioctl(file, cmd, arg);
- unlock_kernel();
+ mutex_unlock(&sh_dac_audio_mutex);
return ret;
}
@@ -229,16 +230,16 @@ static int dac_audio_open(struct inode *inode, struct file *file)
if (file->f_mode & FMODE_READ)
return -ENODEV;
- lock_kernel();
+ mutex_lock(&sh_dac_audio_mutex);
if (in_use) {
- unlock_kernel();
+ mutex_unlock(&sh_dac_audio_mutex);
return -EBUSY;
}
in_use = 1;
dac_audio_start();
- unlock_kernel();
+ mutex_unlock(&sh_dac_audio_mutex);
return 0;
}