This helper only used by tty_write_message(), it will sleep until BTM lock acquired. Signed-off-by: Jie Liu <jeff.liu@xxxxxxxxxx> --- drivers/tty/tty_mutex.c | 13 +++++++++++++ include/linux/tty.h | 1 + 2 files changed, 14 insertions(+), 0 deletions(-) diff --git a/drivers/tty/tty_mutex.c b/drivers/tty/tty_mutex.c index 9ff986c..e638636 100644 --- a/drivers/tty/tty_mutex.c +++ b/drivers/tty/tty_mutex.c @@ -30,3 +30,16 @@ void __lockfunc tty_unlock(void) mutex_unlock(&big_tty_mutex); } EXPORT_SYMBOL(tty_unlock); + +/* + * Wait until getting the big tty mutex. + * This function only used by tty_write_message(). + */ +void __lockfunc tty_lock_wait(void) +{ + while (!mutex_trylock(&big_tty_mutex)) { + set_current_state(TASK_UNINTERRUPTIBLE); + schedule(); + } +} +EXPORT_SYMBOL(tty_lock_wait); diff --git a/include/linux/tty.h b/include/linux/tty.h index 9f47ab5..5e01e0b 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -607,6 +607,7 @@ extern long vt_compat_ioctl(struct tty_struct *tty, /* functions for preparation of BKL removal */ extern void __lockfunc tty_lock(void) __acquires(tty_lock); extern void __lockfunc tty_unlock(void) __releases(tty_lock); +extern void __lockfunc tty_lock_wait(void) __acquires(tty_lock); /* * this shall be called only from where BTM is held (like close) -- 1.7.9 -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html