Lines Matching refs:lock

45  * @lock:		Pointer to the rt_mutex on which the waiter blocks
49 * @tree is ordered by @lock->wait_lock
50 * @pi_tree is ordered by rt_mutex_owner(@lock)->pi_lock
56 struct rt_mutex_base *lock;
64 * @head: The regular wake_q_head for sleeping lock variants
65 * @rtlock_task: Task pointer for RT lock (spin/rwlock) wakeups
81 extern void rt_mutex_init_proxy_locked(struct rt_mutex_base *lock,
83 extern void rt_mutex_proxy_unlock(struct rt_mutex_base *lock);
84 extern int __rt_mutex_start_proxy_lock(struct rt_mutex_base *lock,
87 extern int rt_mutex_start_proxy_lock(struct rt_mutex_base *lock,
90 extern int rt_mutex_wait_proxy_lock(struct rt_mutex_base *lock,
93 extern bool rt_mutex_cleanup_proxy_lock(struct rt_mutex_base *lock,
99 extern void rt_mutex_futex_unlock(struct rt_mutex_base *lock);
100 extern bool __rt_mutex_futex_unlock(struct rt_mutex_base *lock,
110 static inline int rt_mutex_has_waiters(struct rt_mutex_base *lock)
112 return !RB_EMPTY_ROOT(&lock->waiters.rb_root);
117 * @lock. This is solely comparing pointers and not derefencing the
120 static inline bool rt_mutex_waiter_is_top_waiter(struct rt_mutex_base *lock,
123 struct rb_node *leftmost = rb_first_cached(&lock->waiters);
128 static inline struct rt_mutex_waiter *rt_mutex_top_waiter(struct rt_mutex_base *lock)
130 struct rb_node *leftmost = rb_first_cached(&lock->waiters);
133 lockdep_assert_held(&lock->wait_lock);
137 BUG_ON(w->lock != lock);
157 static inline struct task_struct *rt_mutex_owner(struct rt_mutex_base *lock)
159 unsigned long owner = (unsigned long) READ_ONCE(lock->owner);
168 * RT_MUTEX_MIN_CHAINWALK: Stops the lock chain walk when there are
172 * walk of the lock chain.
179 static inline void __rt_mutex_base_init(struct rt_mutex_base *lock)
181 raw_spin_lock_init(&lock->wait_lock);
182 lock->waiters = RB_ROOT_CACHED;
183 lock->owner = NULL;
187 static inline void debug_rt_mutex_unlock(struct rt_mutex_base *lock)
190 DEBUG_LOCKS_WARN_ON(rt_mutex_owner(lock) != current);
193 static inline void debug_rt_mutex_proxy_unlock(struct rt_mutex_base *lock)
196 DEBUG_LOCKS_WARN_ON(!rt_mutex_owner(lock));
228 static inline struct task_struct *rt_mutex_owner(struct rt_mutex_base *lock)