Skip to content

Commit

Permalink
[PATCH] sem2mutex: sound/oss/
Browse files Browse the repository at this point in the history
Semaphore to mutex conversion.

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

Signed-off-by: Ingo Molnar <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Ingo Molnar authored and Linus Torvalds committed Mar 23, 2006
1 parent 82d4dc5 commit 910f5d2
Show file tree
Hide file tree
Showing 27 changed files with 449 additions and 410 deletions.
11 changes: 6 additions & 5 deletions sound/oss/aci.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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;
Expand Down Expand Up @@ -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++) {
Expand All @@ -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;
}

Expand Down Expand Up @@ -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) ?
Expand Down
7 changes: 4 additions & 3 deletions sound/oss/ad1889.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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);
}

Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}

Expand Down
2 changes: 1 addition & 1 deletion sound/oss/ad1889.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
8 changes: 5 additions & 3 deletions sound/oss/ali5455.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -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 */
Expand Down Expand Up @@ -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);
Expand Down
44 changes: 23 additions & 21 deletions sound/oss/au1000.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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) {
Expand All @@ -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);

Expand All @@ -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);
Expand Down Expand Up @@ -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) {
Expand All @@ -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);

Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand All @@ -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;
}
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}

Expand All @@ -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);
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
Loading

0 comments on commit 910f5d2

Please sign in to comment.