| .. | .. |
|---|
| 15 | 15 | |
|---|
| 16 | 16 | #include <linux/rtmutex.h> |
|---|
| 17 | 17 | #include <linux/sched/wake_q.h> |
|---|
| 18 | | -#include <linux/sched/debug.h> |
|---|
| 19 | 18 | |
|---|
| 20 | 19 | /* |
|---|
| 21 | 20 | * This is the control structure for tasks blocked on a rt_mutex, |
|---|
| .. | .. |
|---|
| 30 | 29 | struct rb_node pi_tree_entry; |
|---|
| 31 | 30 | struct task_struct *task; |
|---|
| 32 | 31 | struct rt_mutex *lock; |
|---|
| 32 | +#ifdef CONFIG_DEBUG_RT_MUTEXES |
|---|
| 33 | + unsigned long ip; |
|---|
| 34 | + struct pid *deadlock_task_pid; |
|---|
| 35 | + struct rt_mutex *deadlock_lock; |
|---|
| 36 | +#endif |
|---|
| 33 | 37 | int prio; |
|---|
| 34 | | - bool savestate; |
|---|
| 35 | 38 | u64 deadline; |
|---|
| 36 | 39 | }; |
|---|
| 37 | 40 | |
|---|
| .. | .. |
|---|
| 127 | 130 | /* |
|---|
| 128 | 131 | * PI-futex support (proxy locking functions, etc.): |
|---|
| 129 | 132 | */ |
|---|
| 130 | | -#define PI_WAKEUP_INPROGRESS ((struct rt_mutex_waiter *) 1) |
|---|
| 131 | | -#define PI_REQUEUE_INPROGRESS ((struct rt_mutex_waiter *) 2) |
|---|
| 132 | | - |
|---|
| 133 | 133 | extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); |
|---|
| 134 | 134 | extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, |
|---|
| 135 | 135 | struct task_struct *proxy_owner); |
|---|
| 136 | 136 | extern void rt_mutex_proxy_unlock(struct rt_mutex *lock); |
|---|
| 137 | | -extern void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter, bool savetate); |
|---|
| 137 | +extern void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter); |
|---|
| 138 | 138 | extern int __rt_mutex_start_proxy_lock(struct rt_mutex *lock, |
|---|
| 139 | 139 | struct rt_mutex_waiter *waiter, |
|---|
| 140 | 140 | struct task_struct *task); |
|---|
| .. | .. |
|---|
| 152 | 152 | |
|---|
| 153 | 153 | extern void rt_mutex_futex_unlock(struct rt_mutex *lock); |
|---|
| 154 | 154 | extern bool __rt_mutex_futex_unlock(struct rt_mutex *lock, |
|---|
| 155 | | - struct wake_q_head *wqh, |
|---|
| 156 | | - struct wake_q_head *wq_sleeper); |
|---|
| 155 | + struct wake_q_head *wqh); |
|---|
| 157 | 156 | |
|---|
| 158 | | -extern void rt_mutex_postunlock(struct wake_q_head *wake_q, |
|---|
| 159 | | - struct wake_q_head *wake_sleeper_q); |
|---|
| 160 | | - |
|---|
| 161 | | -/* RW semaphore special interface */ |
|---|
| 162 | | -struct ww_acquire_ctx; |
|---|
| 163 | | - |
|---|
| 164 | | -extern int __rt_mutex_lock_state(struct rt_mutex *lock, int state); |
|---|
| 165 | | -extern int __rt_mutex_trylock(struct rt_mutex *lock); |
|---|
| 166 | | -extern void __rt_mutex_unlock(struct rt_mutex *lock); |
|---|
| 167 | | -int __sched rt_mutex_slowlock_locked(struct rt_mutex *lock, int state, |
|---|
| 168 | | - struct hrtimer_sleeper *timeout, |
|---|
| 169 | | - enum rtmutex_chainwalk chwalk, |
|---|
| 170 | | - struct ww_acquire_ctx *ww_ctx, |
|---|
| 171 | | - struct rt_mutex_waiter *waiter); |
|---|
| 172 | | -void __sched rt_spin_lock_slowlock_locked(struct rt_mutex *lock, |
|---|
| 173 | | - struct rt_mutex_waiter *waiter, |
|---|
| 174 | | - unsigned long flags); |
|---|
| 175 | | -void __sched rt_spin_lock_slowunlock(struct rt_mutex *lock); |
|---|
| 157 | +extern void rt_mutex_postunlock(struct wake_q_head *wake_q); |
|---|
| 176 | 158 | |
|---|
| 177 | 159 | #ifdef CONFIG_DEBUG_RT_MUTEXES |
|---|
| 178 | 160 | # include "rtmutex-debug.h" |
|---|