.. | .. |
---|
18 | 18 | extern void debug_rt_mutex_proxy_lock(struct rt_mutex *lock, |
---|
19 | 19 | struct task_struct *powner); |
---|
20 | 20 | extern void debug_rt_mutex_proxy_unlock(struct rt_mutex *lock); |
---|
| 21 | +extern void debug_rt_mutex_deadlock(enum rtmutex_chainwalk chwalk, |
---|
| 22 | + struct rt_mutex_waiter *waiter, |
---|
| 23 | + struct rt_mutex *lock); |
---|
| 24 | +extern void debug_rt_mutex_print_deadlock(struct rt_mutex_waiter *waiter); |
---|
| 25 | +# define debug_rt_mutex_reset_waiter(w) \ |
---|
| 26 | + do { (w)->deadlock_lock = NULL; } while (0) |
---|
21 | 27 | |
---|
22 | 28 | static inline bool debug_rt_mutex_detect_deadlock(struct rt_mutex_waiter *waiter, |
---|
23 | 29 | enum rtmutex_chainwalk walk) |
---|
24 | 30 | { |
---|
25 | 31 | return (waiter != NULL); |
---|
26 | 32 | } |
---|
| 33 | + |
---|
| 34 | +static inline void rt_mutex_print_deadlock(struct rt_mutex_waiter *w) |
---|
| 35 | +{ |
---|
| 36 | + debug_rt_mutex_print_deadlock(w); |
---|
| 37 | +} |
---|