staging: speakup: change semaphore to completion
In this driver, both function the same way, but we want to eventually kill off semaphores, so a completion is the better choice here. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
019ec6c14f
commit
d6a0de4933
|
@ -10,7 +10,7 @@
|
|||
|
||||
struct spk_ldisc_data {
|
||||
char buf;
|
||||
struct semaphore sem;
|
||||
struct completion completion;
|
||||
bool buf_free;
|
||||
};
|
||||
|
||||
|
@ -55,7 +55,7 @@ static int spk_ttyio_ldisc_open(struct tty_struct *tty)
|
|||
if (!ldisc_data)
|
||||
return -ENOMEM;
|
||||
|
||||
sema_init(&ldisc_data->sem, 0);
|
||||
init_completion(&ldisc_data->completion);
|
||||
ldisc_data->buf_free = true;
|
||||
speakup_tty->disc_data = ldisc_data;
|
||||
|
||||
|
@ -95,7 +95,7 @@ static int spk_ttyio_receive_buf2(struct tty_struct *tty,
|
|||
|
||||
ldisc_data->buf = cp[0];
|
||||
ldisc_data->buf_free = false;
|
||||
up(&ldisc_data->sem);
|
||||
complete(&ldisc_data->completion);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -286,7 +286,8 @@ static unsigned char ttyio_in(int timeout)
|
|||
struct spk_ldisc_data *ldisc_data = speakup_tty->disc_data;
|
||||
char rv;
|
||||
|
||||
if (down_timeout(&ldisc_data->sem, usecs_to_jiffies(timeout)) == -ETIME) {
|
||||
if (wait_for_completion_timeout(&ldisc_data->completion,
|
||||
usecs_to_jiffies(timeout)) == 0) {
|
||||
if (timeout)
|
||||
pr_warn("spk_ttyio: timeout (%d) while waiting for input\n",
|
||||
timeout);
|
||||
|
|
Loading…
Reference in New Issue