Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 910f5d20 authored by Ingo Molnar's avatar Ingo Molnar Committed by Linus Torvalds
Browse files

[PATCH] sem2mutex: sound/oss/



Semaphore to mutex conversion.

The conversion was generated via scripts, and the result was validated
automatically via a script as well.

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 82d4dc5a
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -56,7 +56,8 @@
#include <linux/module.h> 
#include <linux/proc_fs.h>
#include <linux/slab.h>
#include <asm/semaphore.h>
#include <linux/mutex.h>

#include <asm/io.h>
#include <asm/uaccess.h>
#include "sound_config.h"
@@ -79,7 +80,7 @@ static int aci_micpreamp=3; /* microphone preamp-level that can't be *
			 * checked with ACI versions prior to 0xb0	*/

static int mixer_device;
static struct semaphore aci_sem;
static struct mutex aci_mutex;

#ifdef MODULE
static int reset;
@@ -212,7 +213,7 @@ int aci_rw_cmd(int write1, int write2, int write3)
	int write[] = {write1, write2, write3};
	int read = -EINTR, i;

	if (down_interruptible(&aci_sem))
	if (mutex_lock_interruptible(&aci_mutex))
		goto out;

	for (i=0; i<3; i++) {
@@ -227,7 +228,7 @@ int aci_rw_cmd(int write1, int write2, int write3)
	}
	
	read = aci_rawread();
out_up:	up(&aci_sem);
out_up:	mutex_unlock(&aci_mutex);
out:	return read;
}

@@ -603,7 +604,7 @@ static int __init attach_aci(void)
	char *boardname;
	int i, rc = -EBUSY;

	init_MUTEX(&aci_sem);
	mutex_init(&aci_mutex);

	outb(0xE3, 0xf8f); /* Write MAD16 password */
	aci_port = (inb(0xf90) & 0x10) ?
+4 −3
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@
#include <linux/ac97_codec.h>
#include <linux/sound.h>
#include <linux/interrupt.h>
#include <linux/mutex.h>

#include <asm/delay.h>
#include <asm/io.h>
@@ -238,7 +239,7 @@ static ad1889_dev_t *ad1889_alloc_dev(struct pci_dev *pci)

	for (i = 0; i < AD_MAX_STATES; i++) {
		dev->state[i].card = dev;
		init_MUTEX(&dev->state[i].sem);
		mutex_init(&dev->state[i].mutex);
		init_waitqueue_head(&dev->state[i].dmabuf.wait);
	}

@@ -461,7 +462,7 @@ static ssize_t ad1889_write(struct file *file, const char __user *buffer, size_t
	ssize_t ret = 0;
	DECLARE_WAITQUEUE(wait, current);

	down(&state->sem);
	mutex_lock(&state->mutex);
#if 0
	if (dmabuf->mapped) {
		ret = -ENXIO;
@@ -546,7 +547,7 @@ static ssize_t ad1889_write(struct file *file, const char __user *buffer, size_t
err2:
	remove_wait_queue(&state->dmabuf.wait, &wait);
err1:
	up(&state->sem);
	mutex_unlock(&state->mutex);
	return ret;
}

+1 −1
Original line number Diff line number Diff line
@@ -100,7 +100,7 @@ typedef struct ad1889_state {
		unsigned int subdivision;
	} dmabuf;

	struct semaphore sem;
	struct mutex mutex;
} ad1889_state_t;

typedef struct ad1889_dev {
+5 −3
Original line number Diff line number Diff line
@@ -64,6 +64,8 @@
#include <linux/smp_lock.h>
#include <linux/ac97_codec.h>
#include <linux/interrupt.h>
#include <linux/mutex.h>

#include <asm/uaccess.h>

#ifndef PCI_DEVICE_ID_ALI_5455
@@ -234,7 +236,7 @@ struct ali_state {
	struct ali_card *card;	/* Card info */

	/* single open lock mechanism, only used for recording */
	struct semaphore open_sem;
	struct mutex open_mutex;
	wait_queue_head_t open_wait;

	/* file mode */
@@ -2807,7 +2809,7 @@ static int ali_open(struct inode *inode, struct file *file)
	state->card = card;
	state->magic = ALI5455_STATE_MAGIC;
	init_waitqueue_head(&dmabuf->wait);
	init_MUTEX(&state->open_sem);
	mutex_init(&state->open_mutex);
	file->private_data = state;
	dmabuf->trigger = 0;
	/* allocate hardware channels */
@@ -3359,7 +3361,7 @@ static void __devinit ali_configure_clocking(void)
		state->card = card;
		state->magic = ALI5455_STATE_MAGIC;
		init_waitqueue_head(&dmabuf->wait);
		init_MUTEX(&state->open_sem);
		mutex_init(&state->open_mutex);
		dmabuf->fmt = ALI5455_FMT_STEREO | ALI5455_FMT_16BIT;
		dmabuf->trigger = PCM_ENABLE_OUTPUT;
		ali_set_dac_rate(state, 48000);
+23 −21
Original line number Diff line number Diff line
@@ -68,6 +68,8 @@
#include <linux/smp_lock.h>
#include <linux/ac97_codec.h>
#include <linux/interrupt.h>
#include <linux/mutex.h>

#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/mach-au1x00/au1000.h>
@@ -120,8 +122,8 @@ struct au1000_state {
	int             no_vra;	// do not use VRA

	spinlock_t      lock;
	struct semaphore open_sem;
	struct semaphore sem;
	struct mutex open_mutex;
	struct mutex sem;
	mode_t          open_mode;
	wait_queue_head_t open_wait;

@@ -1106,7 +1108,7 @@ static ssize_t au1000_read(struct file *file, char *buffer,

	count *= db->cnt_factor;

	down(&s->sem);
	mutex_lock(&s->sem);
	add_wait_queue(&db->wait, &wait);

	while (count > 0) {
@@ -1125,14 +1127,14 @@ static ssize_t au1000_read(struct file *file, char *buffer,
						ret = -EAGAIN;
					goto out;
				}
				up(&s->sem);
				mutex_unlock(&s->sem);
				schedule();
				if (signal_pending(current)) {
					if (!ret)
						ret = -ERESTARTSYS;
					goto out2;
				}
				down(&s->sem);
				mutex_lock(&s->sem);
			}
		} while (avail <= 0);

@@ -1159,7 +1161,7 @@ static ssize_t au1000_read(struct file *file, char *buffer,
	}			// while (count > 0)

out:
	up(&s->sem);
	mutex_unlock(&s->sem);
out2:
	remove_wait_queue(&db->wait, &wait);
	set_current_state(TASK_RUNNING);
@@ -1187,7 +1189,7 @@ static ssize_t au1000_write(struct file *file, const char *buffer,

	count *= db->cnt_factor;

	down(&s->sem);	
	mutex_lock(&s->sem);
	add_wait_queue(&db->wait, &wait);

	while (count > 0) {
@@ -1204,14 +1206,14 @@ static ssize_t au1000_write(struct file *file, const char *buffer,
						ret = -EAGAIN;
					goto out;
				}
				up(&s->sem);
				mutex_unlock(&s->sem);
				schedule();
				if (signal_pending(current)) {
					if (!ret)
						ret = -ERESTARTSYS;
					goto out2;
				}
				down(&s->sem);
				mutex_lock(&s->sem);
			}
		} while (avail <= 0);

@@ -1240,7 +1242,7 @@ static ssize_t au1000_write(struct file *file, const char *buffer,
	}			// while (count > 0)

out:
	up(&s->sem);
	mutex_unlock(&s->sem);
out2:
	remove_wait_queue(&db->wait, &wait);
	set_current_state(TASK_RUNNING);
@@ -1298,7 +1300,7 @@ static int au1000_mmap(struct file *file, struct vm_area_struct *vma)
	dbg("%s", __FUNCTION__);
    
	lock_kernel();
	down(&s->sem);
	mutex_lock(&s->sem);
	if (vma->vm_flags & VM_WRITE)
		db = &s->dma_dac;
	else if (vma->vm_flags & VM_READ)
@@ -1324,7 +1326,7 @@ static int au1000_mmap(struct file *file, struct vm_area_struct *vma)
	vma->vm_flags &= ~VM_IO;
	db->mapped = 1;
out:
	up(&s->sem);
	mutex_unlock(&s->sem);
	unlock_kernel();
	return ret;
}
@@ -1829,21 +1831,21 @@ static int au1000_open(struct inode *inode, struct file *file)
	
	file->private_data = s;
	/* wait for device to become free */
	down(&s->open_sem);
	mutex_lock(&s->open_mutex);
	while (s->open_mode & file->f_mode) {
		if (file->f_flags & O_NONBLOCK) {
			up(&s->open_sem);
			mutex_unlock(&s->open_mutex);
			return -EBUSY;
		}
		add_wait_queue(&s->open_wait, &wait);
		__set_current_state(TASK_INTERRUPTIBLE);
		up(&s->open_sem);
		mutex_unlock(&s->open_mutex);
		schedule();
		remove_wait_queue(&s->open_wait, &wait);
		set_current_state(TASK_RUNNING);
		if (signal_pending(current))
			return -ERESTARTSYS;
		down(&s->open_sem);
		mutex_lock(&s->open_mutex);
	}

	stop_dac(s);
@@ -1879,8 +1881,8 @@ static int au1000_open(struct inode *inode, struct file *file)
	}

	s->open_mode |= file->f_mode & (FMODE_READ | FMODE_WRITE);
	up(&s->open_sem);
	init_MUTEX(&s->sem);
	mutex_unlock(&s->open_mutex);
	mutex_init(&s->sem);
	return nonseekable_open(inode, file);
}

@@ -1896,7 +1898,7 @@ static int au1000_release(struct inode *inode, struct file *file)
		lock_kernel();
	}

	down(&s->open_sem);
	mutex_lock(&s->open_mutex);
	if (file->f_mode & FMODE_WRITE) {
		stop_dac(s);
		dealloc_dmabuf(s, &s->dma_dac);
@@ -1906,7 +1908,7 @@ static int au1000_release(struct inode *inode, struct file *file)
		dealloc_dmabuf(s, &s->dma_adc);
	}
	s->open_mode &= ((~file->f_mode) & (FMODE_READ|FMODE_WRITE));
	up(&s->open_sem);
	mutex_unlock(&s->open_mutex);
	wake_up(&s->open_wait);
	unlock_kernel();
	return 0;
@@ -1996,7 +1998,7 @@ static int __devinit au1000_probe(void)
	init_waitqueue_head(&s->dma_adc.wait);
	init_waitqueue_head(&s->dma_dac.wait);
	init_waitqueue_head(&s->open_wait);
	init_MUTEX(&s->open_sem);
	mutex_init(&s->open_mutex);
	spin_lock_init(&s->lock);
	s->codec.private_data = s;
	s->codec.id = 0;
Loading