aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/tty.h
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2010-08-06 15:40:30 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-08-10 16:47:44 -0400
commitb07471fa51358ce64cc25e1501544502362e4404 (patch)
tree0bd1889eb3cbabe51f15cc5e971f9644cdced0f3 /include/linux/tty.h
parentddcd9fb66ae7f448b517242c10a31d4e17bcad45 (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.h18
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,
578extern long vt_compat_ioctl(struct tty_struct *tty, struct file * file, 578extern 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 */
582static inline void tty_lock(void) __acquires(kernel_lock) 583extern void __lockfunc tty_lock(void) __acquires(tty_lock);
583{ 584extern void __lockfunc tty_unlock(void) __releases(tty_lock);
584#ifdef CONFIG_LOCK_KERNEL 585extern 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}
590static 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