|
@@ -148,30 +148,30 @@ static void do_catch_up(struct spk_synth *synth)
|
|
|
jiffy_delta = spk_get_var(JIFFY);
|
|
|
delay_time = spk_get_var(DELAY);
|
|
|
full_time = spk_get_var(FULL);
|
|
|
- spk_lock(flags);
|
|
|
+ spin_lock_irqsave(&speakup_info.spinlock, flags);
|
|
|
jiffy_delta_val = jiffy_delta->u.n.value;
|
|
|
- spk_unlock(flags);
|
|
|
+ spin_unlock_irqrestore(&speakup_info.spinlock, flags);
|
|
|
jiff_max = jiffies + jiffy_delta_val;
|
|
|
|
|
|
while (!kthread_should_stop()) {
|
|
|
- spk_lock(flags);
|
|
|
+ spin_lock_irqsave(&speakup_info.spinlock, flags);
|
|
|
jiffy_delta_val = jiffy_delta->u.n.value;
|
|
|
full_time_val = full_time->u.n.value;
|
|
|
delay_time_val = delay_time->u.n.value;
|
|
|
if (speakup_info.flushing) {
|
|
|
speakup_info.flushing = 0;
|
|
|
- spk_unlock(flags);
|
|
|
+ spin_unlock_irqrestore(&speakup_info.spinlock, flags);
|
|
|
synth->flush(synth);
|
|
|
continue;
|
|
|
}
|
|
|
if (synth_buffer_empty()) {
|
|
|
- spk_unlock(flags);
|
|
|
+ spin_unlock_irqrestore(&speakup_info.spinlock, flags);
|
|
|
break;
|
|
|
}
|
|
|
ch = synth_buffer_peek();
|
|
|
set_current_state(TASK_INTERRUPTIBLE);
|
|
|
full_time_val = full_time->u.n.value;
|
|
|
- spk_unlock(flags);
|
|
|
+ spin_unlock_irqrestore(&speakup_info.spinlock, flags);
|
|
|
if (!spk_serial_out(ch)) {
|
|
|
outb(UART_MCR_DTR, speakup_info.port_tts + UART_MCR);
|
|
|
outb(UART_MCR_DTR | UART_MCR_RTS,
|
|
@@ -180,11 +180,11 @@ static void do_catch_up(struct spk_synth *synth)
|
|
|
continue;
|
|
|
}
|
|
|
if ((jiffies >= jiff_max) && (ch == SPACE)) {
|
|
|
- spk_lock(flags);
|
|
|
+ spin_lock_irqsave(&speakup_info.spinlock, flags);
|
|
|
jiffy_delta_val = jiffy_delta->u.n.value;
|
|
|
full_time_val = full_time->u.n.value;
|
|
|
delay_time_val = delay_time->u.n.value;
|
|
|
- spk_unlock(flags);
|
|
|
+ spin_unlock_irqrestore(&speakup_info.spinlock, flags);
|
|
|
if (spk_serial_out(synth->procspeech))
|
|
|
schedule_timeout(msecs_to_jiffies
|
|
|
(delay_time_val));
|
|
@@ -194,9 +194,9 @@ static void do_catch_up(struct spk_synth *synth)
|
|
|
jiff_max = jiffies + jiffy_delta_val;
|
|
|
}
|
|
|
set_current_state(TASK_RUNNING);
|
|
|
- spk_lock(flags);
|
|
|
+ spin_lock_irqsave(&speakup_info.spinlock, flags);
|
|
|
synth_buffer_getc();
|
|
|
- spk_unlock(flags);
|
|
|
+ spin_unlock_irqrestore(&speakup_info.spinlock, flags);
|
|
|
}
|
|
|
spk_serial_out(PROCSPEECH);
|
|
|
}
|