/kernel/linux/linux-6.6/kernel/locking/ |
H A D | rwsem.c | 68 # define DEBUG_RWSEMS_WARN_ON(c, sem) do { \ 71 #c, atomic_long_read(&(sem)->count), \ 72 (unsigned long) sem->magic, \ 73 atomic_long_read(&(sem)->owner), (long)current, \ 74 list_empty(&(sem)->wait_list) ? "" : "not ")) \ 78 # define DEBUG_RWSEMS_WARN_ON(c, sem) 138 * preempt disable section as the atomic op that changes sem->count. 140 static inline void rwsem_set_owner(struct rw_semaphore *sem) in rwsem_set_owner() argument 143 atomic_long_set(&sem->owner, (long)current); in rwsem_set_owner() 146 static inline void rwsem_clear_owner(struct rw_semaphore *sem) in rwsem_clear_owner() argument 155 rwsem_test_oflags(struct rw_semaphore *sem, long flags) rwsem_test_oflags() argument 170 __rwsem_set_reader_owned(struct rw_semaphore *sem, struct task_struct *owner) __rwsem_set_reader_owned() argument 179 rwsem_set_reader_owned(struct rw_semaphore *sem) rwsem_set_reader_owned() argument 187 is_rwsem_reader_owned(struct rw_semaphore *sem) is_rwsem_reader_owned() argument 208 rwsem_clear_reader_owned(struct rw_semaphore *sem) rwsem_clear_reader_owned() argument 219 rwsem_clear_reader_owned(struct rw_semaphore *sem) rwsem_clear_reader_owned() argument 228 rwsem_set_nonspinnable(struct rw_semaphore *sem) rwsem_set_nonspinnable() argument 241 rwsem_read_trylock(struct rw_semaphore *sem, long *cntp) rwsem_read_trylock() argument 256 rwsem_write_trylock(struct rw_semaphore *sem) rwsem_write_trylock() argument 271 rwsem_owner(struct rw_semaphore *sem) rwsem_owner() argument 282 rwsem_owner_flags(struct rw_semaphore *sem, unsigned long *pflags) rwsem_owner_flags() argument 310 __init_rwsem(struct rw_semaphore *sem, const char *name, struct lock_class_key *key) __init_rwsem() argument 370 rwsem_add_waiter(struct rw_semaphore *sem, struct rwsem_waiter *waiter) rwsem_add_waiter() argument 386 rwsem_del_waiter(struct rw_semaphore *sem, struct rwsem_waiter *waiter) rwsem_del_waiter() argument 411 rwsem_mark_wake(struct rw_semaphore *sem, enum rwsem_wake_type wake_type, struct wake_q_head *wake_q) rwsem_mark_wake() argument 604 rwsem_try_write_lock(struct rw_semaphore *sem, struct rwsem_waiter *waiter) rwsem_try_write_lock() argument 690 rwsem_try_write_lock_unqueued(struct rw_semaphore *sem) rwsem_try_write_lock_unqueued() argument 705 rwsem_can_spin_on_owner(struct rw_semaphore *sem) rwsem_can_spin_on_owner() argument 747 rwsem_spin_on_owner(struct rw_semaphore *sem) rwsem_spin_on_owner() argument 806 rwsem_rspin_threshold(struct rw_semaphore *sem) rwsem_rspin_threshold() argument 819 rwsem_optimistic_spin(struct rw_semaphore *sem) rwsem_optimistic_spin() argument 941 clear_nonspinnable(struct rw_semaphore *sem) clear_nonspinnable() argument 948 rwsem_can_spin_on_owner(struct rw_semaphore *sem) rwsem_can_spin_on_owner() argument 953 rwsem_optimistic_spin(struct rw_semaphore *sem) rwsem_optimistic_spin() argument 958 clear_nonspinnable(struct rw_semaphore *sem) clear_nonspinnable() argument 961 rwsem_spin_on_owner(struct rw_semaphore *sem) rwsem_spin_on_owner() argument 975 rwsem_cond_wake_waiter(struct rw_semaphore *sem, long count, struct wake_q_head *wake_q) rwsem_cond_wake_waiter() argument 996 rwsem_down_read_slowpath(struct rw_semaphore *sem, long count, unsigned int state) rwsem_down_read_slowpath() argument 1107 rwsem_down_write_slowpath(struct rw_semaphore *sem, int state) rwsem_down_write_slowpath() argument 1203 rwsem_wake(struct rw_semaphore *sem) rwsem_wake() argument 1224 rwsem_downgrade_wake(struct rw_semaphore *sem) rwsem_downgrade_wake() argument 1243 __down_read_common(struct rw_semaphore *sem, int state) __down_read_common() argument 1261 __down_read(struct rw_semaphore *sem) __down_read() argument 1266 __down_read_interruptible(struct rw_semaphore *sem) __down_read_interruptible() argument 1271 __down_read_killable(struct rw_semaphore *sem) __down_read_killable() argument 1276 __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 1300 __down_write_common(struct rw_semaphore *sem, int state) __down_write_common() argument 1313 __down_write(struct rw_semaphore *sem) __down_write() argument 1318 __down_write_killable(struct rw_semaphore *sem) __down_write_killable() argument 1323 __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 1338 __up_read(struct rw_semaphore *sem) __up_read() argument 1360 __up_write(struct rw_semaphore *sem) __up_write() argument 1383 __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 1394 DEBUG_RWSEMS_WARN_ON(rwsem_owner(sem) != current, sem); __downgrade_write() local 1435 __init_rwsem(struct rw_semaphore *sem, const char *name, struct lock_class_key *key) __init_rwsem() argument 1447 __down_read(struct rw_semaphore *sem) __down_read() argument 1452 __down_read_interruptible(struct rw_semaphore *sem) __down_read_interruptible() argument 1457 __down_read_killable(struct rw_semaphore *sem) __down_read_killable() argument 1462 __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 1467 __up_read(struct rw_semaphore *sem) __up_read() argument 1472 __down_write(struct rw_semaphore *sem) __down_write() argument 1477 __down_write_killable(struct rw_semaphore *sem) __down_write_killable() argument 1482 __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 1487 __up_write(struct rw_semaphore *sem) __up_write() argument 1492 __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 1500 __rwsem_set_reader_owned(struct rw_semaphore *sem, struct task_struct *owner) __rwsem_set_reader_owned() argument 1505 is_rwsem_reader_owned(struct rw_semaphore *sem) is_rwsem_reader_owned() argument 1517 down_read(struct rw_semaphore *sem) down_read() argument 1526 down_read_interruptible(struct rw_semaphore *sem) down_read_interruptible() argument 1540 down_read_killable(struct rw_semaphore *sem) down_read_killable() argument 1557 down_read_trylock(struct rw_semaphore *sem) down_read_trylock() argument 1570 down_write(struct rw_semaphore *sem) down_write() argument 1581 down_write_killable(struct rw_semaphore *sem) down_write_killable() argument 1599 down_write_trylock(struct rw_semaphore *sem) down_write_trylock() argument 1613 up_read(struct rw_semaphore *sem) up_read() argument 1623 up_write(struct rw_semaphore *sem) up_write() argument 1633 downgrade_write(struct rw_semaphore *sem) downgrade_write() argument 1642 down_read_nested(struct rw_semaphore *sem, int subclass) down_read_nested() argument 1650 down_read_killable_nested(struct rw_semaphore *sem, int subclass) down_read_killable_nested() argument 1664 _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest) _down_write_nest_lock() argument 1672 down_read_non_owner(struct rw_semaphore *sem) down_read_non_owner() argument 1686 down_write_nested(struct rw_semaphore *sem, int subclass) down_write_nested() argument 1694 down_write_killable_nested(struct rw_semaphore *sem, int subclass) down_write_killable_nested() argument 1709 up_read_non_owner(struct rw_semaphore *sem) up_read_non_owner() argument [all...] |
H A D | semaphore.c | 37 static noinline void __down(struct semaphore *sem); 38 static noinline int __down_interruptible(struct semaphore *sem); 39 static noinline int __down_killable(struct semaphore *sem); 40 static noinline int __down_timeout(struct semaphore *sem, long timeout); 41 static noinline void __up(struct semaphore *sem); 45 * @sem: the semaphore to be acquired 54 void __sched down(struct semaphore *sem) in down() argument 59 raw_spin_lock_irqsave(&sem->lock, flags); in down() 60 if (likely(sem->count > 0)) in down() 61 sem in down() 77 down_interruptible(struct semaphore *sem) down_interruptible() argument 104 down_killable(struct semaphore *sem) down_killable() argument 134 down_trylock(struct semaphore *sem) down_trylock() argument 159 down_timeout(struct semaphore *sem, long timeout) down_timeout() argument 183 up(struct semaphore *sem) up() argument 209 ___down_common(struct semaphore *sem, long state, long timeout) ___down_common() argument 240 __down_common(struct semaphore *sem, long state, long timeout) __down_common() argument 252 __down(struct semaphore *sem) __down() argument 257 __down_interruptible(struct semaphore *sem) __down_interruptible() argument 262 __down_killable(struct semaphore *sem) __down_killable() argument 267 __down_timeout(struct semaphore *sem, long timeout) __down_timeout() argument 272 __up(struct semaphore *sem) __up() argument [all...] |
H A D | percpu-rwsem.c | 14 int __percpu_init_rwsem(struct percpu_rw_semaphore *sem, in __percpu_init_rwsem() argument 17 sem->read_count = alloc_percpu(int); in __percpu_init_rwsem() 18 if (unlikely(!sem->read_count)) in __percpu_init_rwsem() 21 rcu_sync_init(&sem->rss); in __percpu_init_rwsem() 22 rcuwait_init(&sem->writer); in __percpu_init_rwsem() 23 init_waitqueue_head(&sem->waiters); in __percpu_init_rwsem() 24 atomic_set(&sem->block, 0); in __percpu_init_rwsem() 26 debug_check_no_locks_freed((void *)sem, sizeof(*sem)); in __percpu_init_rwsem() 27 lockdep_init_map(&sem in __percpu_init_rwsem() 33 percpu_free_rwsem(struct percpu_rw_semaphore *sem) percpu_free_rwsem() argument 48 __percpu_down_read_trylock(struct percpu_rw_semaphore *sem) __percpu_down_read_trylock() argument 84 __percpu_down_write_trylock(struct percpu_rw_semaphore *sem) __percpu_down_write_trylock() argument 92 __percpu_rwsem_trylock(struct percpu_rw_semaphore *sem, bool reader) __percpu_rwsem_trylock() argument 124 struct percpu_rw_semaphore *sem = key; percpu_rwsem_wake_function() local 141 percpu_rwsem_wait(struct percpu_rw_semaphore *sem, bool reader) percpu_rwsem_wait() argument 167 __percpu_down_read(struct percpu_rw_semaphore *sem, bool try) __percpu_down_read() argument 195 percpu_is_read_locked(struct percpu_rw_semaphore *sem) percpu_is_read_locked() argument 209 readers_active_check(struct percpu_rw_semaphore *sem) readers_active_check() argument 224 percpu_down_write(struct percpu_rw_semaphore *sem) percpu_down_write() argument 254 percpu_up_write(struct percpu_rw_semaphore *sem) percpu_up_write() argument [all...] |
/kernel/linux/linux-5.10/kernel/locking/ |
H A D | rwsem.c | 105 # define DEBUG_RWSEMS_WARN_ON(c, sem) do { \ 108 #c, atomic_long_read(&(sem)->count), \ 109 (unsigned long) sem->magic, \ 110 atomic_long_read(&(sem)->owner), (long)current, \ 111 list_empty(&(sem)->wait_list) ? "" : "not ")) \ 115 # define DEBUG_RWSEMS_WARN_ON(c, sem) 174 static inline void rwsem_set_owner(struct rw_semaphore *sem) in rwsem_set_owner() argument 176 atomic_long_set(&sem->owner, (long)current); in rwsem_set_owner() 179 static inline void rwsem_clear_owner(struct rw_semaphore *sem) in rwsem_clear_owner() argument 181 atomic_long_set(&sem in rwsem_clear_owner() 187 rwsem_test_oflags(struct rw_semaphore *sem, long flags) rwsem_test_oflags() argument 202 __rwsem_set_reader_owned(struct rw_semaphore *sem, struct task_struct *owner) __rwsem_set_reader_owned() argument 211 rwsem_set_reader_owned(struct rw_semaphore *sem) rwsem_set_reader_owned() argument 219 is_rwsem_reader_owned(struct rw_semaphore *sem) is_rwsem_reader_owned() argument 240 rwsem_clear_reader_owned(struct rw_semaphore *sem) rwsem_clear_reader_owned() argument 251 rwsem_clear_reader_owned(struct rw_semaphore *sem) rwsem_clear_reader_owned() argument 260 rwsem_set_nonspinnable(struct rw_semaphore *sem) rwsem_set_nonspinnable() argument 273 rwsem_read_trylock(struct rw_semaphore *sem) rwsem_read_trylock() argument 284 rwsem_owner(struct rw_semaphore *sem) rwsem_owner() argument 295 rwsem_owner_flags(struct rw_semaphore *sem, unsigned long *pflags) rwsem_owner_flags() argument 323 __init_rwsem(struct rw_semaphore *sem, const char *name, struct lock_class_key *key) __init_rwsem() argument 400 rwsem_mark_wake(struct rw_semaphore *sem, enum rwsem_wake_type wake_type, struct wake_q_head *wake_q) rwsem_mark_wake() argument 562 rwsem_try_write_lock(struct rw_semaphore *sem, enum writer_wait_state wstate) rwsem_try_write_lock() argument 609 rwsem_try_read_lock_unqueued(struct rw_semaphore *sem) rwsem_try_read_lock_unqueued() argument 631 rwsem_try_write_lock_unqueued(struct rw_semaphore *sem) rwsem_try_write_lock_unqueued() argument 655 rwsem_can_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable) rwsem_can_spin_on_owner() argument 715 rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable) rwsem_spin_on_owner() argument 772 rwsem_rspin_threshold(struct rw_semaphore *sem) rwsem_rspin_threshold() argument 785 rwsem_optimistic_spin(struct rw_semaphore *sem, bool wlock) rwsem_optimistic_spin() argument 919 clear_wr_nonspinnable(struct rw_semaphore *sem) clear_wr_nonspinnable() argument 944 rwsem_reader_phase_trylock(struct rw_semaphore *sem, unsigned long last_rowner) rwsem_reader_phase_trylock() argument 961 rwsem_can_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable) rwsem_can_spin_on_owner() argument 967 rwsem_optimistic_spin(struct rw_semaphore *sem, bool wlock) rwsem_optimistic_spin() argument 972 clear_wr_nonspinnable(struct rw_semaphore *sem) clear_wr_nonspinnable() argument 974 rwsem_reader_phase_trylock(struct rw_semaphore *sem, unsigned long last_rowner) rwsem_reader_phase_trylock() argument 981 rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable) rwsem_spin_on_owner() argument 992 rwsem_down_read_slowpath(struct rw_semaphore *sem, int state) rwsem_down_read_slowpath() argument 1123 rwsem_disable_reader_optspin(struct rw_semaphore *sem, bool disable) rwsem_disable_reader_optspin() argument 1136 rwsem_down_write_slowpath(struct rw_semaphore *sem, int state) rwsem_down_write_slowpath() argument 1298 rwsem_wake(struct rw_semaphore *sem, long count) rwsem_wake() argument 1319 rwsem_downgrade_wake(struct rw_semaphore *sem) rwsem_downgrade_wake() argument 1338 __down_read(struct rw_semaphore *sem) __down_read() argument 1348 __down_read_interruptible(struct rw_semaphore *sem) __down_read_interruptible() argument 1360 __down_read_killable(struct rw_semaphore *sem) __down_read_killable() argument 1372 __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 1395 __down_write(struct rw_semaphore *sem) __down_write() argument 1406 __down_write_killable(struct rw_semaphore *sem) __down_write_killable() argument 1420 __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 1438 __up_read(struct rw_semaphore *sem) __up_read() argument 1458 __up_write(struct rw_semaphore *sem) __up_write() argument 1479 __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 1490 DEBUG_RWSEMS_WARN_ON(rwsem_owner(sem) != current, sem); __downgrade_write() local 1501 down_read(struct rw_semaphore *sem) down_read() argument 1510 down_read_interruptible(struct rw_semaphore *sem) down_read_interruptible() argument 1524 down_read_killable(struct rw_semaphore *sem) down_read_killable() argument 1541 down_read_trylock(struct rw_semaphore *sem) down_read_trylock() argument 1554 down_write(struct rw_semaphore *sem) down_write() argument 1565 down_write_killable(struct rw_semaphore *sem) down_write_killable() argument 1583 down_write_trylock(struct rw_semaphore *sem) down_write_trylock() argument 1597 up_read(struct rw_semaphore *sem) up_read() argument 1607 up_write(struct rw_semaphore *sem) up_write() argument 1617 downgrade_write(struct rw_semaphore *sem) downgrade_write() argument 1626 down_read_nested(struct rw_semaphore *sem, int subclass) down_read_nested() argument 1634 down_read_killable_nested(struct rw_semaphore *sem, int subclass) down_read_killable_nested() argument 1648 _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest) _down_write_nest_lock() argument 1656 down_read_non_owner(struct rw_semaphore *sem) down_read_non_owner() argument 1664 down_write_nested(struct rw_semaphore *sem, int subclass) down_write_nested() argument 1672 down_write_killable_nested(struct rw_semaphore *sem, int subclass) down_write_killable_nested() argument 1687 up_read_non_owner(struct rw_semaphore *sem) up_read_non_owner() argument [all...] |
H A D | semaphore.c | 36 static noinline void __down(struct semaphore *sem); 37 static noinline int __down_interruptible(struct semaphore *sem); 38 static noinline int __down_killable(struct semaphore *sem); 39 static noinline int __down_timeout(struct semaphore *sem, long timeout); 40 static noinline void __up(struct semaphore *sem); 44 * @sem: the semaphore to be acquired 53 void down(struct semaphore *sem) in down() argument 57 raw_spin_lock_irqsave(&sem->lock, flags); in down() 58 if (likely(sem->count > 0)) in down() 59 sem in down() 75 down_interruptible(struct semaphore *sem) down_interruptible() argument 101 down_killable(struct semaphore *sem) down_killable() argument 130 down_trylock(struct semaphore *sem) down_trylock() argument 155 down_timeout(struct semaphore *sem, long timeout) down_timeout() argument 178 up(struct semaphore *sem) up() argument 204 __down_common(struct semaphore *sem, long state, long timeout) __down_common() argument 235 __down(struct semaphore *sem) __down() argument 240 __down_interruptible(struct semaphore *sem) __down_interruptible() argument 245 __down_killable(struct semaphore *sem) __down_killable() argument 250 __down_timeout(struct semaphore *sem, long timeout) __down_timeout() argument 255 __up(struct semaphore *sem) __up() argument [all...] |
H A D | percpu-rwsem.c | 12 int __percpu_init_rwsem(struct percpu_rw_semaphore *sem, in __percpu_init_rwsem() argument 15 sem->read_count = alloc_percpu(int); in __percpu_init_rwsem() 16 if (unlikely(!sem->read_count)) in __percpu_init_rwsem() 19 rcu_sync_init(&sem->rss); in __percpu_init_rwsem() 20 rcuwait_init(&sem->writer); in __percpu_init_rwsem() 21 init_waitqueue_head(&sem->waiters); in __percpu_init_rwsem() 22 atomic_set(&sem->block, 0); in __percpu_init_rwsem() 24 debug_check_no_locks_freed((void *)sem, sizeof(*sem)); in __percpu_init_rwsem() 25 lockdep_init_map(&sem in __percpu_init_rwsem() 31 percpu_free_rwsem(struct percpu_rw_semaphore *sem) percpu_free_rwsem() argument 46 __percpu_down_read_trylock(struct percpu_rw_semaphore *sem) __percpu_down_read_trylock() argument 82 __percpu_down_write_trylock(struct percpu_rw_semaphore *sem) __percpu_down_write_trylock() argument 90 __percpu_rwsem_trylock(struct percpu_rw_semaphore *sem, bool reader) __percpu_rwsem_trylock() argument 122 struct percpu_rw_semaphore *sem = key; percpu_rwsem_wake_function() local 139 percpu_rwsem_wait(struct percpu_rw_semaphore *sem, bool reader) percpu_rwsem_wait() argument 165 __percpu_down_read(struct percpu_rw_semaphore *sem, bool try) __percpu_down_read() argument 199 readers_active_check(struct percpu_rw_semaphore *sem) readers_active_check() argument 214 percpu_down_write(struct percpu_rw_semaphore *sem) percpu_down_write() argument 242 percpu_up_write(struct percpu_rw_semaphore *sem) percpu_up_write() argument [all...] |
/kernel/linux/linux-5.10/drivers/tty/ |
H A D | tty_ldsem.c | 57 void __init_ldsem(struct ld_semaphore *sem, const char *name, in __init_ldsem() argument 64 debug_check_no_locks_freed((void *)sem, sizeof(*sem)); in __init_ldsem() 65 lockdep_init_map(&sem->dep_map, name, key, 0); in __init_ldsem() 67 atomic_long_set(&sem->count, LDSEM_UNLOCKED); in __init_ldsem() 68 sem->wait_readers = 0; in __init_ldsem() 69 raw_spin_lock_init(&sem->wait_lock); in __init_ldsem() 70 INIT_LIST_HEAD(&sem->read_wait); in __init_ldsem() 71 INIT_LIST_HEAD(&sem->write_wait); in __init_ldsem() 74 static void __ldsem_wake_readers(struct ld_semaphore *sem) in __ldsem_wake_readers() argument 104 writer_trylock(struct ld_semaphore *sem) writer_trylock() argument 119 __ldsem_wake_writer(struct ld_semaphore *sem) __ldsem_wake_writer() argument 135 __ldsem_wake(struct ld_semaphore *sem) __ldsem_wake() argument 143 ldsem_wake(struct ld_semaphore *sem) ldsem_wake() argument 156 down_read_failed(struct ld_semaphore *sem, long count, long timeout) down_read_failed() argument 230 down_write_failed(struct ld_semaphore *sem, long count, long timeout) down_write_failed() argument 295 __ldsem_down_read_nested(struct ld_semaphore *sem, int subclass, long timeout) __ldsem_down_read_nested() argument 314 __ldsem_down_write_nested(struct ld_semaphore *sem, int subclass, long timeout) __ldsem_down_write_nested() argument 337 ldsem_down_read(struct ld_semaphore *sem, long timeout) ldsem_down_read() argument 346 ldsem_down_read_trylock(struct ld_semaphore *sem) ldsem_down_read_trylock() argument 363 ldsem_down_write(struct ld_semaphore *sem, long timeout) ldsem_down_write() argument 372 ldsem_down_write_trylock(struct ld_semaphore *sem) ldsem_down_write_trylock() argument 389 ldsem_up_read(struct ld_semaphore *sem) ldsem_up_read() argument 403 ldsem_up_write(struct ld_semaphore *sem) ldsem_up_write() argument 417 ldsem_down_read_nested(struct ld_semaphore *sem, int subclass, long timeout) ldsem_down_read_nested() argument 423 ldsem_down_write_nested(struct ld_semaphore *sem, int subclass, long timeout) ldsem_down_write_nested() argument [all...] |
/kernel/linux/linux-6.6/drivers/tty/ |
H A D | tty_ldsem.c | 57 void __init_ldsem(struct ld_semaphore *sem, const char *name, in __init_ldsem() argument 64 debug_check_no_locks_freed((void *)sem, sizeof(*sem)); in __init_ldsem() 65 lockdep_init_map(&sem->dep_map, name, key, 0); in __init_ldsem() 67 atomic_long_set(&sem->count, LDSEM_UNLOCKED); in __init_ldsem() 68 sem->wait_readers = 0; in __init_ldsem() 69 raw_spin_lock_init(&sem->wait_lock); in __init_ldsem() 70 INIT_LIST_HEAD(&sem->read_wait); in __init_ldsem() 71 INIT_LIST_HEAD(&sem->write_wait); in __init_ldsem() 74 static void __ldsem_wake_readers(struct ld_semaphore *sem) in __ldsem_wake_readers() argument 104 writer_trylock(struct ld_semaphore *sem) writer_trylock() argument 119 __ldsem_wake_writer(struct ld_semaphore *sem) __ldsem_wake_writer() argument 135 __ldsem_wake(struct ld_semaphore *sem) __ldsem_wake() argument 143 ldsem_wake(struct ld_semaphore *sem) ldsem_wake() argument 156 down_read_failed(struct ld_semaphore *sem, long count, long timeout) down_read_failed() argument 230 down_write_failed(struct ld_semaphore *sem, long count, long timeout) down_write_failed() argument 295 __ldsem_down_read_nested(struct ld_semaphore *sem, int subclass, long timeout) __ldsem_down_read_nested() argument 314 __ldsem_down_write_nested(struct ld_semaphore *sem, int subclass, long timeout) __ldsem_down_write_nested() argument 337 ldsem_down_read(struct ld_semaphore *sem, long timeout) ldsem_down_read() argument 346 ldsem_down_read_trylock(struct ld_semaphore *sem) ldsem_down_read_trylock() argument 363 ldsem_down_write(struct ld_semaphore *sem, long timeout) ldsem_down_write() argument 372 ldsem_down_write_trylock(struct ld_semaphore *sem) ldsem_down_write_trylock() argument 389 ldsem_up_read(struct ld_semaphore *sem) ldsem_up_read() argument 403 ldsem_up_write(struct ld_semaphore *sem) ldsem_up_write() argument 417 ldsem_down_read_nested(struct ld_semaphore *sem, int subclass, long timeout) ldsem_down_read_nested() argument 423 ldsem_down_write_nested(struct ld_semaphore *sem, int subclass, long timeout) ldsem_down_write_nested() argument [all...] |
/kernel/linux/linux-6.6/include/linux/ |
H A D | rwsem.h | 70 static inline int rwsem_is_locked(struct rw_semaphore *sem) in rwsem_is_locked() argument 72 return atomic_long_read(&sem->count) != 0; in rwsem_is_locked() 104 extern void __init_rwsem(struct rw_semaphore *sem, const char *name, 107 #define init_rwsem(sem) \ 111 __init_rwsem((sem), #sem, &__key); \ 120 static inline int rwsem_is_contended(struct rw_semaphore *sem) in rwsem_is_contended() argument 122 return !list_empty(&sem->wait_list); in rwsem_is_contended() 148 #define init_rwsem(sem) \ 152 __init_rwsem((sem), #se 155 rwsem_is_locked(struct rw_semaphore *sem) rwsem_is_locked() argument 160 rwsem_is_contended(struct rw_semaphore *sem) rwsem_is_contended() argument [all...] |
H A D | percpu-rwsem.h | 47 static inline void percpu_down_read(struct percpu_rw_semaphore *sem) in percpu_down_read() argument 51 rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_); in percpu_down_read() 56 * cannot both change sem->state from readers_fast and start checking in percpu_down_read() 57 * counters while we are here. So if we see !sem->state, we know that in percpu_down_read() 62 if (likely(rcu_sync_is_idle(&sem->rss))) in percpu_down_read() 63 this_cpu_inc(*sem->read_count); in percpu_down_read() 65 __percpu_down_read(sem, false); /* Unconditional memory barrier */ in percpu_down_read() 73 static inline bool percpu_down_read_trylock(struct percpu_rw_semaphore *sem) in percpu_down_read_trylock() argument 81 if (likely(rcu_sync_is_idle(&sem->rss))) in percpu_down_read_trylock() 82 this_cpu_inc(*sem in percpu_down_read_trylock() 97 percpu_up_read(struct percpu_rw_semaphore *sem) percpu_up_read() argument 128 percpu_is_write_locked(struct percpu_rw_semaphore *sem) percpu_is_write_locked() argument 147 percpu_rwsem_release(struct percpu_rw_semaphore *sem, bool read, unsigned long ip) percpu_rwsem_release() argument 153 percpu_rwsem_acquire(struct percpu_rw_semaphore *sem, bool read, unsigned long ip) percpu_rwsem_acquire() argument [all...] |
H A D | tty_ldisc.h | 28 void __init_ldsem(struct ld_semaphore *sem, const char *name, 31 #define init_ldsem(sem) \ 35 __init_ldsem((sem), #sem, &__key); \ 39 int ldsem_down_read(struct ld_semaphore *sem, long timeout); 40 int ldsem_down_read_trylock(struct ld_semaphore *sem); 41 int ldsem_down_write(struct ld_semaphore *sem, long timeout); 42 int ldsem_down_write_trylock(struct ld_semaphore *sem); 43 void ldsem_up_read(struct ld_semaphore *sem); 44 void ldsem_up_write(struct ld_semaphore *sem); [all...] |
H A D | semaphore.h | 37 static inline void sema_init(struct semaphore *sem, int val) in sema_init() argument 40 *sem = (struct semaphore) __SEMAPHORE_INITIALIZER(*sem, val); in sema_init() 41 lockdep_init_map(&sem->lock.dep_map, "semaphore->lock", &__key, 0); in sema_init() 44 extern void down(struct semaphore *sem); 45 extern int __must_check down_interruptible(struct semaphore *sem); 46 extern int __must_check down_killable(struct semaphore *sem); 47 extern int __must_check down_trylock(struct semaphore *sem); 48 extern int __must_check down_timeout(struct semaphore *sem, long jiffies); 49 extern void up(struct semaphore *sem); [all...] |
/kernel/linux/linux-5.10/include/linux/ |
H A D | rwsem.h | 57 static inline int rwsem_is_locked(struct rw_semaphore *sem) in rwsem_is_locked() argument 59 return atomic_long_read(&sem->count) != 0; in rwsem_is_locked() 101 extern void __init_rwsem(struct rw_semaphore *sem, const char *name, 104 #define init_rwsem(sem) \ 108 __init_rwsem((sem), #sem, &__key); \ 117 static inline int rwsem_is_contended(struct rw_semaphore *sem) in rwsem_is_contended() argument 119 return !list_empty(&sem->wait_list); in rwsem_is_contended() 125 extern void down_read(struct rw_semaphore *sem); 126 extern int __must_check down_read_interruptible(struct rw_semaphore *sem); [all...] |
H A D | percpu-rwsem.h | 47 static inline void percpu_down_read(struct percpu_rw_semaphore *sem) in percpu_down_read() argument 51 rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_); in percpu_down_read() 56 * cannot both change sem->state from readers_fast and start checking in percpu_down_read() 57 * counters while we are here. So if we see !sem->state, we know that in percpu_down_read() 62 if (likely(rcu_sync_is_idle(&sem->rss))) in percpu_down_read() 63 this_cpu_inc(*sem->read_count); in percpu_down_read() 65 __percpu_down_read(sem, false); /* Unconditional memory barrier */ in percpu_down_read() 73 static inline bool percpu_down_read_trylock(struct percpu_rw_semaphore *sem) in percpu_down_read_trylock() argument 81 if (likely(rcu_sync_is_idle(&sem->rss))) in percpu_down_read_trylock() 82 this_cpu_inc(*sem in percpu_down_read_trylock() 97 percpu_up_read(struct percpu_rw_semaphore *sem) percpu_up_read() argument 141 percpu_rwsem_release(struct percpu_rw_semaphore *sem, bool read, unsigned long ip) percpu_rwsem_release() argument 147 percpu_rwsem_acquire(struct percpu_rw_semaphore *sem, bool read, unsigned long ip) percpu_rwsem_acquire() argument [all...] |
H A D | tty_ldisc.h | 144 extern void __init_ldsem(struct ld_semaphore *sem, const char *name, 147 #define init_ldsem(sem) \ 151 __init_ldsem((sem), #sem, &__key); \ 155 extern int ldsem_down_read(struct ld_semaphore *sem, long timeout); 156 extern int ldsem_down_read_trylock(struct ld_semaphore *sem); 157 extern int ldsem_down_write(struct ld_semaphore *sem, long timeout); 158 extern int ldsem_down_write_trylock(struct ld_semaphore *sem); 159 extern void ldsem_up_read(struct ld_semaphore *sem); 160 extern void ldsem_up_write(struct ld_semaphore *sem); [all...] |
H A D | semaphore.h | 31 static inline void sema_init(struct semaphore *sem, int val) in sema_init() argument 34 *sem = (struct semaphore) __SEMAPHORE_INITIALIZER(*sem, val); in sema_init() 35 lockdep_init_map(&sem->lock.dep_map, "semaphore->lock", &__key, 0); in sema_init() 38 extern void down(struct semaphore *sem); 39 extern int __must_check down_interruptible(struct semaphore *sem); 40 extern int __must_check down_killable(struct semaphore *sem); 41 extern int __must_check down_trylock(struct semaphore *sem); 42 extern int __must_check down_timeout(struct semaphore *sem, long jiffies); 43 extern void up(struct semaphore *sem); [all...] |
/kernel/liteos_a/compat/posix/src/ |
H A D | semaphore.c | 39 int sem_init(sem_t *sem, int shared, unsigned int value) in sem_init() argument 45 if ((sem == NULL) || (value > OS_SEM_COUNT_MAX)) { in sem_init() 55 sem->sem = GET_SEM(semHandle); in sem_init() 60 int sem_destroy(sem_t *sem) in sem_destroy() argument 64 if ((sem == NULL) || (sem->sem == NULL)) { in sem_destroy() 69 ret = LOS_SemDelete(sem->sem in sem_destroy() 77 sem_wait(sem_t *sem) sem_wait() argument 95 sem_trywait(sem_t *sem) sem_trywait() argument 115 sem_timedwait(sem_t *sem, const struct timespec *timeout) sem_timedwait() argument 139 sem_post(sem_t *sem) sem_post() argument 156 sem_getvalue(sem_t *sem, int *currVal) sem_getvalue() argument 181 sem_close(sem_t *sem) sem_close() argument [all...] |
/kernel/liteos_m/testsuites/unittest/xts/ipc/semaphone/ |
H A D | sem_xts_test.c | 53 sem_t sem; variable 57 ret = sem_init(&sem, 0, testValue); 60 ret = sem_getvalue(&sem, &semValue); 65 ret = sem_destroy(&sem); 78 sem_t sem; variable 82 ret = sem_init(&sem, 0, testValue); 85 ret = sem_getvalue(&sem, &semValue); 90 ret = sem_destroy(&sem); 103 sem_t sem; variable 107 ret = sem_init(&sem, 128 sem_t sem; global() variable 166 sem_t sem; global() variable 204 sem_t sem; global() variable 217 sem_t *sem = (sem_t*)arg; ThreadChatF01() local 236 sem_t sem; global() variable 272 sem_t *sem = (sem_t*)arg; ThreadSemTimedWait() local 302 sem_t sem; global() variable 334 sem_t *sem = (sem_t*)arg; ThreadNThreadWaitF01() local 349 sem_t *sem = (sem_t*)arg; ThreadNThreadWaitF02() local 379 sem_t sem; global() variable [all...] |
H A D | sem_test.c | 50 sem_t sem; variable 56 ret = sem_init((sem_t *)&sem, 0, testValue[0]); 59 ret = sem_destroy(&sem); 68 sem_t sem; variable 70 ret = sem_init((sem_t *)&sem, 0, 0); 73 ret = sem_post(&sem); 76 ret = sem_post(&sem); 79 ret = sem_post(&sem); 82 ret = sem_destroy(&sem); 90 sem_t sem; variable 112 sem_t *sem = (sem_t *)arg; ThreadChat() local 127 sem_t sem; global() variable 165 sem_t *sem = (sem_t *)arg; ThreadNThreadWait1() local 184 sem_t *sem = (sem_t *)arg; ThreadNThreadWait2() local 207 sem_t sem; global() variable 263 sem_t sem; global() variable 288 sem_t sem; global() variable 305 sem_t sem; global() variable 326 sem_t sem; global() variable [all...] |
H A D | sem_abn_test.c | 53 sem_t sem; variable 56 ret = sem_init(&sem, 0, SEM_VALUE_MAX); 59 ret = sem_getvalue(&sem, &semValue); 64 ret = sem_destroy(&sem); 77 sem_t sem; variable 80 ret = sem_init(&sem, 0, gtSemMax); 95 sem_t sem; variable 97 ret = sem_init(&sem, 0, 1); /* 1, common data for test, no special meaning */ 100 ret = sem_destroy(&sem); 113 sem_t sem; variable 137 sem_t sem; global() variable 167 sem_t sem; global() variable [all...] |
/kernel/liteos_m/kal/posix/src/ |
H A D | semaphore.c | 68 int sem_init(sem_t *sem, int shared, unsigned int value) in sem_init() argument 74 if ((sem == NULL) || (value >= OS_SEM_COUNTING_MAX_COUNT)) { in sem_init() 85 sem->s_magic = (INT32)_SEM_MAGIC; in sem_init() 86 sem->s_handle = (INT32)semHandle; in sem_init() 91 int sem_destroy(sem_t *sem) in sem_destroy() argument 95 if ((sem == NULL) || (sem->s_magic != (INT32)_SEM_MAGIC)) { in sem_destroy() 100 ret = LOS_SemDelete((UINT32)sem->s_handle); in sem_destroy() 109 int sem_wait(sem_t *sem) in sem_wait() argument 113 if ((sem in sem_wait() 127 sem_post(sem_t *sem) sem_post() argument 145 sem_trywait(sem_t *sem) sem_trywait() argument 163 sem_timedwait(sem_t *sem, const struct timespec *timeout) sem_timedwait() argument 192 sem_getvalue(sem_t *sem, int *currVal) sem_getvalue() argument [all...] |
/kernel/linux/linux-5.10/tools/perf/util/ |
H A D | rwsem.c | 5 int init_rwsem(struct rw_semaphore *sem) in init_rwsem() argument 7 return pthread_rwlock_init(&sem->lock, NULL); in init_rwsem() 10 int exit_rwsem(struct rw_semaphore *sem) in exit_rwsem() argument 12 return pthread_rwlock_destroy(&sem->lock); in exit_rwsem() 15 int down_read(struct rw_semaphore *sem) in down_read() argument 17 return perf_singlethreaded ? 0 : pthread_rwlock_rdlock(&sem->lock); in down_read() 20 int up_read(struct rw_semaphore *sem) in up_read() argument 22 return perf_singlethreaded ? 0 : pthread_rwlock_unlock(&sem->lock); in up_read() 25 int down_write(struct rw_semaphore *sem) in down_write() argument 27 return perf_singlethreaded ? 0 : pthread_rwlock_wrlock(&sem in down_write() 30 up_write(struct rw_semaphore *sem) up_write() argument [all...] |
/kernel/linux/linux-6.6/tools/perf/util/ |
H A D | rwsem.c | 5 int init_rwsem(struct rw_semaphore *sem) in init_rwsem() argument 7 return pthread_rwlock_init(&sem->lock, NULL); in init_rwsem() 10 int exit_rwsem(struct rw_semaphore *sem) in exit_rwsem() argument 12 return pthread_rwlock_destroy(&sem->lock); in exit_rwsem() 15 int down_read(struct rw_semaphore *sem) in down_read() argument 17 return perf_singlethreaded ? 0 : pthread_rwlock_rdlock(&sem->lock); in down_read() 20 int up_read(struct rw_semaphore *sem) in up_read() argument 22 return perf_singlethreaded ? 0 : pthread_rwlock_unlock(&sem->lock); in up_read() 25 int down_write(struct rw_semaphore *sem) in down_write() argument 27 return perf_singlethreaded ? 0 : pthread_rwlock_wrlock(&sem in down_write() 30 up_write(struct rw_semaphore *sem) up_write() argument [all...] |
/kernel/linux/linux-6.6/tools/include/linux/ |
H A D | rwsem.h | 11 static inline int init_rwsem(struct rw_semaphore *sem) in init_rwsem() argument 13 return pthread_rwlock_init(&sem->lock, NULL); in init_rwsem() 16 static inline int exit_rwsem(struct rw_semaphore *sem) in exit_rwsem() argument 18 return pthread_rwlock_destroy(&sem->lock); in exit_rwsem() 21 static inline int down_read(struct rw_semaphore *sem) in down_read() argument 23 return pthread_rwlock_rdlock(&sem->lock); in down_read() 26 static inline int up_read(struct rw_semaphore *sem) in up_read() argument 28 return pthread_rwlock_unlock(&sem->lock); in up_read() 31 static inline int down_write(struct rw_semaphore *sem) in down_write() argument 33 return pthread_rwlock_wrlock(&sem in down_write() 36 up_write(struct rw_semaphore *sem) up_write() argument [all...] |
/kernel/liteos_m/testsuites/unittest/posix/src/semaphore/ |
H A D | semaphore_func_test.c | 107 sem_t sem; variable 109 ICUNIT_ASSERT_EQUAL(sem_init((sem_t *)&sem, 0, 0), 0, 0); 113 if (sem_timedwait((sem_t *)&sem, &ts) == -1) { 125 ICUNIT_ASSERT_EQUAL(sem_destroy((sem_t *)&sem), 0, 0); 139 sem_t sem; variable 141 ICUNIT_ASSERT_EQUAL(sem_init((sem_t *)&sem, 0, 1), 0, 0); 146 int ret = sem_timedwait((sem_t *)&sem, &ts); 159 ret = sem_timedwait((sem_t *)&sem, &ts); 167 ICUNIT_ASSERT_EQUAL(sem_destroy((sem_t *)&sem), 0, 0); 180 sem_t sem; variable 225 sem_t sem; global() variable 239 sem_destroy(&sem); global() variable [all...] |