diff options
author | Arnd Bergmann <arnd@arndb.de> | 2010-08-06 15:40:30 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-08-10 16:47:44 -0400 |
commit | b07471fa51358ce64cc25e1501544502362e4404 (patch) | |
tree | 0bd1889eb3cbabe51f15cc5e971f9644cdced0f3 /include/linux/tty.h | |
parent | ddcd9fb66ae7f448b517242c10a31d4e17bcad45 (diff) |
tty: implement BTM as mutex instead of BKL
The tty locking now follows the rules for mutexes, so
we can replace the BKL usage with a new subsystem
wide mutex.
Using a regular mutex here will change the behaviour
when blocked on the BTM from spinning to sleeping,
but that should not be visible to the user.
Using the mutex also means that all the BTM is now
covered by lockdep.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/tty.h')
-rw-r--r-- | include/linux/tty.h | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/include/linux/tty.h b/include/linux/tty.h index 0fbafb0b69bf..1437da3ddc62 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
@@ -578,20 +578,12 @@ extern int vt_ioctl(struct tty_struct *tty, struct file *file, | |||
578 | extern long vt_compat_ioctl(struct tty_struct *tty, struct file * file, | 578 | extern long vt_compat_ioctl(struct tty_struct *tty, struct file * file, |
579 | unsigned int cmd, unsigned long arg); | 579 | unsigned int cmd, unsigned long arg); |
580 | 580 | ||
581 | /* tty_mutex.c */ | ||
581 | /* functions for preparation of BKL removal */ | 582 | /* functions for preparation of BKL removal */ |
582 | static inline void tty_lock(void) __acquires(kernel_lock) | 583 | extern void __lockfunc tty_lock(void) __acquires(tty_lock); |
583 | { | 584 | extern void __lockfunc tty_unlock(void) __releases(tty_lock); |
584 | #ifdef CONFIG_LOCK_KERNEL | 585 | extern struct task_struct *__big_tty_mutex_owner; |
585 | /* kernel_locked is 1 for !CONFIG_LOCK_KERNEL */ | 586 | #define tty_locked() (current == __big_tty_mutex_owner) |
586 | WARN_ON(kernel_locked()); | ||
587 | #endif | ||
588 | lock_kernel(); | ||
589 | } | ||
590 | static inline void tty_unlock(void) __releases(kernel_lock) | ||
591 | { | ||
592 | unlock_kernel(); | ||
593 | } | ||
594 | #define tty_locked() (kernel_locked()) | ||
595 | 587 | ||
596 | /* | 588 | /* |
597 | * wait_event_interruptible_tty -- wait for a condition with the tty lock held | 589 | * wait_event_interruptible_tty -- wait for a condition with the tty lock held |