[ALSA] Changed Jaroslav Kysela's e-mail from perex@suse.cz to perex@perex.cz
[sfrench/cifs-2.6.git] / sound / core / seq / seq_instr.c
index 4874520639650c649746ac4a843197c4ddc6d1f8..9a6fd56c9109c7747d6962ed82fac218083d2744 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *   Generic Instrument routines for ALSA sequencer
- *   Copyright (c) 1999 by Jaroslav Kysela <perex@suse.cz>
+ *   Copyright (c) 1999 by Jaroslav Kysela <perex@perex.cz>
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@
 #include <sound/seq_instr.h>
 #include <sound/initval.h>
 
-MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
+MODULE_AUTHOR("Jaroslav Kysela <perex@perex.cz>");
 MODULE_DESCRIPTION("Advanced Linux Sound Architecture sequencer instrument library.");
 MODULE_LICENSE("GPL");
 
@@ -36,7 +36,7 @@ static void snd_instr_lock_ops(struct snd_seq_kinstr_list *list)
        if (!(list->flags & SNDRV_SEQ_INSTR_FLG_DIRECT)) {
                spin_lock_irqsave(&list->ops_lock, list->ops_flags);
        } else {
-               down(&list->ops_mutex);
+               mutex_lock(&list->ops_mutex);
        }
 }
 
@@ -45,7 +45,7 @@ static void snd_instr_unlock_ops(struct snd_seq_kinstr_list *list)
        if (!(list->flags & SNDRV_SEQ_INSTR_FLG_DIRECT)) {
                spin_unlock_irqrestore(&list->ops_lock, list->ops_flags);
        } else {
-               up(&list->ops_mutex);
+               mutex_unlock(&list->ops_mutex);
        }
 }
 
@@ -82,7 +82,7 @@ struct snd_seq_kinstr_list *snd_seq_instr_list_new(void)
                return NULL;
        spin_lock_init(&list->lock);
        spin_lock_init(&list->ops_lock);
-       init_MUTEX(&list->ops_mutex);
+       mutex_init(&list->ops_mutex);
        list->owner = -1;
        return list;
 }
@@ -109,7 +109,7 @@ void snd_seq_instr_list_free(struct snd_seq_kinstr_list **list_ptr)
                        spin_lock_irqsave(&list->lock, flags);
                        while (instr->use) {
                                spin_unlock_irqrestore(&list->lock, flags);
-                               schedule_timeout_interruptible(1);
+                               schedule_timeout_uninterruptible(1);
                                spin_lock_irqsave(&list->lock, flags);
                        }                               
                        spin_unlock_irqrestore(&list->lock, flags);
@@ -198,8 +198,10 @@ int snd_seq_instr_list_free_cond(struct snd_seq_kinstr_list *list,
                while (flist) {
                        instr = flist;
                        flist = instr->next;
-                       while (instr->use)
-                               schedule_timeout_interruptible(1);
+                       while (instr->use) {
+                               schedule_timeout_uninterruptible(1);
+                               barrier();
+                       }
                        if (snd_seq_instr_free(instr, atomic)<0)
                                snd_printk(KERN_WARNING "instrument free problem\n");
                        instr = next;
@@ -555,7 +557,7 @@ static int instr_free(struct snd_seq_kinstr_ops *ops,
                                           SNDRV_SEQ_INSTR_NOTIFY_REMOVE);
                while (instr->use) {
                        spin_unlock_irqrestore(&list->lock, flags);
-                       schedule_timeout_interruptible(1);
+                       schedule_timeout_uninterruptible(1);
                        spin_lock_irqsave(&list->lock, flags);
                }                               
                spin_unlock_irqrestore(&list->lock, flags);