]>
Commit | Line | Data |
---|---|---|
b07471fa AB |
1 | #include <linux/tty.h> |
2 | #include <linux/module.h> | |
3 | #include <linux/kallsyms.h> | |
4 | #include <linux/semaphore.h> | |
5 | #include <linux/sched.h> | |
6 | ||
89c8d91e AC |
7 | /* Legacy tty mutex glue */ |
8 | ||
b07471fa AB |
9 | /* |
10 | * Getting the big tty mutex. | |
11 | */ | |
89c8d91e | 12 | |
2febdb63 | 13 | void __lockfunc tty_lock(struct tty_struct *tty) |
b07471fa | 14 | { |
89c8d91e | 15 | if (tty->magic != TTY_MAGIC) { |
7a0c4eda | 16 | pr_err("L Bad %p\n", tty); |
89c8d91e AC |
17 | WARN_ON(1); |
18 | return; | |
19 | } | |
20 | tty_kref_get(tty); | |
2febdb63 | 21 | mutex_lock(&tty->legacy_mutex); |
b07471fa AB |
22 | } |
23 | EXPORT_SYMBOL(tty_lock); | |
24 | ||
89c8d91e | 25 | void __lockfunc tty_unlock(struct tty_struct *tty) |
b07471fa | 26 | { |
89c8d91e | 27 | if (tty->magic != TTY_MAGIC) { |
7a0c4eda | 28 | pr_err("U Bad %p\n", tty); |
89c8d91e AC |
29 | WARN_ON(1); |
30 | return; | |
31 | } | |
32 | mutex_unlock(&tty->legacy_mutex); | |
33 | tty_kref_put(tty); | |
b07471fa AB |
34 | } |
35 | EXPORT_SYMBOL(tty_unlock); | |
89c8d91e | 36 | |
2aff5e2b | 37 | void __lockfunc tty_lock_slave(struct tty_struct *tty) |
89c8d91e | 38 | { |
eef15e2a | 39 | if (tty && tty != tty->link) |
2febdb63 | 40 | tty_lock(tty); |
89c8d91e | 41 | } |
89c8d91e | 42 | |
2aff5e2b | 43 | void __lockfunc tty_unlock_slave(struct tty_struct *tty) |
89c8d91e | 44 | { |
2aff5e2b PH |
45 | if (tty && tty != tty->link) |
46 | tty_unlock(tty); | |
89c8d91e | 47 | } |
2febdb63 PH |
48 | |
49 | void tty_set_lock_subclass(struct tty_struct *tty) | |
50 | { | |
3abf87cd | 51 | lockdep_set_subclass(&tty->legacy_mutex, TTY_LOCK_SLAVE); |
2febdb63 | 52 | } |