Home
last modified time | relevance | path

Searched refs:lock (Results 1 – 25 of 2712) sorted by relevance

12345678910>>...109

/linux/kernel/locking/
H A Dmutex.c35 #include <trace/events/lock.h>
46 static void __mutex_init_generic(struct mutex *lock) in __mutex_init_generic() argument
48 atomic_long_set(&lock->owner, 0); in __mutex_init_generic()
49 scoped_guard (raw_spinlock_init, &lock->wait_lock) { in __mutex_init_generic()
50 lock->first_waiter = NULL; in __mutex_init_generic()
53 osq_lock_init(&lock->osq); in __mutex_init_generic()
55 debug_mutex_init(lock); in __mutex_init_generic()
63 bool mutex_is_locked(struct mutex *lock) in mutex_is_locked() argument
65 return __mutex_owner(lock) != NULL; in mutex_is_locked()
75 unsigned long mutex_get_owner(struct mutex *lock) in mutex_get_owner() argument
85 __mutex_trylock_common(struct mutex * lock,bool handoff) __mutex_trylock_common() argument
124 __mutex_trylock_or_handoff(struct mutex * lock,bool handoff) __mutex_trylock_or_handoff() argument
132 __mutex_trylock(struct mutex * lock) __mutex_trylock() argument
143 mutex_init_generic(struct mutex * lock) mutex_init_generic() argument
153 __mutex_trylock_fast(struct mutex * lock) __mutex_trylock_fast() argument
167 __mutex_unlock_fast(struct mutex * lock) __mutex_unlock_fast() argument
177 mutex_init_lockdep(struct mutex * lock,const char * name,struct lock_class_key * key) mutex_init_lockdep() argument
190 __mutex_set_flag(struct mutex * lock,unsigned long flag) __mutex_set_flag() argument
195 __mutex_clear_flag(struct mutex * lock,unsigned long flag) __mutex_clear_flag() argument
208 __mutex_add_waiter(struct mutex * lock,struct mutex_waiter * waiter,struct mutex_waiter * pos) __mutex_add_waiter() argument
241 __mutex_remove_waiter(struct mutex * lock,struct mutex_waiter * waiter) __mutex_remove_waiter() argument
263 __mutex_handoff(struct mutex * lock,struct task_struct * task) __mutex_handoff() argument
314 mutex_lock(struct mutex * lock) mutex_lock() argument
331 __mutex_trylock_or_owner(struct mutex * lock) __mutex_trylock_or_owner() argument
337 ww_mutex_spin_on_owner(struct mutex * lock,struct ww_acquire_ctx * ww_ctx,struct mutex_waiter * waiter) ww_mutex_spin_on_owner() argument
385 mutex_spin_on_owner(struct mutex * lock,struct task_struct * owner,struct ww_acquire_ctx * ww_ctx,struct mutex_waiter * waiter) mutex_spin_on_owner() argument
425 mutex_can_spin_on_owner(struct mutex * lock) mutex_can_spin_on_owner() argument
474 mutex_optimistic_spin(struct mutex * lock,struct ww_acquire_ctx * ww_ctx,struct mutex_waiter * waiter) mutex_optimistic_spin() argument
550 mutex_optimistic_spin(struct mutex * lock,struct ww_acquire_ctx * ww_ctx,struct mutex_waiter * waiter) mutex_optimistic_spin() argument
576 mutex_unlock(struct mutex * lock) mutex_unlock() argument
597 ww_mutex_unlock(struct ww_mutex * lock) ww_mutex_unlock() argument
609 __mutex_lock_common(struct mutex * lock,unsigned int state,unsigned int subclass,struct lockdep_map * nest_lock,unsigned long ip,struct ww_acquire_ctx * ww_ctx,const bool use_ww_ctx) __mutex_lock_common() argument
816 __mutex_lock(struct mutex * lock,unsigned int state,unsigned int subclass,struct lockdep_map * nest_lock,unsigned long ip) __mutex_lock() argument
824 __ww_mutex_lock(struct mutex * lock,unsigned int state,unsigned int subclass,unsigned long ip,struct ww_acquire_ctx * ww_ctx) __ww_mutex_lock() argument
871 mutex_lock_nested(struct mutex * lock,unsigned int subclass) mutex_lock_nested() argument
880 _mutex_lock_nest_lock(struct mutex * lock,struct lockdep_map * nest) _mutex_lock_nest_lock() argument
888 _mutex_lock_killable(struct mutex * lock,unsigned int subclass,struct lockdep_map * nest) _mutex_lock_killable() argument
896 mutex_lock_interruptible_nested(struct mutex * lock,unsigned int subclass) mutex_lock_interruptible_nested() argument
903 mutex_lock_io_nested(struct mutex * lock,unsigned int subclass) mutex_lock_io_nested() argument
918 ww_mutex_deadlock_injection(struct ww_mutex * lock,struct ww_acquire_ctx * ctx) ww_mutex_deadlock_injection() argument
945 ww_mutex_lock(struct ww_mutex * lock,struct ww_acquire_ctx * ctx) ww_mutex_lock() argument
960 ww_mutex_lock_interruptible(struct ww_mutex * lock,struct ww_acquire_ctx * ctx) ww_mutex_lock_interruptible() argument
980 __mutex_unlock_slowpath(struct mutex * lock,unsigned long ip) __mutex_unlock_slowpath() argument
1055 mutex_lock_interruptible(struct mutex * lock) mutex_lock_interruptible() argument
1079 mutex_lock_killable(struct mutex * lock) mutex_lock_killable() argument
1100 mutex_lock_io(struct mutex * lock) mutex_lock_io() argument
1111 __mutex_lock_slowpath(struct mutex * lock) __mutex_lock_slowpath() argument
1119 __mutex_lock_killable_slowpath(struct mutex * lock) __mutex_lock_killable_slowpath() argument
1126 __mutex_lock_interruptible_slowpath(struct mutex * lock) __mutex_lock_interruptible_slowpath() argument
1133 __ww_mutex_lock_slowpath(struct ww_mutex * lock,struct ww_acquire_ctx * ctx) __ww_mutex_lock_slowpath() argument
1141 __ww_mutex_lock_interruptible_slowpath(struct ww_mutex * lock,struct ww_acquire_ctx * ctx) __ww_mutex_lock_interruptible_slowpath() argument
1166 mutex_trylock(struct mutex * lock) mutex_trylock() argument
1173 _mutex_trylock_nest_lock(struct mutex * lock,struct lockdep_map * nest_lock) _mutex_trylock_nest_lock() argument
1189 ww_mutex_lock(struct ww_mutex * lock,struct ww_acquire_ctx * ctx) ww_mutex_lock() argument
1204 ww_mutex_lock_interruptible(struct ww_mutex * lock,struct ww_acquire_ctx * ctx) ww_mutex_lock_interruptible() argument
1231 atomic_dec_and_mutex_lock(atomic_t * cnt,struct mutex * lock) atomic_dec_and_mutex_lock() argument
[all...]
H A Drtmutex_api.c35 * Debug aware fast / slowpath lock,trylock,unlock
40 static __always_inline int __rt_mutex_lock_common(struct rt_mutex *lock, in __rt_mutex_lock_common() argument
44 __cond_acquires(0, lock) in __rt_mutex_lock_common()
49 mutex_acquire_nest(&lock->dep_map, subclass, 0, nest_lock, _RET_IP_); in __rt_mutex_lock_common()
50 ret = __rt_mutex_lock(&lock->rtmutex, state); in __rt_mutex_lock_common()
52 mutex_release(&lock->dep_map, _RET_IP_); in __rt_mutex_lock_common()
64 * rt_mutex_lock_nested - lock a rt_mutex
66 * @lock: the rt_mutex to be locked
69 void __sched rt_mutex_lock_nested(struct rt_mutex *lock, unsigned int subclass) in rt_mutex_lock_nested()
71 if (__rt_mutex_lock_common(lock, TASK_UNINTERRUPTIBL in rt_mutex_lock_nested()
68 rt_mutex_lock_nested(struct rt_mutex * lock,unsigned int subclass) rt_mutex_lock_nested() argument
74 _rt_mutex_lock_nest_lock(struct rt_mutex * lock,struct lockdep_map * nest_lock) _rt_mutex_lock_nest_lock() argument
87 rt_mutex_lock(struct rt_mutex * lock) rt_mutex_lock() argument
103 rt_mutex_lock_interruptible(struct rt_mutex * lock) rt_mutex_lock_interruptible() argument
118 rt_mutex_lock_killable(struct rt_mutex * lock) rt_mutex_lock_killable() argument
136 rt_mutex_trylock(struct rt_mutex * lock) rt_mutex_trylock() argument
156 rt_mutex_unlock(struct rt_mutex * lock) rt_mutex_unlock() argument
166 rt_mutex_futex_trylock(struct rt_mutex_base * lock) rt_mutex_futex_trylock() argument
171 __rt_mutex_futex_trylock(struct rt_mutex_base * lock) __rt_mutex_futex_trylock() argument
183 __rt_mutex_futex_unlock(struct rt_mutex_base * lock,struct rt_wake_q_head * wqh) __rt_mutex_futex_unlock() argument
206 rt_mutex_futex_unlock(struct rt_mutex_base * lock) rt_mutex_futex_unlock() argument
231 __rt_mutex_init(struct rt_mutex * lock,const char * name,struct lock_class_key * key) __rt_mutex_init() argument
254 rt_mutex_init_proxy_locked(struct rt_mutex_base * lock,struct task_struct * proxy_owner) rt_mutex_init_proxy_locked() argument
285 rt_mutex_proxy_unlock(struct rt_mutex_base * lock) rt_mutex_proxy_unlock() argument
311 __rt_mutex_start_proxy_lock(struct rt_mutex_base * lock,struct rt_mutex_waiter * waiter,struct task_struct * task,struct wake_q_head * wake_q) __rt_mutex_start_proxy_lock() argument
359 rt_mutex_start_proxy_lock(struct rt_mutex_base * lock,struct rt_mutex_waiter * waiter,struct task_struct * task) rt_mutex_start_proxy_lock() argument
395 rt_mutex_wait_proxy_lock(struct rt_mutex_base * lock,struct hrtimer_sleeper * to,struct rt_mutex_waiter * waiter) rt_mutex_wait_proxy_lock() argument
435 rt_mutex_cleanup_proxy_lock(struct rt_mutex_base * lock,struct rt_mutex_waiter * waiter) rt_mutex_cleanup_proxy_lock() argument
524 __mutex_lock_common(struct mutex * lock,unsigned int state,unsigned int subclass,struct lockdep_map * nest_lock,unsigned long ip) __mutex_lock_common() argument
551 mutex_lock_nested(struct mutex * lock,unsigned int subclass) mutex_lock_nested() argument
557 _mutex_lock_nest_lock(struct mutex * lock,struct lockdep_map * nest_lock) _mutex_lock_nest_lock() argument
564 mutex_lock_interruptible_nested(struct mutex * lock,unsigned int subclass) mutex_lock_interruptible_nested() argument
571 _mutex_lock_killable(struct mutex * lock,unsigned int subclass,struct lockdep_map * nest_lock) _mutex_lock_killable() argument
578 mutex_lock_io_nested(struct mutex * lock,unsigned int subclass) mutex_lock_io_nested() argument
590 _mutex_trylock_nest_lock(struct mutex * lock,struct lockdep_map * nest_lock) _mutex_trylock_nest_lock() argument
613 mutex_lock(struct mutex * lock) mutex_lock() argument
619 mutex_lock_interruptible(struct mutex * lock) mutex_lock_interruptible() argument
625 mutex_lock_killable(struct mutex * lock) mutex_lock_killable() argument
631 mutex_lock_io(struct mutex * lock) mutex_lock_io() argument
640 mutex_trylock(struct mutex * lock) mutex_trylock() argument
650 mutex_unlock(struct mutex * lock) mutex_unlock() argument
[all...]
H A Dww_mutex.h23 __ww_waiter_first(struct mutex *lock) in __ww_waiter_first() argument
24 __must_hold(&lock->wait_lock) in __ww_waiter_first()
26 return lock->first_waiter; in __ww_waiter_first()
35 __ww_waiter_next(struct mutex *lock, struct mutex_waiter *w) in __ww_waiter_next() argument
36 __must_hold(&lock->wait_lock) in __ww_waiter_next()
43 if (lock->first_waiter == w) in __ww_waiter_next()
55 __ww_waiter_prev(struct mutex *lock, struct mutex_waiter *w) in __ww_waiter_prev() argument
56 __must_hold(&lock->wait_lock) in __ww_waiter_prev()
62 if (lock->first_waiter == w) in __ww_waiter_prev()
69 __ww_waiter_last(struct mutex *lock) in __ww_waiter_last() argument
80 __ww_waiter_add(struct mutex * lock,struct mutex_waiter * waiter,struct mutex_waiter * pos) __ww_waiter_add() argument
87 __ww_mutex_owner(struct mutex * lock) __ww_mutex_owner() argument
93 __ww_mutex_has_waiters(struct mutex * lock) __ww_mutex_has_waiters() argument
98 lock_wait_lock(struct mutex * lock,unsigned long * flags) lock_wait_lock() argument
104 unlock_wait_lock(struct mutex * lock,unsigned long * flags) unlock_wait_lock() argument
110 lockdep_assert_wait_lock_held(struct mutex * lock) lockdep_assert_wait_lock_held() argument
123 __ww_waiter_first(struct rt_mutex * lock) __ww_waiter_first() argument
133 __ww_waiter_next(struct rt_mutex * lock,struct rt_mutex_waiter * w) __ww_waiter_next() argument
142 __ww_waiter_prev(struct rt_mutex * lock,struct rt_mutex_waiter * w) __ww_waiter_prev() argument
151 __ww_waiter_last(struct rt_mutex * lock) __ww_waiter_last() argument
161 __ww_waiter_add(struct rt_mutex * lock,struct rt_mutex_waiter * waiter,struct rt_mutex_waiter * pos) __ww_waiter_add() argument
167 __ww_mutex_owner(struct rt_mutex * lock) __ww_mutex_owner() argument
173 __ww_mutex_has_waiters(struct rt_mutex * lock) __ww_mutex_has_waiters() argument
179 lock_wait_lock(struct rt_mutex * lock,unsigned long * flags) lock_wait_lock() argument
185 unlock_wait_lock(struct rt_mutex * lock,unsigned long * flags) unlock_wait_lock() argument
191 lockdep_assert_wait_lock_held(struct rt_mutex * lock) lockdep_assert_wait_lock_held() argument
312 __ww_mutex_die(struct MUTEX * lock,struct MUTEX_WAITER * waiter,struct ww_acquire_ctx * ww_ctx,struct wake_q_head * wake_q) __ww_mutex_die() argument
341 __ww_mutex_wound(struct MUTEX * lock,struct ww_acquire_ctx * ww_ctx,struct ww_acquire_ctx * hold_ctx,struct wake_q_head * wake_q) __ww_mutex_wound() argument
408 __ww_mutex_check_waiters(struct MUTEX * lock,struct ww_acquire_ctx * ww_ctx,struct wake_q_head * wake_q) __ww_mutex_check_waiters() argument
433 ww_mutex_set_context_fastpath(struct ww_mutex * lock,struct ww_acquire_ctx * ctx) ww_mutex_set_context_fastpath() argument
476 __ww_mutex_kill(struct MUTEX * lock,struct ww_acquire_ctx * ww_ctx) __ww_mutex_kill() argument
504 __ww_mutex_check_kill(struct MUTEX * lock,struct MUTEX_WAITER * waiter,struct ww_acquire_ctx * ctx) __ww_mutex_check_kill() argument
554 __ww_mutex_add_waiter(struct MUTEX_WAITER * waiter,struct MUTEX * lock,struct ww_acquire_ctx * ww_ctx,struct wake_q_head * wake_q) __ww_mutex_add_waiter() argument
625 __ww_mutex_unlock(struct ww_mutex * lock) __ww_mutex_unlock() argument
[all...]
H A Drtmutex.c27 #include <trace/events/lock.h>
37 struct rt_mutex *lock, in __ww_mutex_add_waiter() argument
44 static inline void __ww_mutex_check_waiters(struct rt_mutex *lock, in __ww_mutex_check_waiters() argument
50 static inline void ww_mutex_lock_acquired(struct ww_mutex *lock, in ww_mutex_lock_acquired() argument
55 static inline int __ww_mutex_check_kill(struct rt_mutex *lock, in __ww_mutex_check_kill() argument
69 * lock->owner state tracking:
71 * lock->owner holds the task_struct pointer of the owner. Bit 0
72 * is used to keep track of the "lock has waiters" state.
75 * NULL 0 lock is free (fast acquire possible)
76 * NULL 1 lock i
96 rt_mutex_owner_encode(struct rt_mutex_base * lock,struct task_struct * owner) rt_mutex_owner_encode() argument
108 rt_mutex_set_owner(struct rt_mutex_base * lock,struct task_struct * owner) rt_mutex_set_owner() argument
118 rt_mutex_clear_owner(struct rt_mutex_base * lock) rt_mutex_clear_owner() argument
125 clear_rt_mutex_waiters(struct rt_mutex_base * lock) clear_rt_mutex_waiters() argument
133 fixup_rt_mutex_waiters(struct rt_mutex_base * lock,bool acquire_lock) fixup_rt_mutex_waiters() argument
222 rt_mutex_cmpxchg_acquire(struct rt_mutex_base * lock,struct task_struct * old,struct task_struct * new) rt_mutex_cmpxchg_acquire() argument
229 rt_mutex_try_acquire(struct rt_mutex_base * lock) rt_mutex_try_acquire() argument
234 rt_mutex_cmpxchg_release(struct rt_mutex_base * lock,struct task_struct * old,struct task_struct * new) rt_mutex_cmpxchg_release() argument
246 mark_rt_mutex_waiters(struct rt_mutex_base * lock) mark_rt_mutex_waiters() argument
270 unlock_rt_mutex_safe(struct rt_mutex_base * lock,unsigned long flags) unlock_rt_mutex_safe() argument
306 rt_mutex_cmpxchg_acquire(struct rt_mutex_base * lock,struct task_struct * old,struct task_struct * new) rt_mutex_cmpxchg_acquire() argument
316 rt_mutex_try_acquire(struct rt_mutex_base * lock) rt_mutex_try_acquire() argument
328 rt_mutex_cmpxchg_release(struct rt_mutex_base * lock,struct task_struct * old,struct task_struct * new) rt_mutex_cmpxchg_release() argument
335 mark_rt_mutex_waiters(struct rt_mutex_base * lock) mark_rt_mutex_waiters() argument
345 unlock_rt_mutex_safe(struct rt_mutex_base * lock,unsigned long flags) unlock_rt_mutex_safe() argument
486 rt_mutex_enqueue(struct rt_mutex_base * lock,struct rt_mutex_waiter * waiter) rt_mutex_enqueue() argument
494 rt_mutex_dequeue(struct rt_mutex_base * lock,struct rt_mutex_waiter * waiter) rt_mutex_dequeue() argument
533 rt_mutex_adjust_prio(struct rt_mutex_base * lock,struct task_struct * p) rt_mutex_adjust_prio() argument
694 struct rt_mutex_base *lock; rt_mutex_adjust_prio_chain() local
1093 try_to_take_rt_mutex(struct rt_mutex_base * lock,struct task_struct * task,struct rt_mutex_waiter * waiter) try_to_take_rt_mutex() argument
1209 task_blocks_on_rt_mutex(struct rt_mutex_base * lock,struct rt_mutex_waiter * waiter,struct task_struct * task,struct ww_acquire_ctx * ww_ctx,enum rtmutex_chainwalk chwalk,struct wake_q_head * wake_q) task_blocks_on_rt_mutex() argument
1321 mark_wakeup_next_waiter(struct rt_wake_q_head * wqh,struct rt_mutex_base * lock) mark_wakeup_next_waiter() argument
1366 __rt_mutex_slowtrylock(struct rt_mutex_base * lock) __rt_mutex_slowtrylock() argument
1383 rt_mutex_slowtrylock(struct rt_mutex_base * lock) rt_mutex_slowtrylock() argument
1409 __rt_mutex_trylock(struct rt_mutex_base * lock) __rt_mutex_trylock() argument
1420 rt_mutex_slowunlock(struct rt_mutex_base * lock) rt_mutex_slowunlock() argument
1481 __rt_mutex_unlock(struct rt_mutex_base * lock) __rt_mutex_unlock() argument
1490 rtmutex_spin_on_owner(struct rt_mutex_base * lock,struct rt_mutex_waiter * waiter,struct task_struct * owner) rtmutex_spin_on_owner() argument
1527 rtmutex_spin_on_owner(struct rt_mutex_base * lock,struct rt_mutex_waiter * waiter,struct task_struct * owner) rtmutex_spin_on_owner() argument
1550 remove_waiter(struct rt_mutex_base * lock,struct rt_mutex_waiter * waiter) remove_waiter() argument
1620 rt_mutex_slowlock_block(struct rt_mutex_base * lock,struct ww_acquire_ctx * ww_ctx,unsigned int state,struct hrtimer_sleeper * timeout,struct rt_mutex_waiter * waiter,struct wake_q_head * wake_q) rt_mutex_slowlock_block() argument
1677 rt_mutex_handle_deadlock(int res,int detect_deadlock,struct rt_mutex_base * lock,struct rt_mutex_waiter * w) rt_mutex_handle_deadlock() argument
1710 __rt_mutex_slowlock(struct rt_mutex_base * lock,struct ww_acquire_ctx * ww_ctx,unsigned int state,enum rtmutex_chainwalk chwalk,struct rt_mutex_waiter * waiter,struct wake_q_head * wake_q) __rt_mutex_slowlock() argument
1770 __rt_mutex_slowlock_locked(struct rt_mutex_base * lock,struct ww_acquire_ctx * ww_ctx,unsigned int state,struct wake_q_head * wake_q) __rt_mutex_slowlock_locked() argument
1796 rt_mutex_slowlock(struct rt_mutex_base * lock,struct ww_acquire_ctx * ww_ctx,unsigned int state) rt_mutex_slowlock() argument
1829 __rt_mutex_lock(struct rt_mutex_base * lock,unsigned int state) __rt_mutex_lock() argument
1851 rtlock_slowlock_locked(struct rt_mutex_base * lock,struct wake_q_head * wake_q) rtlock_slowlock_locked() argument
1911 rtlock_slowlock(struct rt_mutex_base * lock) rtlock_slowlock() argument
[all...]
H A Dqspinlock_paravirt.h81 static inline bool pv_hybrid_queued_unfair_trylock(struct qspinlock *lock) in pv_hybrid_queued_unfair_trylock() argument
88 int val = atomic_read(&lock->val); in pv_hybrid_queued_unfair_trylock()
92 try_cmpxchg_acquire(&lock->locked, &old, _Q_LOCKED_VAL)) { in pv_hybrid_queued_unfair_trylock()
110 static __always_inline void set_pending(struct qspinlock *lock) in set_pending() argument
112 WRITE_ONCE(lock->pending, 1); in set_pending()
120 static __always_inline bool trylock_clear_pending(struct qspinlock *lock) in trylock_clear_pending() argument
124 return !READ_ONCE(lock->locked) && in trylock_clear_pending()
125 try_cmpxchg_acquire(&lock->locked_pending, &old, _Q_LOCKED_VAL); in trylock_clear_pending()
128 static __always_inline void set_pending(struct qspinlock *lock) in set_pending() argument
130 atomic_or(_Q_PENDING_VAL, &lock->val); in set_pending()
[all …]
H A Dqspinlock.c25 #include <trace/events/lock.h>
36 * MCS lock. A copy of the original MCS lock paper ("Algorithms for Scalable
42 * This queued spinlock implementation is based on the MCS lock, however to
46 * In particular; where the traditional MCS lock consists of a tail pointer
55 * number. With one byte for the lock value and 3 bytes for the tail, only a
56 * 32-bit word is now needed. Even though we only need 1 bit for the lock,
60 * We also change the first spinner to spin on the lock bit instead of its
61 * node; whereby avoiding the need to carry a node from lock to unlock, and
62 * preserving existing lock AP
149 clear_pending(struct qspinlock * lock) clear_pending() argument
162 clear_pending_set_locked(struct qspinlock * lock) clear_pending_set_locked() argument
177 xchg_tail(struct qspinlock * lock,u32 tail) xchg_tail() argument
195 clear_pending(struct qspinlock * lock) clear_pending() argument
206 clear_pending_set_locked(struct qspinlock * lock) clear_pending_set_locked() argument
221 xchg_tail(struct qspinlock * lock,u32 tail) xchg_tail() argument
247 queued_fetch_set_pending_acquire(struct qspinlock * lock) queued_fetch_set_pending_acquire() argument
259 set_locked(struct qspinlock * lock) set_locked() argument
273 __pv_kick_node(struct qspinlock * lock,struct mcs_spinlock * node) __pv_kick_node() argument
275 __pv_wait_head_or_lock(struct qspinlock * lock,struct mcs_spinlock * node) __pv_wait_head_or_lock() argument
313 queued_spin_lock_slowpath(struct qspinlock * lock,u32 val) queued_spin_lock_slowpath() argument
[all...]
H A Dqrwlock.c21 void __lockfunc queued_read_lock_slowpath(struct qrwlock *lock) in queued_read_lock_slowpath() argument
33 atomic_cond_read_acquire(&lock->cnts, !(VAL & _QW_LOCKED)); in queued_read_lock_slowpath()
36 atomic_sub(_QR_BIAS, &lock->cnts); in queued_read_lock_slowpath()
38 trace_contention_begin(lock, LCB_F_SPIN | LCB_F_READ); in queued_read_lock_slowpath()
43 arch_spin_lock(&lock->wait_lock); in queued_read_lock_slowpath()
44 atomic_add(_QR_BIAS, &lock->cnts); in queued_read_lock_slowpath()
51 atomic_cond_read_acquire(&lock->cnts, !(VAL & _QW_LOCKED)); in queued_read_lock_slowpath()
56 arch_spin_unlock(&lock->wait_lock); in queued_read_lock_slowpath()
58 trace_contention_end(lock, 0); in queued_read_lock_slowpath()
66 void __lockfunc queued_write_lock_slowpath(struct qrwlock *lock) in queued_write_lock_slowpath() argument
[all …]
/linux/include/linux/
H A Dlocal_lock_internal.h81 #define __local_lock_init(lock) \ argument
85 debug_check_no_locks_freed((void *)lock, sizeof(*lock));\
86 lockdep_init_map_type(&(lock)->dep_map, #lock, &__key, \
89 local_lock_debug_init(lock); \
92 #define __local_trylock_init(lock) \ argument
94 __local_lock_init((local_lock_t *)lock); \
97 #define __spinlock_nested_bh_init(lock) \ argument
101 debug_check_no_locks_freed((void *)lock, sizeof(*lock));\
102 lockdep_init_map_type(&(lock)->dep_map, #lock, &__key, \
105 local_lock_debug_init(lock); \
[all …]
/linux/arch/alpha/include/asm/
H A Dspinlock.h17 #define arch_spin_is_locked(x) ((x)->lock != 0)
19 static inline int arch_spin_value_unlocked(arch_spinlock_t lock) in arch_spin_value_unlocked() argument
21 return lock.lock == 0; in arch_spin_value_unlocked()
24 static inline void arch_spin_unlock(arch_spinlock_t * lock) in arch_spin_unlock() argument
27 lock->lock = 0; in arch_spin_unlock()
30 static inline void arch_spin_lock(arch_spinlock_t * lock) in arch_spin_lock() argument
46 : "=&r" (tmp), "=m" (lock->lock) in arch_spin_lock()
47 : "m"(lock->lock) : "memory"); in arch_spin_lock()
50 static inline int arch_spin_trylock(arch_spinlock_t *lock) in arch_spin_trylock() argument
52 return !test_and_set_bit(0, &lock->lock); in arch_spin_trylock()
[all …]
/linux/drivers/md/persistent-data/
H A Ddm-block-manager.c45 spinlock_t lock; member
61 static unsigned int __find_holder(struct block_lock *lock, in __find_holder() argument
67 if (lock->holders[i] == task) in __find_holder()
75 static void __add_holder(struct block_lock *lock, struct task_struct *task) in __add_holder() argument
77 unsigned int h = __find_holder(lock, NULL); in __add_holder()
83 lock->holders[h] = task; in __add_holder()
86 t = lock->traces + h; in __add_holder()
92 static void __del_holder(struct block_lock *lock, struct task_struct *task) in __del_holder() argument
94 unsigned int h = __find_holder(lock, task); in __del_holder()
96 lock->holders[h] = NULL; in __del_holder()
[all …]
/linux/fs/ocfs2/dlm/
H A Ddlmast.c35 struct dlm_lock *lock);
36 static int dlm_should_cancel_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock);
47 static int dlm_should_cancel_bast(struct dlm_ctxt *dlm, struct dlm_lock *lock) in dlm_should_cancel_bast() argument
50 assert_spin_locked(&lock->spinlock); in dlm_should_cancel_bast()
52 if (lock->ml.highest_blocked == LKM_IVMODE) in dlm_should_cancel_bast()
54 BUG_ON(lock->ml.highest_blocked == LKM_NLMODE); in dlm_should_cancel_bast()
56 if (lock->bast_pending && in dlm_should_cancel_bast()
57 list_empty(&lock->bast_list)) in dlm_should_cancel_bast()
61 if (lock->ml.type == LKM_EXMODE) in dlm_should_cancel_bast()
64 else if (lock->ml.type == LKM_NLMODE) in dlm_should_cancel_bast()
[all …]
H A Ddlmlock.c45 struct dlm_lock *lock, int flags);
49 static void dlm_lock_detach_lockres(struct dlm_lock *lock);
74 struct dlm_lock *lock) in dlm_can_grant_new_lock() argument
79 if (!dlm_lock_compatible(tmplock->ml.type, lock->ml.type)) in dlm_can_grant_new_lock()
84 if (!dlm_lock_compatible(tmplock->ml.type, lock->ml.type)) in dlm_can_grant_new_lock()
87 lock->ml.type)) in dlm_can_grant_new_lock()
103 struct dlm_lock *lock, int flags) in dlmlock_master() argument
108 mlog(0, "type=%d\n", lock->ml.type); in dlmlock_master()
115 lock->ml.node != dlm->node_num) { in dlmlock_master()
124 if (dlm_can_grant_new_lock(res, lock)) { in dlmlock_master()
[all …]
H A Ddlmconvert.c43 struct dlm_lock *lock, int flags,
48 struct dlm_lock *lock, int flags, int type);
61 struct dlm_lock *lock, int flags, int type) in dlmconvert_master() argument
72 status = __dlmconvert_master(dlm, res, lock, flags, type, in dlmconvert_master()
83 dlm_queue_ast(dlm, lock); in dlmconvert_master()
104 struct dlm_lock *lock, int flags, in __dlmconvert_master() argument
114 lock->ml.type, lock->ml.convert_type, type); in __dlmconvert_master()
116 spin_lock(&lock->spinlock); in __dlmconvert_master()
119 if (lock->ml.convert_type != LKM_IVMODE) { in __dlmconvert_master()
127 if (!dlm_lock_on_list(&res->granted, lock)) { in __dlmconvert_master()
[all …]
H A Ddlmunlock.c43 struct dlm_lock *lock,
48 struct dlm_lock *lock,
54 struct dlm_lock *lock,
83 struct dlm_lock *lock, in dlmunlock_common() argument
105 in_use = !list_empty(&lock->ast_list); in dlmunlock_common()
125 spin_lock(&lock->spinlock); in dlmunlock_common()
140 status = dlm_get_cancel_actions(dlm, res, lock, lksb, &actions); in dlmunlock_common()
142 status = dlm_get_unlock_actions(dlm, res, lock, lksb, &actions); in dlmunlock_common()
161 lock->cancel_pending = 1; in dlmunlock_common()
163 lock->unlock_pending = 1; in dlmunlock_common()
[all …]
/linux/arch/hexagon/include/asm/
H A Dspinlock.h28 static inline void arch_read_lock(arch_rwlock_t *lock) in arch_read_lock() argument
37 : "r" (&lock->lock) in arch_read_lock()
43 static inline void arch_read_unlock(arch_rwlock_t *lock) in arch_read_unlock() argument
51 : "r" (&lock->lock) in arch_read_unlock()
58 static inline int arch_read_trylock(arch_rwlock_t *lock) in arch_read_trylock() argument
69 : "r" (&lock->lock) in arch_read_trylock()
76 static inline void arch_write_lock(arch_rwlock_t *lock) in arch_write_lock() argument
85 : "r" (&lock->lock) in arch_write_lock()
91 static inline int arch_write_trylock(arch_rwlock_t *lock) in arch_write_trylock() argument
102 : "r" (&lock->lock) in arch_write_trylock()
[all …]
/linux/arch/powerpc/include/asm/
H A Dsimple_spinlock.h35 static __always_inline int arch_spin_value_unlocked(arch_spinlock_t lock) in arch_spin_value_unlocked() argument
37 return lock.slock == 0; in arch_spin_value_unlocked()
40 static inline int arch_spin_is_locked(arch_spinlock_t *lock) in arch_spin_is_locked() argument
42 return !arch_spin_value_unlocked(READ_ONCE(*lock)); in arch_spin_is_locked()
49 static inline unsigned long __arch_spin_trylock(arch_spinlock_t *lock) in __arch_spin_trylock() argument
64 : "r" (token), "r" (&lock->slock), [eh] "n" (eh) in __arch_spin_trylock()
70 static inline int arch_spin_trylock(arch_spinlock_t *lock) in arch_spin_trylock() argument
72 return __arch_spin_trylock(lock) == 0; in arch_spin_trylock()
91 void splpar_spin_yield(arch_spinlock_t *lock);
92 void splpar_rw_yield(arch_rwlock_t *lock);
[all …]
/linux/drivers/acpi/acpica/
H A Dutlock.c4 * Module Name: utlock - Reader/Writer lock interfaces
21 * PARAMETERS: lock - Pointer to a valid RW lock
25 * DESCRIPTION: Reader/writer lock creation and deletion interfaces.
28 acpi_status acpi_ut_create_rw_lock(struct acpi_rw_lock *lock) in acpi_ut_create_rw_lock() argument
32 lock->num_readers = 0; in acpi_ut_create_rw_lock()
33 status = acpi_os_create_mutex(&lock->reader_mutex); in acpi_ut_create_rw_lock()
38 status = acpi_os_create_mutex(&lock->writer_mutex); in acpi_ut_create_rw_lock()
42 void acpi_ut_delete_rw_lock(struct acpi_rw_lock *lock) in acpi_ut_delete_rw_lock() argument
45 acpi_os_delete_mutex(lock in acpi_ut_delete_rw_lock()
71 acpi_ut_acquire_read_lock(struct acpi_rw_lock * lock) acpi_ut_acquire_read_lock() argument
93 acpi_ut_release_read_lock(struct acpi_rw_lock * lock) acpi_ut_release_read_lock() argument
129 acpi_ut_acquire_write_lock(struct acpi_rw_lock * lock) acpi_ut_acquire_write_lock() argument
137 acpi_ut_release_write_lock(struct acpi_rw_lock * lock) acpi_ut_release_write_lock() argument
[all...]
/linux/tools/testing/selftests/bpf/progs/
H A Dlinked_list.c12 struct bpf_spin_lock lock; member
28 int list_push_pop(struct bpf_spin_lock *lock, struct bpf_list_head *head, bool leave_in_map) in list_push_pop() argument
37 bpf_spin_lock(lock); in list_push_pop()
39 bpf_spin_unlock(lock); in list_push_pop()
46 bpf_spin_lock(lock); in list_push_pop()
48 bpf_spin_unlock(lock); in list_push_pop()
56 bpf_spin_lock(lock); in list_push_pop()
59 bpf_spin_unlock(lock); in list_push_pop()
62 bpf_spin_lock(lock); in list_push_pop()
64 bpf_spin_unlock(lock); in list_push_pop()
[all …]
/linux/include/trace/events/
H A Dlock.h3 #define TRACE_SYSTEM lock
10 /* flags for lock:contention_begin */
25 TP_PROTO(struct lockdep_map *lock, unsigned int subclass,
29 TP_ARGS(lock, subclass, trylock, read, check, next_lock, ip),
33 __string(name, lock->name)
40 __entry->lockdep_addr = lock;
49 DECLARE_EVENT_CLASS(lock,
51 TP_PROTO(struct lockdep_map *lock, unsigned long ip),
53 TP_ARGS(lock, ip),
56 __string( name, lock
[all...]
/linux/arch/arm/include/asm/
H A Dspinlock.h56 static inline void arch_spin_lock(arch_spinlock_t *lock) in arch_spin_lock() argument
62 prefetchw(&lock->slock); in arch_spin_lock()
70 : "r" (&lock->slock), "I" (1 << TICKET_SHIFT) in arch_spin_lock()
75 lockval.tickets.owner = READ_ONCE(lock->tickets.owner); in arch_spin_lock()
81 static inline int arch_spin_trylock(arch_spinlock_t *lock) in arch_spin_trylock() argument
86 prefetchw(&lock->slock); in arch_spin_trylock()
95 : "r" (&lock->slock), "I" (1 << TICKET_SHIFT) in arch_spin_trylock()
107 static inline void arch_spin_unlock(arch_spinlock_t *lock) in arch_spin_unlock() argument
110 lock->tickets.owner++; in arch_spin_unlock()
114 static inline int arch_spin_value_unlocked(arch_spinlock_t lock) in arch_spin_value_unlocked() argument
[all …]
/linux/tools/perf/tests/shell/
H A Dlock_contention.sh36 if ! perf list tracepoint | grep -q lock:contention_begin; then
53 perf lock record -o ${perfdata} -- perf bench sched messaging -p > /dev/null 2>&1
55 perf lock contention -i ${perfdata} -E 1 -q 2> ${result}
67 if ! perf lock con -b true > /dev/null 2>&1 ; then
73 perf lock con -a -b -E 1 -q -- perf bench sched messaging -p > /dev/null 2> ${result}
84 perf lock record -o- -- perf bench sched messaging -p 2> ${errout} | \
85 perf lock contention -i- -E 1 -q 2> ${result}
98 perf lock contention -i ${perfdata} -t -E 1 -q 2> ${result}
105 if ! perf lock con -b true > /dev/null 2>&1 ; then
110 perf lock con -a -b -t -E 1 -q -- perf bench sched messaging -p > /dev/null 2> ${result}
[all …]
/linux/tools/virtio/linux/
H A Dspinlock.h8 static inline void spin_lock_init(spinlock_t *lock) in spin_lock_init() argument
10 int r = pthread_spin_init(lock, 0); in spin_lock_init()
14 static inline void spin_lock(spinlock_t *lock) in spin_lock() argument
16 int ret = pthread_spin_lock(lock); in spin_lock()
20 static inline void spin_unlock(spinlock_t *lock) in spin_unlock() argument
22 int ret = pthread_spin_unlock(lock); in spin_unlock()
26 static inline void spin_lock_bh(spinlock_t *lock) in spin_lock_bh() argument
28 spin_lock(lock); in spin_lock_bh()
31 static inline void spin_unlock_bh(spinlock_t *lock) in spin_unlock_bh() argument
33 spin_unlock(lock); in spin_unlock_bh()
[all …]
/linux/include/asm-generic/
H A Dqrwlock.h36 extern void queued_read_lock_slowpath(struct qrwlock *lock);
37 extern void queued_write_lock_slowpath(struct qrwlock *lock);
44 static inline int queued_read_trylock(struct qrwlock *lock) in queued_read_trylock() argument
48 cnts = atomic_read(&lock->cnts); in queued_read_trylock()
50 cnts = (u32)atomic_add_return_acquire(_QR_BIAS, &lock->cnts); in queued_read_trylock()
53 atomic_sub(_QR_BIAS, &lock->cnts); in queued_read_trylock()
63 static inline int queued_write_trylock(struct qrwlock *lock) in queued_write_trylock() argument
67 cnts = atomic_read(&lock->cnts); in queued_write_trylock()
71 return likely(atomic_try_cmpxchg_acquire(&lock->cnts, &cnts, in queued_write_trylock()
78 static inline void queued_read_lock(struct qrwlock *lock) in queued_read_lock() argument
[all …]
/linux/fs/btrfs/
H A Dlocking.h104 #define btrfs_might_wait_for_event(owner, lock) \ argument
106 rwsem_acquire(&owner->lock##_map, 0, 0, _THIS_IP_); \
107 rwsem_release(&owner->lock##_map, _THIS_IP_); \
121 #define btrfs_lockdep_acquire(owner, lock) \ argument
122 rwsem_acquire_read(&owner->lock##_map, 0, 0, _THIS_IP_)
128 #define btrfs_lockdep_release(owner, lock) \ argument
129 rwsem_release(&owner->lock##_map, _THIS_IP_)
135 #define btrfs_lockdep_inode_acquire(owner, lock) \ argument
136 rwsem_acquire_read(&owner->vfs_inode.lock.dep_map, 0, 0, _THIS_IP_)
138 #define btrfs_lockdep_inode_release(owner, lock) \ argument
[all …]
/linux/arch/sh/include/asm/
H A Dspinlock-cas.h26 #define arch_spin_is_locked(x) ((x)->lock <= 0)
28 static inline void arch_spin_lock(arch_spinlock_t *lock) in arch_spin_lock() argument
30 while (!__sl_cas(&lock->lock, 1, 0)); in arch_spin_lock()
33 static inline void arch_spin_unlock(arch_spinlock_t *lock) in arch_spin_unlock() argument
35 __sl_cas(&lock->lock, 0, 1); in arch_spin_unlock()
38 static inline int arch_spin_trylock(arch_spinlock_t *lock) in arch_spin_trylock() argument
40 return __sl_cas(&lock->lock, 1, 0); in arch_spin_trylock()
55 do old = rw->lock; in arch_read_lock()
56 while (!old || __sl_cas(&rw->lock, old, old-1) != old); in arch_read_lock()
62 do old = rw->lock; in arch_read_unlock()
[all …]

12345678910>>...109