diff options
Diffstat (limited to 'include/linux/tty.h')
| -rw-r--r-- | include/linux/tty.h | 23 | 
1 files changed, 14 insertions, 9 deletions
diff --git a/include/linux/tty.h b/include/linux/tty.h index 9f47ab540f6..4990ef2b1fb 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -268,6 +268,7 @@ struct tty_struct {  	struct mutex ldisc_mutex;  	struct tty_ldisc *ldisc; +	struct mutex legacy_mutex;  	struct mutex termios_mutex;  	spinlock_t ctrl_lock;  	/* Termios values are protected by the termios mutex */ @@ -605,8 +606,12 @@ extern long vt_compat_ioctl(struct tty_struct *tty,  /* tty_mutex.c */  /* 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(struct tty_struct *tty); +extern void __lockfunc tty_unlock(struct tty_struct *tty); +extern void __lockfunc tty_lock_pair(struct tty_struct *tty, +				struct tty_struct *tty2); +extern void __lockfunc tty_unlock_pair(struct tty_struct *tty, +				struct tty_struct *tty2);  /*   * this shall be called only from where BTM is held (like close) @@ -621,9 +626,9 @@ extern void __lockfunc tty_unlock(void) __releases(tty_lock);  static inline void tty_wait_until_sent_from_close(struct tty_struct *tty,  		long timeout)  { -	tty_unlock(); /* tty->ops->close holds the BTM, drop it while waiting */ +	tty_unlock(tty); /* tty->ops->close holds the BTM, drop it while waiting */  	tty_wait_until_sent(tty, timeout); -	tty_lock(); +	tty_lock(tty);  }  /* @@ -638,16 +643,16 @@ static inline void tty_wait_until_sent_from_close(struct tty_struct *tty,   *   * Do not use in new code.   */ -#define wait_event_interruptible_tty(wq, condition)			\ +#define wait_event_interruptible_tty(tty, wq, condition)		\  ({									\  	int __ret = 0;							\  	if (!(condition)) {						\ -		__wait_event_interruptible_tty(wq, condition, __ret);	\ +		__wait_event_interruptible_tty(tty, wq, condition, __ret);	\  	}								\  	__ret;								\  }) -#define __wait_event_interruptible_tty(wq, condition, ret)		\ +#define __wait_event_interruptible_tty(tty, wq, condition, ret)		\  do {									\  	DEFINE_WAIT(__wait);						\  									\ @@ -656,9 +661,9 @@ do {									\  		if (condition)						\  			break;						\  		if (!signal_pending(current)) {				\ -			tty_unlock();					\ +			tty_unlock(tty);					\  			schedule();					\ -			tty_lock();					\ +			tty_lock(tty);					\  			continue;					\  		}							\  		ret = -ERESTARTSYS;					\  |