| .. | .. |
|---|
| 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 | +} |
|---|