From 6024b62414bca78077acdb6e045f53f657bdf1da Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela <perex@suse.cz> Date: Mon, 14 Feb 2005 17:04:59 +0100 Subject: [PATCH] [ALSA] Remove interruptible_sleep_on_timeout(). ALSA<-OSS sequencer Use wait_event_interruptible_timeout() instead of deprecated interruptible_sleep_on_timeout(). Signed-off-by: Takashi Iwai <tiwai@suse.de> --- sound/core/seq/oss/seq_oss_readq.c | 5 ++++- sound/core/seq/oss/seq_oss_writeq.c | 24 +++++------------------- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/sound/core/seq/oss/seq_oss_readq.c b/sound/core/seq/oss/seq_oss_readq.c index 6d87b637759f..0a6f2a64f692 100644 --- a/sound/core/seq/oss/seq_oss_readq.c +++ b/sound/core/seq/oss/seq_oss_readq.c @@ -24,6 +24,7 @@ #include "seq_oss_event.h" #include <sound/seq_oss_legacy.h> #include "../seq_lock.h" +#include <linux/wait.h> /* * constants @@ -165,7 +166,9 @@ snd_seq_oss_readq_pick(seq_oss_readq_t *q, evrec_t *rec) void snd_seq_oss_readq_wait(seq_oss_readq_t *q) { - interruptible_sleep_on_timeout(&q->midi_sleep, q->pre_event_timeout); + wait_event_interruptible_timeout(q->midi_sleep, + (q->qlen > 0 || q->head == q->tail), + q->pre_event_timeout); } /* diff --git a/sound/core/seq/oss/seq_oss_writeq.c b/sound/core/seq/oss/seq_oss_writeq.c index 138203864e89..87f85f7ee814 100644 --- a/sound/core/seq/oss/seq_oss_writeq.c +++ b/sound/core/seq/oss/seq_oss_writeq.c @@ -26,6 +26,7 @@ #include <sound/seq_oss_legacy.h> #include "../seq_lock.h" #include "../seq_clientmgr.h" +#include <linux/wait.h> /* @@ -91,7 +92,6 @@ snd_seq_oss_writeq_sync(seq_oss_writeq_t *q) { seq_oss_devinfo_t *dp = q->dp; abstime_t time; - unsigned long flags; time = snd_seq_oss_timer_cur_tick(dp->timer); if (q->sync_time >= time) @@ -115,27 +115,13 @@ snd_seq_oss_writeq_sync(seq_oss_writeq_t *q) snd_seq_kernel_client_enqueue_blocking(dp->cseq, &ev, NULL, 0, 0); } - spin_lock_irqsave(&q->sync_lock, flags); - if (! q->sync_event_put) { /* echoback event has been received */ - spin_unlock_irqrestore(&q->sync_lock, flags); - return 0; - } - - /* wait for echo event */ - spin_unlock(&q->sync_lock); - interruptible_sleep_on_timeout(&q->sync_sleep, HZ); - spin_lock(&q->sync_lock); - if (signal_pending(current)) { + wait_event_interruptible_timeout(q->sync_sleep, ! q->sync_event_put, HZ); + if (signal_pending(current)) /* interrupted - return 0 to finish sync */ q->sync_event_put = 0; - spin_unlock_irqrestore(&q->sync_lock, flags); - return 0; - } - spin_unlock_irqrestore(&q->sync_lock, flags); - if (q->sync_time >= time) + if (! q->sync_event_put || q->sync_time >= time) return 0; - else - return 1; + return 1; } /* -- 2.30.9