/linux-4.1.27/kernel/locking/ |
H A D | rwsem.h | 2 static inline void rwsem_set_owner(struct rw_semaphore *sem) rwsem_set_owner() argument 4 sem->owner = current; rwsem_set_owner() 7 static inline void rwsem_clear_owner(struct rw_semaphore *sem) rwsem_clear_owner() argument 9 sem->owner = NULL; rwsem_clear_owner() 13 static inline void rwsem_set_owner(struct rw_semaphore *sem) rwsem_set_owner() argument 17 static inline void rwsem_clear_owner(struct rw_semaphore *sem) rwsem_clear_owner() argument
|
H A D | rwsem.c | 19 void __sched down_read(struct rw_semaphore *sem) down_read() argument 22 rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_); down_read() 24 LOCK_CONTENDED(sem, __down_read_trylock, __down_read); down_read() 32 int down_read_trylock(struct rw_semaphore *sem) down_read_trylock() argument 34 int ret = __down_read_trylock(sem); down_read_trylock() 37 rwsem_acquire_read(&sem->dep_map, 0, 1, _RET_IP_); down_read_trylock() 46 void __sched down_write(struct rw_semaphore *sem) down_write() argument 49 rwsem_acquire(&sem->dep_map, 0, 0, _RET_IP_); down_write() 51 LOCK_CONTENDED(sem, __down_write_trylock, __down_write); down_write() 52 rwsem_set_owner(sem); down_write() 60 int down_write_trylock(struct rw_semaphore *sem) down_write_trylock() argument 62 int ret = __down_write_trylock(sem); down_write_trylock() 65 rwsem_acquire(&sem->dep_map, 0, 1, _RET_IP_); down_write_trylock() 66 rwsem_set_owner(sem); down_write_trylock() 77 void up_read(struct rw_semaphore *sem) up_read() argument 79 rwsem_release(&sem->dep_map, 1, _RET_IP_); up_read() 81 __up_read(sem); up_read() 89 void up_write(struct rw_semaphore *sem) up_write() argument 91 rwsem_release(&sem->dep_map, 1, _RET_IP_); up_write() 93 rwsem_clear_owner(sem); up_write() 94 __up_write(sem); up_write() 102 void downgrade_write(struct rw_semaphore *sem) downgrade_write() argument 108 rwsem_clear_owner(sem); downgrade_write() 109 __downgrade_write(sem); downgrade_write() 116 void down_read_nested(struct rw_semaphore *sem, int subclass) down_read_nested() argument 119 rwsem_acquire_read(&sem->dep_map, subclass, 0, _RET_IP_); down_read_nested() 121 LOCK_CONTENDED(sem, __down_read_trylock, __down_read); down_read_nested() 126 void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest) _down_write_nest_lock() argument 129 rwsem_acquire_nest(&sem->dep_map, 0, 0, nest, _RET_IP_); _down_write_nest_lock() 131 LOCK_CONTENDED(sem, __down_write_trylock, __down_write); _down_write_nest_lock() 132 rwsem_set_owner(sem); _down_write_nest_lock() 137 void down_read_non_owner(struct rw_semaphore *sem) down_read_non_owner() argument 141 __down_read(sem); down_read_non_owner() 146 void down_write_nested(struct rw_semaphore *sem, int subclass) down_write_nested() argument 149 rwsem_acquire(&sem->dep_map, subclass, 0, _RET_IP_); down_write_nested() 151 LOCK_CONTENDED(sem, __down_write_trylock, __down_write); down_write_nested() 152 rwsem_set_owner(sem); down_write_nested() 157 void up_read_non_owner(struct rw_semaphore *sem) up_read_non_owner() argument 159 __up_read(sem); up_read_non_owner()
|
H A D | rwsem-spinlock.c | 23 int rwsem_is_locked(struct rw_semaphore *sem) rwsem_is_locked() argument 28 if (raw_spin_trylock_irqsave(&sem->wait_lock, flags)) { rwsem_is_locked() 29 ret = (sem->count != 0); rwsem_is_locked() 30 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); rwsem_is_locked() 39 void __init_rwsem(struct rw_semaphore *sem, const char *name, __init_rwsem() argument 46 debug_check_no_locks_freed((void *)sem, sizeof(*sem)); __init_rwsem() 47 lockdep_init_map(&sem->dep_map, name, key, 0); __init_rwsem() 49 sem->count = 0; __init_rwsem() 50 raw_spin_lock_init(&sem->wait_lock); __init_rwsem() 51 INIT_LIST_HEAD(&sem->wait_list); __init_rwsem() 65 __rwsem_do_wake(struct rw_semaphore *sem, int wakewrite) __rwsem_do_wake() argument 71 waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list); __rwsem_do_wake() 100 if (next == &sem->wait_list) __rwsem_do_wake() 105 sem->count += woken; __rwsem_do_wake() 108 return sem; __rwsem_do_wake() 115 __rwsem_wake_one_writer(struct rw_semaphore *sem) __rwsem_wake_one_writer() argument 119 waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list); __rwsem_wake_one_writer() 122 return sem; __rwsem_wake_one_writer() 128 void __sched __down_read(struct rw_semaphore *sem) __down_read() argument 134 raw_spin_lock_irqsave(&sem->wait_lock, flags); __down_read() 136 if (sem->count >= 0 && list_empty(&sem->wait_list)) { __down_read() 138 sem->count++; __down_read() 139 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); __down_read() 151 list_add_tail(&waiter.list, &sem->wait_list); __down_read() 154 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); __down_read() 172 int __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 178 raw_spin_lock_irqsave(&sem->wait_lock, flags); __down_read_trylock() 180 if (sem->count >= 0 && list_empty(&sem->wait_list)) { __down_read_trylock() 182 sem->count++; __down_read_trylock() 186 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); __down_read_trylock() 194 void __sched __down_write_nested(struct rw_semaphore *sem, int subclass) __down_write_nested() argument 200 raw_spin_lock_irqsave(&sem->wait_lock, flags); __down_write_nested() 206 list_add_tail(&waiter.list, &sem->wait_list); __down_write_nested() 216 if (sem->count == 0) __down_write_nested() 219 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); __down_write_nested() 221 raw_spin_lock_irqsave(&sem->wait_lock, flags); __down_write_nested() 224 sem->count = -1; __down_write_nested() 227 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); __down_write_nested() 230 void __sched __down_write(struct rw_semaphore *sem) __down_write() argument 232 __down_write_nested(sem, 0); __down_write() 238 int __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 243 raw_spin_lock_irqsave(&sem->wait_lock, flags); __down_write_trylock() 245 if (sem->count == 0) { __down_write_trylock() 247 sem->count = -1; __down_write_trylock() 251 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); __down_write_trylock() 259 void __up_read(struct rw_semaphore *sem) __up_read() argument 263 raw_spin_lock_irqsave(&sem->wait_lock, flags); __up_read() 265 if (--sem->count == 0 && !list_empty(&sem->wait_list)) __up_read() 266 sem = __rwsem_wake_one_writer(sem); __up_read() 268 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); __up_read() 274 void __up_write(struct rw_semaphore *sem) __up_write() argument 278 raw_spin_lock_irqsave(&sem->wait_lock, flags); __up_write() 280 sem->count = 0; __up_write() 281 if (!list_empty(&sem->wait_list)) __up_write() 282 sem = __rwsem_do_wake(sem, 1); __up_write() 284 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); __up_write() 291 void __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 295 raw_spin_lock_irqsave(&sem->wait_lock, flags); __downgrade_write() 297 sem->count = 1; __downgrade_write() 298 if (!list_empty(&sem->wait_list)) __downgrade_write() 299 sem = __rwsem_do_wake(sem, 0); __downgrade_write() 301 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); __downgrade_write()
|
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) down() argument 57 raw_spin_lock_irqsave(&sem->lock, flags); down() 58 if (likely(sem->count > 0)) down() 59 sem->count--; down() 61 __down(sem); down() 62 raw_spin_unlock_irqrestore(&sem->lock, flags); down() 68 * @sem: the semaphore to be acquired 75 int down_interruptible(struct semaphore *sem) down_interruptible() argument 80 raw_spin_lock_irqsave(&sem->lock, flags); down_interruptible() 81 if (likely(sem->count > 0)) down_interruptible() 82 sem->count--; down_interruptible() 84 result = __down_interruptible(sem); down_interruptible() 85 raw_spin_unlock_irqrestore(&sem->lock, flags); down_interruptible() 93 * @sem: the semaphore to be acquired 101 int down_killable(struct semaphore *sem) down_killable() argument 106 raw_spin_lock_irqsave(&sem->lock, flags); down_killable() 107 if (likely(sem->count > 0)) down_killable() 108 sem->count--; down_killable() 110 result = __down_killable(sem); down_killable() 111 raw_spin_unlock_irqrestore(&sem->lock, flags); down_killable() 119 * @sem: the semaphore to be acquired 130 int down_trylock(struct semaphore *sem) down_trylock() argument 135 raw_spin_lock_irqsave(&sem->lock, flags); down_trylock() 136 count = sem->count - 1; down_trylock() 138 sem->count = count; down_trylock() 139 raw_spin_unlock_irqrestore(&sem->lock, flags); down_trylock() 147 * @sem: the semaphore to be acquired 155 int down_timeout(struct semaphore *sem, long timeout) down_timeout() argument 160 raw_spin_lock_irqsave(&sem->lock, flags); down_timeout() 161 if (likely(sem->count > 0)) down_timeout() 162 sem->count--; down_timeout() 164 result = __down_timeout(sem, timeout); down_timeout() 165 raw_spin_unlock_irqrestore(&sem->lock, flags); down_timeout() 173 * @sem: the semaphore to release 178 void up(struct semaphore *sem) up() argument 182 raw_spin_lock_irqsave(&sem->lock, flags); up() 183 if (likely(list_empty(&sem->wait_list))) up() 184 sem->count++; up() 186 __up(sem); up() 187 raw_spin_unlock_irqrestore(&sem->lock, flags); up() 204 static inline int __sched __down_common(struct semaphore *sem, long state, __down_common() argument 210 list_add_tail(&waiter.list, &sem->wait_list); __down_common() 220 raw_spin_unlock_irq(&sem->lock); __down_common() 222 raw_spin_lock_irq(&sem->lock); __down_common() 236 static noinline void __sched __down(struct semaphore *sem) __down() argument 238 __down_common(sem, TASK_UNINTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); __down() 241 static noinline int __sched __down_interruptible(struct semaphore *sem) __down_interruptible() argument 243 return __down_common(sem, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); __down_interruptible() 246 static noinline int __sched __down_killable(struct semaphore *sem) __down_killable() argument 248 return __down_common(sem, TASK_KILLABLE, MAX_SCHEDULE_TIMEOUT); __down_killable() 251 static noinline int __sched __down_timeout(struct semaphore *sem, long timeout) __down_timeout() argument 253 return __down_common(sem, TASK_UNINTERRUPTIBLE, timeout); __down_timeout() 256 static noinline void __sched __up(struct semaphore *sem) __up() argument 258 struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list, __up()
|
H A D | rwsem-xadd.c | 73 void __init_rwsem(struct rw_semaphore *sem, const char *name, __init_rwsem() argument 80 debug_check_no_locks_freed((void *)sem, sizeof(*sem)); __init_rwsem() 81 lockdep_init_map(&sem->dep_map, name, key, 0); __init_rwsem() 83 sem->count = RWSEM_UNLOCKED_VALUE; __init_rwsem() 84 raw_spin_lock_init(&sem->wait_lock); __init_rwsem() 85 INIT_LIST_HEAD(&sem->wait_list); __init_rwsem() 87 sem->owner = NULL; __init_rwsem() 88 osq_lock_init(&sem->osq); __init_rwsem() 122 __rwsem_do_wake(struct rw_semaphore *sem, enum rwsem_wake_type wake_type) __rwsem_do_wake() argument 129 waiter = list_entry(sem->wait_list.next, struct rwsem_waiter, list); __rwsem_do_wake() 149 oldcount = rwsem_atomic_update(adjustment, sem) - adjustment; __rwsem_do_wake() 152 if (rwsem_atomic_update(-adjustment, sem) & __rwsem_do_wake() 168 if (waiter->list.next == &sem->wait_list) __rwsem_do_wake() 182 rwsem_atomic_add(adjustment, sem); __rwsem_do_wake() 184 next = sem->wait_list.next; __rwsem_do_wake() 203 sem->wait_list.next = next; __rwsem_do_wake() 204 next->prev = &sem->wait_list; __rwsem_do_wake() 207 return sem; __rwsem_do_wake() 214 struct rw_semaphore __sched *rwsem_down_read_failed(struct rw_semaphore *sem) rwsem_down_read_failed() argument 225 raw_spin_lock_irq(&sem->wait_lock); rwsem_down_read_failed() 226 if (list_empty(&sem->wait_list)) rwsem_down_read_failed() 228 list_add_tail(&waiter.list, &sem->wait_list); rwsem_down_read_failed() 231 count = rwsem_atomic_update(adjustment, sem); rwsem_down_read_failed() 241 sem = __rwsem_do_wake(sem, RWSEM_WAKE_ANY); rwsem_down_read_failed() 243 raw_spin_unlock_irq(&sem->wait_lock); rwsem_down_read_failed() 254 return sem; rwsem_down_read_failed() 258 static inline bool rwsem_try_write_lock(long count, struct rw_semaphore *sem) rwsem_try_write_lock() argument 265 cmpxchg(&sem->count, RWSEM_WAITING_BIAS, rwsem_try_write_lock() 267 if (!list_is_singular(&sem->wait_list)) rwsem_try_write_lock() 268 rwsem_atomic_update(RWSEM_WAITING_BIAS, sem); rwsem_try_write_lock() 269 rwsem_set_owner(sem); rwsem_try_write_lock() 280 static inline bool rwsem_try_write_lock_unqueued(struct rw_semaphore *sem) rwsem_try_write_lock_unqueued() argument 282 long old, count = READ_ONCE(sem->count); rwsem_try_write_lock_unqueued() 288 old = cmpxchg(&sem->count, count, count + RWSEM_ACTIVE_WRITE_BIAS); rwsem_try_write_lock_unqueued() 290 rwsem_set_owner(sem); rwsem_try_write_lock_unqueued() 298 static inline bool rwsem_can_spin_on_owner(struct rw_semaphore *sem) rwsem_can_spin_on_owner() argument 307 owner = READ_ONCE(sem->owner); rwsem_can_spin_on_owner() 309 long count = READ_ONCE(sem->count); rwsem_can_spin_on_owner() 311 * If sem->owner is not set, yet we have just recently entered the rwsem_can_spin_on_owner() 328 bool rwsem_spin_on_owner(struct rw_semaphore *sem, struct task_struct *owner) rwsem_spin_on_owner() argument 333 while (sem->owner == owner) { rwsem_spin_on_owner() 336 * checking sem->owner still matches owner, if that fails, rwsem_spin_on_owner() 352 if (READ_ONCE(sem->owner)) rwsem_spin_on_owner() 360 count = READ_ONCE(sem->count); rwsem_spin_on_owner() 364 static bool rwsem_optimistic_spin(struct rw_semaphore *sem) rwsem_optimistic_spin() argument 371 /* sem->wait_lock should not be held when doing optimistic spinning */ rwsem_optimistic_spin() 372 if (!rwsem_can_spin_on_owner(sem)) rwsem_optimistic_spin() 375 if (!osq_lock(&sem->osq)) rwsem_optimistic_spin() 379 owner = READ_ONCE(sem->owner); rwsem_optimistic_spin() 380 if (owner && !rwsem_spin_on_owner(sem, owner)) rwsem_optimistic_spin() 384 if (rwsem_try_write_lock_unqueued(sem)) { rwsem_optimistic_spin() 406 osq_unlock(&sem->osq); rwsem_optimistic_spin() 413 static bool rwsem_optimistic_spin(struct rw_semaphore *sem) rwsem_optimistic_spin() argument 423 struct rw_semaphore __sched *rwsem_down_write_failed(struct rw_semaphore *sem) rwsem_down_write_failed() argument 430 count = rwsem_atomic_update(-RWSEM_ACTIVE_WRITE_BIAS, sem); rwsem_down_write_failed() 433 if (rwsem_optimistic_spin(sem)) rwsem_down_write_failed() 434 return sem; rwsem_down_write_failed() 438 * and block until we can acquire the sem. rwsem_down_write_failed() 443 raw_spin_lock_irq(&sem->wait_lock); rwsem_down_write_failed() 446 if (list_empty(&sem->wait_list)) rwsem_down_write_failed() 449 list_add_tail(&waiter.list, &sem->wait_list); rwsem_down_write_failed() 453 count = READ_ONCE(sem->count); rwsem_down_write_failed() 461 sem = __rwsem_do_wake(sem, RWSEM_WAKE_READERS); rwsem_down_write_failed() 464 count = rwsem_atomic_update(RWSEM_WAITING_BIAS, sem); rwsem_down_write_failed() 469 if (rwsem_try_write_lock(count, sem)) rwsem_down_write_failed() 471 raw_spin_unlock_irq(&sem->wait_lock); rwsem_down_write_failed() 477 } while ((count = sem->count) & RWSEM_ACTIVE_MASK); rwsem_down_write_failed() 479 raw_spin_lock_irq(&sem->wait_lock); rwsem_down_write_failed() 484 raw_spin_unlock_irq(&sem->wait_lock); rwsem_down_write_failed() 486 return sem; rwsem_down_write_failed() 495 struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem) rwsem_wake() argument 499 raw_spin_lock_irqsave(&sem->wait_lock, flags); rwsem_wake() 502 if (!list_empty(&sem->wait_list)) rwsem_wake() 503 sem = __rwsem_do_wake(sem, RWSEM_WAKE_ANY); rwsem_wake() 505 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); rwsem_wake() 507 return sem; rwsem_wake() 517 struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem) rwsem_downgrade_wake() argument 521 raw_spin_lock_irqsave(&sem->wait_lock, flags); rwsem_downgrade_wake() 524 if (!list_empty(&sem->wait_list)) rwsem_downgrade_wake() 525 sem = __rwsem_do_wake(sem, RWSEM_WAKE_READ_OWNED); rwsem_downgrade_wake() 527 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); rwsem_downgrade_wake() 529 return sem; rwsem_downgrade_wake()
|
/linux-4.1.27/arch/alpha/include/asm/ |
H A D | rwsem.h | 24 static inline void __down_read(struct rw_semaphore *sem) __down_read() argument 28 oldcount = sem->count; __down_read() 29 sem->count += RWSEM_ACTIVE_READ_BIAS; __down_read() 41 :"=&r" (oldcount), "=m" (sem->count), "=&r" (temp) __down_read() 42 :"Ir" (RWSEM_ACTIVE_READ_BIAS), "m" (sem->count) : "memory"); __down_read() 45 rwsem_down_read_failed(sem); __down_read() 51 static inline int __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 55 res = sem->count; __down_read_trylock() 61 res = cmpxchg(&sem->count, old, new); __down_read_trylock() 66 static inline void __down_write(struct rw_semaphore *sem) __down_write() argument 70 oldcount = sem->count; __down_write() 71 sem->count += RWSEM_ACTIVE_WRITE_BIAS; __down_write() 83 :"=&r" (oldcount), "=m" (sem->count), "=&r" (temp) __down_write() 84 :"Ir" (RWSEM_ACTIVE_WRITE_BIAS), "m" (sem->count) : "memory"); __down_write() 87 rwsem_down_write_failed(sem); __down_write() 93 static inline int __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 95 long ret = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, __down_write_trylock() 102 static inline void __up_read(struct rw_semaphore *sem) __up_read() argument 106 oldcount = sem->count; __up_read() 107 sem->count -= RWSEM_ACTIVE_READ_BIAS; __up_read() 119 :"=&r" (oldcount), "=m" (sem->count), "=&r" (temp) __up_read() 120 :"Ir" (RWSEM_ACTIVE_READ_BIAS), "m" (sem->count) : "memory"); __up_read() 124 rwsem_wake(sem); __up_read() 127 static inline void __up_write(struct rw_semaphore *sem) __up_write() argument 131 sem->count -= RWSEM_ACTIVE_WRITE_BIAS; __up_write() 132 count = sem->count; __up_write() 145 :"=&r" (count), "=m" (sem->count), "=&r" (temp) __up_write() 146 :"Ir" (RWSEM_ACTIVE_WRITE_BIAS), "m" (sem->count) : "memory"); __up_write() 150 rwsem_wake(sem); __up_write() 156 static inline void __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 160 oldcount = sem->count; __downgrade_write() 161 sem->count -= RWSEM_WAITING_BIAS; __downgrade_write() 173 :"=&r" (oldcount), "=m" (sem->count), "=&r" (temp) __downgrade_write() 174 :"Ir" (-RWSEM_WAITING_BIAS), "m" (sem->count) : "memory"); __downgrade_write() 177 rwsem_downgrade_wake(sem); __downgrade_write() 180 static inline void rwsem_atomic_add(long val, struct rw_semaphore *sem) rwsem_atomic_add() argument 183 sem->count += val; rwsem_atomic_add() 194 :"=&r" (temp), "=m" (sem->count) rwsem_atomic_add() 195 :"Ir" (val), "m" (sem->count)); rwsem_atomic_add() 199 static inline long rwsem_atomic_update(long val, struct rw_semaphore *sem) rwsem_atomic_update() argument 202 sem->count += val; rwsem_atomic_update() 203 return sem->count; rwsem_atomic_update() 215 :"=&r" (ret), "=m" (sem->count), "=&r" (temp) rwsem_atomic_update() 216 :"Ir" (val), "m" (sem->count)); rwsem_atomic_update()
|
/linux-4.1.27/arch/sparc/include/asm/ |
H A D | rwsem.h | 26 static inline void __down_read(struct rw_semaphore *sem) __down_read() argument 28 if (unlikely(atomic64_inc_return((atomic64_t *)(&sem->count)) <= 0L)) __down_read() 29 rwsem_down_read_failed(sem); __down_read() 32 static inline int __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 36 while ((tmp = sem->count) >= 0L) { __down_read_trylock() 37 if (tmp == cmpxchg(&sem->count, tmp, __down_read_trylock() 48 static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) __down_write_nested() argument 53 (atomic64_t *)(&sem->count)); __down_write_nested() 55 rwsem_down_write_failed(sem); __down_write_nested() 58 static inline void __down_write(struct rw_semaphore *sem) __down_write() argument 60 __down_write_nested(sem, 0); __down_write() 63 static inline int __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 67 tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, __down_write_trylock() 75 static inline void __up_read(struct rw_semaphore *sem) __up_read() argument 79 tmp = atomic64_dec_return((atomic64_t *)(&sem->count)); __up_read() 81 rwsem_wake(sem); __up_read() 87 static inline void __up_write(struct rw_semaphore *sem) __up_write() argument 90 (atomic64_t *)(&sem->count)) < 0L)) __up_write() 91 rwsem_wake(sem); __up_write() 97 static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) rwsem_atomic_add() argument 99 atomic64_add(delta, (atomic64_t *)(&sem->count)); rwsem_atomic_add() 105 static inline void __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 109 tmp = atomic64_add_return(-RWSEM_WAITING_BIAS, (atomic64_t *)(&sem->count)); __downgrade_write() 111 rwsem_downgrade_wake(sem); __downgrade_write() 117 static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) rwsem_atomic_update() argument 119 return atomic64_add_return(delta, (atomic64_t *)(&sem->count)); rwsem_atomic_update()
|
/linux-4.1.27/arch/sh/include/asm/ |
H A D | rwsem.h | 25 static inline void __down_read(struct rw_semaphore *sem) __down_read() argument 27 if (atomic_inc_return((atomic_t *)(&sem->count)) > 0) __down_read() 30 rwsem_down_read_failed(sem); __down_read() 33 static inline int __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 37 while ((tmp = sem->count) >= 0) { __down_read_trylock() 38 if (tmp == cmpxchg(&sem->count, tmp, __down_read_trylock() 50 static inline void __down_write(struct rw_semaphore *sem) __down_write() argument 55 (atomic_t *)(&sem->count)); __down_write() 59 rwsem_down_write_failed(sem); __down_write() 62 static inline int __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 66 tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, __down_write_trylock() 75 static inline void __up_read(struct rw_semaphore *sem) __up_read() argument 80 tmp = atomic_dec_return((atomic_t *)(&sem->count)); __up_read() 82 rwsem_wake(sem); __up_read() 88 static inline void __up_write(struct rw_semaphore *sem) __up_write() argument 92 (atomic_t *)(&sem->count)) < 0) __up_write() 93 rwsem_wake(sem); __up_write() 99 static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem) rwsem_atomic_add() argument 101 atomic_add(delta, (atomic_t *)(&sem->count)); rwsem_atomic_add() 107 static inline void __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 112 tmp = atomic_add_return(-RWSEM_WAITING_BIAS, (atomic_t *)(&sem->count)); __downgrade_write() 114 rwsem_downgrade_wake(sem); __downgrade_write() 117 static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) __down_write_nested() argument 119 __down_write(sem); __down_write_nested() 125 static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem) rwsem_atomic_update() argument 128 return atomic_add_return(delta, (atomic_t *)(&sem->count)); rwsem_atomic_update()
|
/linux-4.1.27/include/asm-generic/ |
H A D | rwsem.h | 34 static inline void __down_read(struct rw_semaphore *sem) __down_read() argument 36 if (unlikely(atomic_long_inc_return((atomic_long_t *)&sem->count) <= 0)) __down_read() 37 rwsem_down_read_failed(sem); __down_read() 40 static inline int __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 44 while ((tmp = sem->count) >= 0) { __down_read_trylock() 45 if (tmp == cmpxchg(&sem->count, tmp, __down_read_trylock() 56 static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) __down_write_nested() argument 61 (atomic_long_t *)&sem->count); __down_write_nested() 63 rwsem_down_write_failed(sem); __down_write_nested() 66 static inline void __down_write(struct rw_semaphore *sem) __down_write() argument 68 __down_write_nested(sem, 0); __down_write() 71 static inline int __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 75 tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, __down_write_trylock() 83 static inline void __up_read(struct rw_semaphore *sem) __up_read() argument 87 tmp = atomic_long_dec_return((atomic_long_t *)&sem->count); __up_read() 89 rwsem_wake(sem); __up_read() 95 static inline void __up_write(struct rw_semaphore *sem) __up_write() argument 98 (atomic_long_t *)&sem->count) < 0)) __up_write() 99 rwsem_wake(sem); __up_write() 105 static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) rwsem_atomic_add() argument 107 atomic_long_add(delta, (atomic_long_t *)&sem->count); rwsem_atomic_add() 113 static inline void __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 118 (atomic_long_t *)&sem->count); __downgrade_write() 120 rwsem_downgrade_wake(sem); __downgrade_write() 126 static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) rwsem_atomic_update() argument 128 return atomic_long_add_return(delta, (atomic_long_t *)&sem->count); rwsem_atomic_update()
|
H A D | pgtable.h | 661 * walk ptes while holding the mmap sem in read mode (write mode don't
|
/linux-4.1.27/drivers/tty/ |
H A D | tty_ldsem.c | 77 static inline long ldsem_atomic_update(long delta, struct ld_semaphore *sem) ldsem_atomic_update() argument 79 return atomic_long_add_return(delta, (atomic_long_t *)&sem->count); ldsem_atomic_update() 83 * ldsem_cmpxchg() updates @*old with the last-known sem->count value. 85 * Returns 0 if count was not changed; @*old will have most recent sem->count 87 static inline int ldsem_cmpxchg(long *old, long new, struct ld_semaphore *sem) ldsem_cmpxchg() argument 89 long tmp = atomic_long_cmpxchg(&sem->count, *old, new); ldsem_cmpxchg() 102 void __init_ldsem(struct ld_semaphore *sem, const char *name, __init_ldsem() argument 109 debug_check_no_locks_freed((void *)sem, sizeof(*sem)); __init_ldsem() 110 lockdep_init_map(&sem->dep_map, name, key, 0); __init_ldsem() 112 sem->count = LDSEM_UNLOCKED; __init_ldsem() 113 sem->wait_readers = 0; __init_ldsem() 114 raw_spin_lock_init(&sem->wait_lock); __init_ldsem() 115 INIT_LIST_HEAD(&sem->read_wait); __init_ldsem() 116 INIT_LIST_HEAD(&sem->write_wait); __init_ldsem() 119 static void __ldsem_wake_readers(struct ld_semaphore *sem) __ldsem_wake_readers() argument 129 adjust = sem->wait_readers * (LDSEM_ACTIVE_BIAS - LDSEM_WAIT_BIAS); __ldsem_wake_readers() 130 count = ldsem_atomic_update(adjust, sem); __ldsem_wake_readers() 134 if (ldsem_cmpxchg(&count, count - adjust, sem)) __ldsem_wake_readers() 138 list_for_each_entry_safe(waiter, next, &sem->read_wait, list) { __ldsem_wake_readers() 145 INIT_LIST_HEAD(&sem->read_wait); __ldsem_wake_readers() 146 sem->wait_readers = 0; __ldsem_wake_readers() 149 static inline int writer_trylock(struct ld_semaphore *sem) writer_trylock() argument 154 long count = ldsem_atomic_update(LDSEM_ACTIVE_BIAS, sem); writer_trylock() 158 if (ldsem_cmpxchg(&count, count - LDSEM_ACTIVE_BIAS, sem)) writer_trylock() 163 static void __ldsem_wake_writer(struct ld_semaphore *sem) __ldsem_wake_writer() argument 167 waiter = list_entry(sem->write_wait.next, struct ldsem_waiter, list); __ldsem_wake_writer() 179 static void __ldsem_wake(struct ld_semaphore *sem) __ldsem_wake() argument 181 if (!list_empty(&sem->write_wait)) __ldsem_wake() 182 __ldsem_wake_writer(sem); __ldsem_wake() 183 else if (!list_empty(&sem->read_wait)) __ldsem_wake() 184 __ldsem_wake_readers(sem); __ldsem_wake() 187 static void ldsem_wake(struct ld_semaphore *sem) ldsem_wake() argument 191 raw_spin_lock_irqsave(&sem->wait_lock, flags); ldsem_wake() 192 __ldsem_wake(sem); ldsem_wake() 193 raw_spin_unlock_irqrestore(&sem->wait_lock, flags); ldsem_wake() 200 down_read_failed(struct ld_semaphore *sem, long count, long timeout) down_read_failed() argument 207 raw_spin_lock_irq(&sem->wait_lock); down_read_failed() 213 if (ldsem_cmpxchg(&count, count + adjust, sem)) down_read_failed() 216 raw_spin_unlock_irq(&sem->wait_lock); down_read_failed() 217 return sem; down_read_failed() 221 list_add_tail(&waiter.list, &sem->read_wait); down_read_failed() 222 sem->wait_readers++; down_read_failed() 229 __ldsem_wake(sem); down_read_failed() 231 raw_spin_unlock_irq(&sem->wait_lock); down_read_failed() 250 raw_spin_lock_irq(&sem->wait_lock); down_read_failed() 252 ldsem_atomic_update(-LDSEM_WAIT_BIAS, sem); down_read_failed() 254 raw_spin_unlock_irq(&sem->wait_lock); down_read_failed() 258 raw_spin_unlock_irq(&sem->wait_lock); down_read_failed() 261 return sem; down_read_failed() 268 down_write_failed(struct ld_semaphore *sem, long count, long timeout) down_write_failed() argument 276 raw_spin_lock_irq(&sem->wait_lock); down_write_failed() 282 if (ldsem_cmpxchg(&count, count + adjust, sem)) down_write_failed() 285 raw_spin_unlock_irq(&sem->wait_lock); down_write_failed() 286 return sem; down_write_failed() 290 list_add_tail(&waiter.list, &sem->write_wait); down_write_failed() 298 raw_spin_unlock_irq(&sem->wait_lock); down_write_failed() 300 raw_spin_lock_irq(&sem->wait_lock); down_write_failed() 302 if ((locked = writer_trylock(sem))) down_write_failed() 307 ldsem_atomic_update(-LDSEM_WAIT_BIAS, sem); down_write_failed() 309 raw_spin_unlock_irq(&sem->wait_lock); down_write_failed() 316 return sem; down_write_failed() 321 static inline int __ldsem_down_read_nested(struct ld_semaphore *sem, __ldsem_down_read_nested() argument 326 lockdep_acquire_read(sem, subclass, 0, _RET_IP_); __ldsem_down_read_nested() 328 count = ldsem_atomic_update(LDSEM_READ_BIAS, sem); __ldsem_down_read_nested() 330 lock_stat(sem, contended); __ldsem_down_read_nested() 331 if (!down_read_failed(sem, count, timeout)) { __ldsem_down_read_nested() 332 lockdep_release(sem, 1, _RET_IP_); __ldsem_down_read_nested() 336 lock_stat(sem, acquired); __ldsem_down_read_nested() 340 static inline int __ldsem_down_write_nested(struct ld_semaphore *sem, __ldsem_down_write_nested() argument 345 lockdep_acquire(sem, subclass, 0, _RET_IP_); __ldsem_down_write_nested() 347 count = ldsem_atomic_update(LDSEM_WRITE_BIAS, sem); __ldsem_down_write_nested() 349 lock_stat(sem, contended); __ldsem_down_write_nested() 350 if (!down_write_failed(sem, count, timeout)) { __ldsem_down_write_nested() 351 lockdep_release(sem, 1, _RET_IP_); __ldsem_down_write_nested() 355 lock_stat(sem, acquired); __ldsem_down_write_nested() 363 int __sched ldsem_down_read(struct ld_semaphore *sem, long timeout) ldsem_down_read() argument 366 return __ldsem_down_read_nested(sem, 0, timeout); ldsem_down_read() 372 int ldsem_down_read_trylock(struct ld_semaphore *sem) ldsem_down_read_trylock() argument 374 long count = sem->count; ldsem_down_read_trylock() 377 if (ldsem_cmpxchg(&count, count + LDSEM_READ_BIAS, sem)) { ldsem_down_read_trylock() 378 lockdep_acquire_read(sem, 0, 1, _RET_IP_); ldsem_down_read_trylock() 379 lock_stat(sem, acquired); ldsem_down_read_trylock() 389 int __sched ldsem_down_write(struct ld_semaphore *sem, long timeout) ldsem_down_write() argument 392 return __ldsem_down_write_nested(sem, 0, timeout); ldsem_down_write() 398 int ldsem_down_write_trylock(struct ld_semaphore *sem) ldsem_down_write_trylock() argument 400 long count = sem->count; ldsem_down_write_trylock() 403 if (ldsem_cmpxchg(&count, count + LDSEM_WRITE_BIAS, sem)) { ldsem_down_write_trylock() 404 lockdep_acquire(sem, 0, 1, _RET_IP_); ldsem_down_write_trylock() 405 lock_stat(sem, acquired); ldsem_down_write_trylock() 415 void ldsem_up_read(struct ld_semaphore *sem) ldsem_up_read() argument 419 lockdep_release(sem, 1, _RET_IP_); ldsem_up_read() 421 count = ldsem_atomic_update(-LDSEM_READ_BIAS, sem); ldsem_up_read() 423 ldsem_wake(sem); ldsem_up_read() 429 void ldsem_up_write(struct ld_semaphore *sem) ldsem_up_write() argument 433 lockdep_release(sem, 1, _RET_IP_); ldsem_up_write() 435 count = ldsem_atomic_update(-LDSEM_WRITE_BIAS, sem); ldsem_up_write() 437 ldsem_wake(sem); ldsem_up_write() 443 int ldsem_down_read_nested(struct ld_semaphore *sem, int subclass, long timeout) ldsem_down_read_nested() argument 446 return __ldsem_down_read_nested(sem, subclass, timeout); ldsem_down_read_nested() 449 int ldsem_down_write_nested(struct ld_semaphore *sem, int subclass, ldsem_down_write_nested() argument 453 return __ldsem_down_write_nested(sem, subclass, timeout); ldsem_down_write_nested()
|
H A D | n_tty.c | 1978 * Called under the ldata->atomic_read_lock sem
|
/linux-4.1.27/arch/xtensa/include/asm/ |
H A D | rwsem.h | 30 static inline void __down_read(struct rw_semaphore *sem) __down_read() argument 32 if (atomic_add_return(1,(atomic_t *)(&sem->count)) > 0) __down_read() 35 rwsem_down_read_failed(sem); __down_read() 38 static inline int __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 42 while ((tmp = sem->count) >= 0) { __down_read_trylock() 43 if (tmp == cmpxchg(&sem->count, tmp, __down_read_trylock() 55 static inline void __down_write(struct rw_semaphore *sem) __down_write() argument 60 (atomic_t *)(&sem->count)); __down_write() 64 rwsem_down_write_failed(sem); __down_write() 67 static inline int __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 71 tmp = cmpxchg(&sem->count, RWSEM_UNLOCKED_VALUE, __down_write_trylock() 80 static inline void __up_read(struct rw_semaphore *sem) __up_read() argument 85 tmp = atomic_sub_return(1,(atomic_t *)(&sem->count)); __up_read() 87 rwsem_wake(sem); __up_read() 93 static inline void __up_write(struct rw_semaphore *sem) __up_write() argument 97 (atomic_t *)(&sem->count)) < 0) __up_write() 98 rwsem_wake(sem); __up_write() 104 static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem) rwsem_atomic_add() argument 106 atomic_add(delta, (atomic_t *)(&sem->count)); rwsem_atomic_add() 112 static inline void __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 117 tmp = atomic_add_return(-RWSEM_WAITING_BIAS, (atomic_t *)(&sem->count)); __downgrade_write() 119 rwsem_downgrade_wake(sem); __downgrade_write() 125 static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem) rwsem_atomic_update() argument 128 return atomic_add_return(delta, (atomic_t *)(&sem->count)); rwsem_atomic_update()
|
/linux-4.1.27/include/linux/ |
H A D | semaphore.h | 32 static inline void sema_init(struct semaphore *sem, int val) sema_init() argument 35 *sem = (struct semaphore) __SEMAPHORE_INITIALIZER(*sem, val); sema_init() 36 lockdep_init_map(&sem->lock.dep_map, "semaphore->lock", &__key, 0); sema_init() 39 extern void down(struct semaphore *sem); 40 extern int __must_check down_interruptible(struct semaphore *sem); 41 extern int __must_check down_killable(struct semaphore *sem); 42 extern int __must_check down_trylock(struct semaphore *sem); 43 extern int __must_check down_timeout(struct semaphore *sem, long jiffies); 44 extern void up(struct semaphore *sem);
|
H A D | rwsem.h | 44 extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); 45 extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); 47 extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); 53 static inline int rwsem_is_locked(struct rw_semaphore *sem) rwsem_is_locked() argument 55 return sem->count != 0; rwsem_is_locked() 84 extern void __init_rwsem(struct rw_semaphore *sem, const char *name, 87 #define init_rwsem(sem) \ 91 __init_rwsem((sem), #sem, &__key); \ 100 static inline int rwsem_is_contended(struct rw_semaphore *sem) rwsem_is_contended() argument 102 return !list_empty(&sem->wait_list); rwsem_is_contended() 108 extern void down_read(struct rw_semaphore *sem); 113 extern int down_read_trylock(struct rw_semaphore *sem); 118 extern void down_write(struct rw_semaphore *sem); 123 extern int down_write_trylock(struct rw_semaphore *sem); 128 extern void up_read(struct rw_semaphore *sem); 133 extern void up_write(struct rw_semaphore *sem); 138 extern void downgrade_write(struct rw_semaphore *sem); 154 extern void down_read_nested(struct rw_semaphore *sem, int subclass); 155 extern void down_write_nested(struct rw_semaphore *sem, int subclass); 156 extern void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest_lock); 158 # define down_write_nest_lock(sem, nest_lock) \ 161 _down_write_nest_lock(sem, &(nest_lock)->dep_map); \ 170 extern void down_read_non_owner(struct rw_semaphore *sem); 171 extern void up_read_non_owner(struct rw_semaphore *sem); 173 # define down_read_nested(sem, subclass) down_read(sem) 174 # define down_write_nest_lock(sem, nest_lock) down_write(sem) 175 # define down_write_nested(sem, subclass) down_write(sem) 176 # define down_read_non_owner(sem) down_read(sem) 177 # define up_read_non_owner(sem) up_read(sem)
|
H A D | rwsem-spinlock.h | 34 extern void __down_read(struct rw_semaphore *sem); 35 extern int __down_read_trylock(struct rw_semaphore *sem); 36 extern void __down_write(struct rw_semaphore *sem); 37 extern void __down_write_nested(struct rw_semaphore *sem, int subclass); 38 extern int __down_write_trylock(struct rw_semaphore *sem); 39 extern void __up_read(struct rw_semaphore *sem); 40 extern void __up_write(struct rw_semaphore *sem); 41 extern void __downgrade_write(struct rw_semaphore *sem); 42 extern int rwsem_is_locked(struct rw_semaphore *sem);
|
H A D | sem.h | 7 #include <uapi/linux/sem.h> 16 struct sem *sem_base; /* ptr to first semaphore in array */
|
H A D | tty_ldisc.h | 148 extern void __init_ldsem(struct ld_semaphore *sem, const char *name, 151 #define init_ldsem(sem) \ 155 __init_ldsem((sem), #sem, &__key); \ 159 extern int ldsem_down_read(struct ld_semaphore *sem, long timeout); 160 extern int ldsem_down_read_trylock(struct ld_semaphore *sem); 161 extern int ldsem_down_write(struct ld_semaphore *sem, long timeout); 162 extern int ldsem_down_write_trylock(struct ld_semaphore *sem); 163 extern void ldsem_up_read(struct ld_semaphore *sem); 164 extern void ldsem_up_write(struct ld_semaphore *sem); 167 extern int ldsem_down_read_nested(struct ld_semaphore *sem, int subclass, 169 extern int ldsem_down_write_nested(struct ld_semaphore *sem, int subclass, 172 # define ldsem_down_read_nested(sem, subclass, timeout) \ 173 ldsem_down_read(sem, timeout) 174 # define ldsem_down_write_nested(sem, subclass, timeout) \ 175 ldsem_down_write(sem, timeout)
|
H A D | key.h | 139 struct rw_semaphore sem; /* change vs change sem */ member in struct:key 340 rwsem_is_locked(&((struct key *)(KEY))->sem)))
|
H A D | serio.h | 45 struct serio_driver *drv; /* accessed from interrupt, must be protected by serio->lock and serio->sem */
|
H A D | key-type.h | 154 struct lock_class_key lock_class; /* key->sem lock class */
|
H A D | uwb.h | 340 * @priv: Backend implementation; rw with uwb_dev.dev.sem taken. 342 * only with uwb_dev.dev.sem taken.
|
H A D | compat.h | 12 #include <linux/sem.h>
|
H A D | syscalls.h | 76 #include <linux/sem.h>
|
H A D | sched.h | 35 #include <linux/sem.h>
|
/linux-4.1.27/arch/ia64/include/asm/ |
H A D | rwsem.h | 41 __down_read (struct rw_semaphore *sem) __down_read() argument 43 long result = ia64_fetchadd8_acq((unsigned long *)&sem->count, 1); __down_read() 46 rwsem_down_read_failed(sem); __down_read() 53 __down_write (struct rw_semaphore *sem) __down_write() argument 58 old = sem->count; __down_write() 60 } while (cmpxchg_acq(&sem->count, old, new) != old); __down_write() 63 rwsem_down_write_failed(sem); __down_write() 70 __up_read (struct rw_semaphore *sem) __up_read() argument 72 long result = ia64_fetchadd8_rel((unsigned long *)&sem->count, -1); __up_read() 75 rwsem_wake(sem); __up_read() 82 __up_write (struct rw_semaphore *sem) __up_write() argument 87 old = sem->count; __up_write() 89 } while (cmpxchg_rel(&sem->count, old, new) != old); __up_write() 92 rwsem_wake(sem); __up_write() 99 __down_read_trylock (struct rw_semaphore *sem) __down_read_trylock() argument 102 while ((tmp = sem->count) >= 0) { __down_read_trylock() 103 if (tmp == cmpxchg_acq(&sem->count, tmp, tmp+1)) { __down_read_trylock() 114 __down_write_trylock (struct rw_semaphore *sem) __down_write_trylock() argument 116 long tmp = cmpxchg_acq(&sem->count, RWSEM_UNLOCKED_VALUE, __down_write_trylock() 125 __downgrade_write (struct rw_semaphore *sem) __downgrade_write() argument 130 old = sem->count; __downgrade_write() 132 } while (cmpxchg_rel(&sem->count, old, new) != old); __downgrade_write() 135 rwsem_downgrade_wake(sem); __downgrade_write() 142 #define rwsem_atomic_add(delta, sem) atomic64_add(delta, (atomic64_t *)(&(sem)->count)) 143 #define rwsem_atomic_update(delta, sem) atomic64_add_return(delta, (atomic64_t *)(&(sem)->count))
|
/linux-4.1.27/arch/s390/include/asm/ |
H A D | rwsem.h | 52 static inline void __down_read(struct rw_semaphore *sem) __down_read() argument 62 : "=&d" (old), "=&d" (new), "=Q" (sem->count) __down_read() 63 : "Q" (sem->count), "i" (RWSEM_ACTIVE_READ_BIAS) __down_read() 66 rwsem_down_read_failed(sem); __down_read() 72 static inline int __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 84 : "=&d" (old), "=&d" (new), "=Q" (sem->count) __down_read_trylock() 85 : "Q" (sem->count), "i" (RWSEM_ACTIVE_READ_BIAS) __down_read_trylock() 93 static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) __down_write_nested() argument 104 : "=&d" (old), "=&d" (new), "=Q" (sem->count) __down_write_nested() 105 : "Q" (sem->count), "m" (tmp) __down_write_nested() 108 rwsem_down_write_failed(sem); __down_write_nested() 111 static inline void __down_write(struct rw_semaphore *sem) __down_write() argument 113 __down_write_nested(sem, 0); __down_write() 119 static inline int __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 130 : "=&d" (old), "=Q" (sem->count) __down_write_trylock() 131 : "Q" (sem->count), "d" (RWSEM_ACTIVE_WRITE_BIAS) __down_write_trylock() 139 static inline void __up_read(struct rw_semaphore *sem) __up_read() argument 149 : "=&d" (old), "=&d" (new), "=Q" (sem->count) __up_read() 150 : "Q" (sem->count), "i" (-RWSEM_ACTIVE_READ_BIAS) __up_read() 154 rwsem_wake(sem); __up_read() 160 static inline void __up_write(struct rw_semaphore *sem) __up_write() argument 171 : "=&d" (old), "=&d" (new), "=Q" (sem->count) __up_write() 172 : "Q" (sem->count), "m" (tmp) __up_write() 176 rwsem_wake(sem); __up_write() 182 static inline void __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 193 : "=&d" (old), "=&d" (new), "=Q" (sem->count) __downgrade_write() 194 : "Q" (sem->count), "m" (tmp) __downgrade_write() 197 rwsem_downgrade_wake(sem); __downgrade_write() 203 static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) rwsem_atomic_add() argument 213 : "=&d" (old), "=&d" (new), "=Q" (sem->count) rwsem_atomic_add() 214 : "Q" (sem->count), "d" (delta) rwsem_atomic_add() 221 static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) rwsem_atomic_update() argument 231 : "=&d" (old), "=&d" (new), "=Q" (sem->count) rwsem_atomic_update() 232 : "Q" (sem->count), "d" (delta) rwsem_atomic_update()
|
/linux-4.1.27/arch/x86/include/asm/ |
H A D | rwsem.h | 63 static inline void __down_read(struct rw_semaphore *sem) __down_read() argument 72 : "+m" (sem->count) __down_read() 73 : "a" (sem) __down_read() 80 static inline int __down_read_trylock(struct rw_semaphore *sem) __down_read_trylock() argument 93 : "+m" (sem->count), "=&a" (result), "=&r" (tmp) __down_read_trylock() 102 static inline void __down_write_nested(struct rw_semaphore *sem, int subclass) __down_write_nested() argument 114 : "+m" (sem->count), "=d" (tmp) __down_write_nested() 115 : "a" (sem), "1" (RWSEM_ACTIVE_WRITE_BIAS) __down_write_nested() 119 static inline void __down_write(struct rw_semaphore *sem) __down_write() argument 121 __down_write_nested(sem, 0); __down_write() 127 static inline int __down_write_trylock(struct rw_semaphore *sem) __down_write_trylock() argument 144 : "+m" (sem->count), "=&a" (result), "=&r" (tmp) __down_write_trylock() 153 static inline void __up_read(struct rw_semaphore *sem) __up_read() argument 163 : "+m" (sem->count), "=d" (tmp) __up_read() 164 : "a" (sem), "1" (-RWSEM_ACTIVE_READ_BIAS) __up_read() 171 static inline void __up_write(struct rw_semaphore *sem) __up_write() argument 181 : "+m" (sem->count), "=d" (tmp) __up_write() 182 : "a" (sem), "1" (-RWSEM_ACTIVE_WRITE_BIAS) __up_write() 189 static inline void __downgrade_write(struct rw_semaphore *sem) __downgrade_write() argument 201 : "+m" (sem->count) __downgrade_write() 202 : "a" (sem), "er" (-RWSEM_WAITING_BIAS) __downgrade_write() 209 static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem) rwsem_atomic_add() argument 212 : "+m" (sem->count) rwsem_atomic_add() 219 static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem) rwsem_atomic_update() argument 221 return delta + xadd(&sem->count, delta); rwsem_atomic_update()
|
/linux-4.1.27/arch/ia64/include/uapi/asm/ |
H A D | intrinsics.h | 41 #define IA64_FETCHADD(tmp,v,n,sz,sem) \ 45 tmp = ia64_fetchadd4_##sem((unsigned int *) v, n); \ 49 tmp = ia64_fetchadd8_##sem((unsigned long *) v, n); \ 57 #define ia64_fetchadd(i,v,sem) \ 63 IA64_FETCHADD(_tmp, _v, -16, sizeof(*(v)), sem); \ 65 IA64_FETCHADD(_tmp, _v, -8, sizeof(*(v)), sem); \ 67 IA64_FETCHADD(_tmp, _v, -4, sizeof(*(v)), sem); \ 69 IA64_FETCHADD(_tmp, _v, -1, sizeof(*(v)), sem); \ 71 IA64_FETCHADD(_tmp, _v, 1, sizeof(*(v)), sem); \ 73 IA64_FETCHADD(_tmp, _v, 4, sizeof(*(v)), sem); \ 75 IA64_FETCHADD(_tmp, _v, 8, sizeof(*(v)), sem); \ 77 IA64_FETCHADD(_tmp, _v, 16, sizeof(*(v)), sem); \
|
H A D | cmpxchg.h | 72 #define ia64_cmpxchg(sem, ptr, old, new, size) \ 94 _r_ = ia64_cmpxchg1_##sem((__u8 *) ptr, new, _o_); \ 98 _r_ = ia64_cmpxchg2_##sem((__u16 *) ptr, new, _o_); \ 102 _r_ = ia64_cmpxchg4_##sem((__u32 *) ptr, new, _o_); \ 106 _r_ = ia64_cmpxchg8_##sem((__u64 *) ptr, new, _o_); \
|
/linux-4.1.27/arch/mips/include/asm/ |
H A D | pmon.h | 27 int (*semlock) (int sem); 28 void (*semunlock) (int sem); 43 #define pmon_semlock(sem) debug_vectors->semlock(sem) 44 #define pmon_semunlock(sem) debug_vectors->semunlock(sem)
|
/linux-4.1.27/drivers/i2c/busses/ |
H A D | i2c-designware-baytrail.c | 32 static int get_sem(struct device *dev, u32 *sem) get_sem() argument 44 *sem = data & PUNIT_SEMAPHORE_BIT; get_sem() 67 u32 sem; baytrail_i2c_acquire() local 91 ret = get_sem(dev->dev, &sem); baytrail_i2c_acquire() 92 if (!ret && sem) { baytrail_i2c_acquire() 106 PUNIT_SEMAPHORE, &sem); baytrail_i2c_acquire() 110 dev_err(dev->dev, "PUNIT SEM: %d\n", sem); baytrail_i2c_acquire()
|
/linux-4.1.27/drivers/gpu/drm/radeon/ |
H A D | radeon_trace.h | 169 TP_PROTO(int ring, struct radeon_semaphore *sem), 171 TP_ARGS(ring, sem), 181 __entry->waiters = sem->waiters; 182 __entry->gpu_addr = sem->gpu_addr; 191 TP_PROTO(int ring, struct radeon_semaphore *sem), 193 TP_ARGS(ring, sem) 198 TP_PROTO(int ring, struct radeon_semaphore *sem), 200 TP_ARGS(ring, sem)
|
/linux-4.1.27/fs/jffs2/ |
H A D | dir.c | 92 mutex_lock(&dir_f->sem); jffs2_lookup() 105 mutex_unlock(&dir_f->sem); jffs2_lookup() 130 mutex_lock(&f->sem); jffs2_readdir() 151 mutex_unlock(&f->sem); jffs2_readdir() 195 no chance of AB-BA deadlock involving its f->sem). */ jffs2_create() 196 mutex_unlock(&f->sem); jffs2_create() 266 mutex_lock(&f->sem); jffs2_link() 268 mutex_unlock(&f->sem); jffs2_link() 342 mutex_unlock(&f->sem); jffs2_symlink() 352 mutex_unlock(&f->sem); jffs2_symlink() 365 mutex_unlock(&f->sem); jffs2_symlink() 391 mutex_lock(&dir_f->sem); jffs2_symlink() 414 mutex_unlock(&dir_f->sem); jffs2_symlink() 427 mutex_unlock(&dir_f->sem); jffs2_symlink() 500 mutex_unlock(&f->sem); jffs2_mkdir() 509 mutex_unlock(&f->sem); jffs2_mkdir() 535 mutex_lock(&dir_f->sem); jffs2_mkdir() 558 mutex_unlock(&dir_f->sem); jffs2_mkdir() 572 mutex_unlock(&dir_f->sem); jffs2_mkdir() 673 mutex_unlock(&f->sem); jffs2_mknod() 682 mutex_unlock(&f->sem); jffs2_mknod() 708 mutex_lock(&dir_f->sem); jffs2_mknod() 734 mutex_unlock(&dir_f->sem); jffs2_mknod() 747 mutex_unlock(&dir_f->sem); jffs2_mknod() 778 mutex_lock(&victim_f->sem); jffs2_rename() 781 mutex_unlock(&victim_f->sem); jffs2_rename() 785 mutex_unlock(&victim_f->sem); jffs2_rename() 817 mutex_lock(&victim_f->sem); jffs2_rename() 822 mutex_unlock(&victim_f->sem); jffs2_rename() 840 mutex_lock(&f->sem); jffs2_rename() 844 mutex_unlock(&f->sem); jffs2_rename()
|
H A D | write.c | 145 mutex_unlock(&f->sem); jffs2_write_dnode() 150 mutex_lock(&f->sem); jffs2_write_dnode() 297 mutex_unlock(&f->sem); jffs2_write_dirent() 302 mutex_lock(&f->sem); jffs2_write_dirent() 368 mutex_lock(&f->sem); jffs2_write_inode_range() 396 mutex_unlock(&f->sem); jffs2_write_inode_range() 419 mutex_unlock(&f->sem); jffs2_write_inode_range() 423 mutex_unlock(&f->sem); jffs2_write_inode_range() 459 mutex_lock(&f->sem); jffs2_do_create() 472 mutex_unlock(&f->sem); jffs2_do_create() 481 mutex_unlock(&f->sem); jffs2_do_create() 507 mutex_lock(&dir_f->sem); jffs2_do_create() 531 mutex_unlock(&dir_f->sem); jffs2_do_create() 540 mutex_unlock(&dir_f->sem); jffs2_do_create() 569 mutex_lock(&dir_f->sem); jffs2_do_unlink() 592 mutex_unlock(&dir_f->sem); jffs2_do_unlink() 598 mutex_unlock(&dir_f->sem); jffs2_do_unlink() 606 mutex_lock(&dir_f->sem); jffs2_do_unlink() 625 mutex_unlock(&dir_f->sem); jffs2_do_unlink() 633 mutex_lock(&dead_f->sem); jffs2_do_unlink() 659 mutex_unlock(&dead_f->sem); jffs2_do_unlink() 686 mutex_lock(&dir_f->sem); jffs2_do_link() 711 mutex_unlock(&dir_f->sem); jffs2_do_link() 719 mutex_unlock(&dir_f->sem); jffs2_do_link()
|
H A D | file.c | 127 mutex_lock(&f->sem); jffs2_readpage() 129 mutex_unlock(&f->sem); jffs2_readpage() 166 mutex_lock(&f->sem); jffs2_write_begin() 193 mutex_unlock(&f->sem); jffs2_write_begin() 208 mutex_unlock(&f->sem); jffs2_write_begin() 213 mutex_unlock(&f->sem); jffs2_write_begin() 222 mutex_lock(&f->sem); jffs2_write_begin() 224 mutex_unlock(&f->sem); jffs2_write_begin()
|
H A D | symlink.c | 38 * We don't acquire the f->sem mutex here since the only data we jffs2_follow_link() 60 * We will unlock the f->sem mutex but VFS will use the f->target string. This is safe jffs2_follow_link()
|
H A D | fs.c | 58 mutex_lock(&f->sem); jffs2_do_setattr() 62 mutex_unlock(&f->sem); jffs2_do_setattr() 67 mutex_unlock(&f->sem); jffs2_do_setattr() 71 mutex_unlock(&f->sem); jffs2_do_setattr() 91 mutex_lock(&f->sem); jffs2_do_setattr() 144 mutex_unlock(&f->sem); jffs2_do_setattr() 175 mutex_unlock(&f->sem); jffs2_do_setattr() 178 /* We have to do the truncate_setsize() without f->sem held, since jffs2_do_setattr() 272 mutex_lock(&f->sem); jffs2_iget() 277 mutex_unlock(&f->sem); jffs2_iget() 356 mutex_unlock(&f->sem); jffs2_iget() 365 mutex_unlock(&f->sem); jffs2_iget() 442 mutex_lock(&f->sem); jffs2_new_inode() 460 mutex_unlock(&f->sem); jffs2_new_inode() 467 mutex_unlock(&f->sem); jffs2_new_inode() 484 mutex_unlock(&f->sem); jffs2_new_inode()
|
H A D | jffs2_fs_i.h | 27 struct mutex sem; member in struct:jffs2_inode_info
|
H A D | readinode.c | 1206 mutex_unlock(&f->sem); jffs2_do_read_inode_internal() 1215 mutex_unlock(&f->sem); jffs2_do_read_inode_internal() 1254 mutex_unlock(&f->sem); jffs2_do_read_inode_internal() 1261 mutex_unlock(&f->sem); jffs2_do_read_inode_internal() 1274 mutex_unlock(&f->sem); jffs2_do_read_inode_internal() 1292 mutex_unlock(&f->sem); jffs2_do_read_inode_internal() 1299 mutex_unlock(&f->sem); jffs2_do_read_inode_internal() 1308 mutex_unlock(&f->sem); jffs2_do_read_inode_internal() 1398 mutex_init(&f->sem); jffs2_do_crccheck_inode() 1399 mutex_lock(&f->sem); jffs2_do_crccheck_inode() 1404 mutex_unlock(&f->sem); jffs2_do_crccheck_inode() 1418 mutex_lock(&f->sem); jffs2_do_clear_inode() 1450 mutex_unlock(&f->sem); jffs2_do_clear_inode()
|
H A D | background.c | 121 /* Put_super will send a SIGKILL and then wait on the sem. jffs2_garbage_collect_thread()
|
H A D | debug.c | 69 mutex_lock(&f->sem); __jffs2_dbg_fragtree_paranoia_check() 71 mutex_unlock(&f->sem); __jffs2_dbg_fragtree_paranoia_check() 697 mutex_lock(&f->sem); __jffs2_dbg_dump_fragtree() 699 mutex_unlock(&f->sem); __jffs2_dbg_dump_fragtree()
|
H A D | gc.c | 486 mutex_lock(&f->sem); jffs2_garbage_collect_live() 566 mutex_unlock(&f->sem); jffs2_garbage_collect_live() 1299 /* The rules state that we must obtain the page lock *before* f->sem, so jffs2_garbage_collect_dnode() 1300 * drop f->sem temporarily. Since we also hold c->alloc_sem, nothing's jffs2_garbage_collect_dnode() 1307 mutex_unlock(&f->sem); jffs2_garbage_collect_dnode() 1309 mutex_lock(&f->sem); jffs2_garbage_collect_dnode()
|
H A D | super.c | 62 mutex_init(&f->sem); jffs2_i_init_once()
|
H A D | nodemgmt.c | 85 jffs2_dbg(1, "%s(): alloc sem got\n", __func__); jffs2_reserve_space() 353 /* Called with alloc sem _and_ erase_completion_lock */ jffs2_do_reserve_space()
|
H A D | wbuf.c | 512 /* We don't lock f->sem. There's a number of ways we could jffs2_wbuf_recover()
|
/linux-4.1.27/drivers/gpu/drm/gma500/ |
H A D | mmu.c | 106 down_write(&driver->sem); 108 up_write(&driver->sem); 118 down_write(&driver->sem); psb_mmu_flush() 135 up_write(&driver->sem); psb_mmu_flush() 145 down_write(&pd->driver->sem); psb_mmu_set_pd_context() 150 up_write(&pd->driver->sem); psb_mmu_set_pd_context() 255 down_write(&driver->sem); psb_mmu_free_pagedir() 275 up_write(&driver->sem); psb_mmu_free_pagedir() 422 down_read(&driver->sem); psb_mmu_get_default_pd() 424 up_read(&driver->sem); psb_mmu_get_default_pd() 468 init_rwsem(&driver->sem); psb_mmu_driver_init() 469 down_write(&driver->sem); psb_mmu_driver_init() 500 up_write(&driver->sem); psb_mmu_driver_init() 574 down_read(&pd->driver->sem); psb_mmu_remove_pfn_sequence() 596 up_read(&pd->driver->sem); psb_mmu_remove_pfn_sequence() 626 down_read(&pd->driver->sem); psb_mmu_remove_pages() 654 up_read(&pd->driver->sem); psb_mmu_remove_pages() 672 down_read(&pd->driver->sem); psb_mmu_insert_pfn_sequence() 698 up_read(&pd->driver->sem); psb_mmu_insert_pfn_sequence() 734 down_read(&pd->driver->sem); psb_mmu_insert_pages() 765 up_read(&pd->driver->sem); psb_mmu_insert_pages() 781 down_read(&pd->driver->sem); psb_mmu_virtual_to_pfn() 810 up_read(&pd->driver->sem); psb_mmu_virtual_to_pfn()
|
H A D | gtt.h | 36 struct rw_semaphore sem; member in struct:psb_gtt
|
H A D | mmu.h | 22 struct rw_semaphore sem; member in struct:psb_mmu_driver
|
H A D | psb_drv.c | 185 down_read(&pg->sem); psb_driver_unload() 191 up_read(&pg->sem); psb_driver_unload() 341 down_read(&pg->sem); psb_driver_load() 346 up_read(&pg->sem); psb_driver_load()
|
H A D | gtt.c | 393 init_rwsem(&dev_priv->gtt.sem); psb_gtt_alloc()
|
/linux-4.1.27/drivers/staging/comedi/drivers/ |
H A D | usbduxfast.c | 164 struct semaphore sem; member in struct:usbduxfast_private 229 down(&devpriv->sem); usbduxfast_ai_cancel() 231 up(&devpriv->sem); usbduxfast_ai_cancel() 439 down(&devpriv->sem); usbduxfast_ai_inttrig() 447 up(&devpriv->sem); usbduxfast_ai_inttrig() 454 up(&devpriv->sem); usbduxfast_ai_inttrig() 471 down(&devpriv->sem); usbduxfast_ai_cmd() 474 up(&devpriv->sem); usbduxfast_ai_cmd() 490 up(&devpriv->sem); usbduxfast_ai_cmd() 497 up(&devpriv->sem); usbduxfast_ai_cmd() 513 up(&devpriv->sem); usbduxfast_ai_cmd() 518 up(&devpriv->sem); usbduxfast_ai_cmd() 525 up(&devpriv->sem); usbduxfast_ai_cmd() 775 up(&devpriv->sem); usbduxfast_ai_cmd() 782 up(&devpriv->sem); usbduxfast_ai_cmd() 793 up(&devpriv->sem); usbduxfast_ai_cmd() 800 up(&devpriv->sem); usbduxfast_ai_cmd() 821 down(&devpriv->sem); usbduxfast_ai_insn_read() 826 up(&devpriv->sem); usbduxfast_ai_insn_read() 848 up(&devpriv->sem); usbduxfast_ai_insn_read() 858 up(&devpriv->sem); usbduxfast_ai_insn_read() 869 up(&devpriv->sem); usbduxfast_ai_insn_read() 875 up(&devpriv->sem); usbduxfast_ai_insn_read() 884 up(&devpriv->sem); usbduxfast_ai_insn_read() 895 down(&devpriv->sem); usbduxfast_attach_common() 899 up(&devpriv->sem); usbduxfast_attach_common() 917 up(&devpriv->sem); usbduxfast_attach_common() 1011 sema_init(&devpriv->sem, 1); usbduxfast_auto_attach() 1052 down(&devpriv->sem); usbduxfast_detach() 1072 up(&devpriv->sem); usbduxfast_detach()
|
H A D | usbduxsigma.c | 175 struct semaphore sem; member in struct:usbduxsigma_private 201 down(&devpriv->sem); usbduxsigma_ai_cancel() 204 up(&devpriv->sem); usbduxsigma_ai_cancel() 324 down(&devpriv->sem); usbduxsigma_ao_cancel() 327 up(&devpriv->sem); usbduxsigma_ao_cancel() 619 down(&devpriv->sem); usbduxsigma_ai_inttrig() 626 up(&devpriv->sem); usbduxsigma_ai_inttrig() 631 up(&devpriv->sem); usbduxsigma_ai_inttrig() 648 down(&devpriv->sem); usbduxsigma_ai_cmd() 682 up(&devpriv->sem); usbduxsigma_ai_cmd() 695 up(&devpriv->sem); usbduxsigma_ai_cmd() 703 up(&devpriv->sem); usbduxsigma_ai_cmd() 721 down(&devpriv->sem); usbduxsigma_ai_insn_read() 723 up(&devpriv->sem); usbduxsigma_ai_insn_read() 740 up(&devpriv->sem); usbduxsigma_ai_insn_read() 749 up(&devpriv->sem); usbduxsigma_ai_insn_read() 761 up(&devpriv->sem); usbduxsigma_ai_insn_read() 774 down(&devpriv->sem); usbduxsigma_ao_insn_read() 776 up(&devpriv->sem); usbduxsigma_ao_insn_read() 791 down(&devpriv->sem); usbduxsigma_ao_insn_write() 793 up(&devpriv->sem); usbduxsigma_ao_insn_write() 803 up(&devpriv->sem); usbduxsigma_ao_insn_write() 808 up(&devpriv->sem); usbduxsigma_ao_insn_write() 824 down(&devpriv->sem); usbduxsigma_ao_inttrig() 831 up(&devpriv->sem); usbduxsigma_ao_inttrig() 836 up(&devpriv->sem); usbduxsigma_ao_inttrig() 874 up(&devpriv->sem); usbduxsigma_ao_cmdtest() 925 down(&devpriv->sem); usbduxsigma_ao_cmd() 950 up(&devpriv->sem); usbduxsigma_ao_cmd() 958 up(&devpriv->sem); usbduxsigma_ao_cmd() 989 down(&devpriv->sem); usbduxsigma_dio_insn_bits() 1016 up(&devpriv->sem); usbduxsigma_dio_insn_bits() 1491 sema_init(&devpriv->sem, 1); usbduxsigma_auto_attach() 1605 down(&devpriv->sem); usbduxsigma_detach() 1614 up(&devpriv->sem); usbduxsigma_detach()
|
H A D | usbdux.c | 213 struct semaphore sem; member in struct:usbdux_private 240 down(&devpriv->sem); usbdux_ai_cancel() 243 up(&devpriv->sem); usbdux_ai_cancel() 368 down(&devpriv->sem); usbdux_ao_cancel() 371 up(&devpriv->sem); usbdux_ao_cancel() 659 down(&devpriv->sem); usbdux_ai_inttrig() 675 up(&devpriv->sem); usbdux_ai_inttrig() 688 down(&devpriv->sem); usbdux_ai_cmd() 749 up(&devpriv->sem); usbdux_ai_cmd() 767 down(&devpriv->sem); usbdux_ai_insn_read() 795 up(&devpriv->sem); usbdux_ai_insn_read() 808 down(&devpriv->sem); usbdux_ao_insn_read() 810 up(&devpriv->sem); usbdux_ao_insn_read() 827 down(&devpriv->sem); usbdux_ao_insn_write() 851 up(&devpriv->sem); usbdux_ao_insn_write() 867 down(&devpriv->sem); usbdux_ao_inttrig() 883 up(&devpriv->sem); usbdux_ao_inttrig() 977 down(&devpriv->sem); usbdux_ao_cmd() 1019 up(&devpriv->sem); usbdux_ao_cmd() 1050 down(&devpriv->sem); usbdux_dio_insn_bits() 1072 up(&devpriv->sem); usbdux_dio_insn_bits() 1087 down(&devpriv->sem); usbdux_counter_read() 1101 up(&devpriv->sem); usbdux_counter_read() 1117 down(&devpriv->sem); usbdux_counter_write() 1129 up(&devpriv->sem); usbdux_counter_write() 1165 down(&devpriv->sem); usbdux_pwm_cancel() 1169 up(&devpriv->sem); usbdux_pwm_cancel() 1274 down(&devpriv->sem); usbdux_pwm_start() 1293 up(&devpriv->sem); usbdux_pwm_start() 1593 sema_init(&devpriv->sem, 1); usbdux_auto_attach() 1708 down(&devpriv->sem); usbdux_detach() 1717 up(&devpriv->sem); usbdux_detach()
|
H A D | dt9812.c | 236 struct semaphore sem; member in struct:dt9812_private 338 down(&devpriv->sem); dt9812_digital_in() 348 up(&devpriv->sem); dt9812_digital_in() 360 down(&devpriv->sem); dt9812_digital_out() 362 up(&devpriv->sem); dt9812_digital_out() 447 down(&devpriv->sem); dt9812_analog_in() 496 up(&devpriv->sem); dt9812_analog_in() 507 down(&devpriv->sem); dt9812_analog_out() 548 up(&devpriv->sem); dt9812_analog_out() 611 down(&devpriv->sem); dt9812_ao_insn_read() 613 up(&devpriv->sem); dt9812_ao_insn_read() 777 sema_init(&devpriv->sem, 1); dt9812_auto_attach() 849 down(&devpriv->sem); dt9812_detach() 853 up(&devpriv->sem); dt9812_detach()
|
H A D | ni_usb6501.c | 169 struct semaphore sem; member in struct:ni6501_private 186 down(&devpriv->sem); ni6501_port_command() 251 up(&devpriv->sem); ni6501_port_command() 268 down(&devpriv->sem); ni6501_counter_command() 341 up(&devpriv->sem); ni6501_counter_command() 543 sema_init(&devpriv->sem, 1); ni6501_auto_attach() 581 down(&devpriv->sem); ni6501_detach() 588 up(&devpriv->sem); ni6501_detach()
|
/linux-4.1.27/drivers/net/ethernet/mellanox/mlx4/ |
H A D | reset.c | 51 u32 sem; mlx4_reset() local 104 sem = readl(reset + MLX4_SEM_OFFSET); mlx4_reset() 105 if (!sem) mlx4_reset() 111 if (sem) { mlx4_reset()
|
/linux-4.1.27/arch/unicore32/kernel/ |
H A D | sys.c | 17 #include <linux/sem.h>
|
/linux-4.1.27/arch/mn10300/kernel/ |
H A D | sys_mn10300.c | 16 #include <linux/sem.h>
|
/linux-4.1.27/arch/cris/kernel/ |
H A D | sys_cris.c | 18 #include <linux/sem.h>
|
/linux-4.1.27/arch/arm/kernel/ |
H A D | sys_arm.c | 19 #include <linux/sem.h>
|
H A D | sys_oabi-compat.c | 81 #include <linux/sem.h>
|
/linux-4.1.27/drivers/input/joystick/ |
H A D | turbografx.c | 84 struct mutex sem; member in struct:tgfx 126 err = mutex_lock_interruptible(&tgfx->sem); tgfx_open() 136 mutex_unlock(&tgfx->sem); tgfx_open() 144 mutex_lock(&tgfx->sem); tgfx_close() 150 mutex_unlock(&tgfx->sem); tgfx_close() 189 mutex_init(&tgfx->sem); tgfx_probe()
|
/linux-4.1.27/kernel/ |
H A D | taskstats.c | 68 struct rw_semaphore sem; member in struct:listener_list 135 down_read(&listeners->sem); send_cpu_listeners() 150 up_read(&listeners->sem); send_cpu_listeners() 159 down_write(&listeners->sem); send_cpu_listeners() 166 up_write(&listeners->sem); send_cpu_listeners() 307 down_write(&listeners->sem); for_each_cpu() 315 up_write(&listeners->sem); for_each_cpu() 325 down_write(&listeners->sem); for_each_cpu() 333 up_write(&listeners->sem); for_each_cpu() 689 init_rwsem(&(per_cpu(listener_array, i).sem)); for_each_possible_cpu()
|
H A D | fork.c | 22 #include <linux/sem.h> 1987 /* Orphan segments in old ns (see sem above). */ SYSCALL_DEFINE1()
|
H A D | sysctl_binary.c | 103 { CTL_INT, KERN_SEM, "sem" },
|
H A D | futex.c | 1887 * Must be called with hash bucket lock held and mm->sem held for non
|
/linux-4.1.27/ipc/ |
H A D | sem.c | 2 * linux/ipc/sem.c 6 * /proc/sysvipc/sem support (c) 1999 Dragos Acostachioaie <dragos@iname.com> 38 * to /proc/sys/kernel/sem. 39 * - statistics about the usage are reported in /proc/sysvipc/sem. 93 struct sem { struct 194 ipc_init_proc_interface("sysvipc/sem", sem_init() 219 struct sem *curr; unmerge_queues() 240 struct sem *sem = sma->sem_base + i; merge_queues() local 242 list_splice_init(&sem->pending_alter, &sma->pending_alter); merge_queues() 258 * The code must pair with spin_unlock(&sem->lock) or 275 struct sem *sem; sem_wait_array() local 279 * all sem->lock locks. Thus we don't need to wait again. sem_wait_array() 285 sem = sma->sem_base + i; sem_wait_array() 286 spin_unlock_wait(&sem->lock); sem_wait_array() 301 struct sem *sem; sem_lock() local 327 * thus just locking sem->lock is sufficient. sem_lock() 329 sem = sma->sem_base + sops->sem_num; sem_lock() 336 spin_lock(&sem->lock); sem_lock() 350 * It can't change anymore until we drop sem->lock. sem_lock() 358 spin_unlock(&sem->lock); sem_lock() 369 spin_lock(&sem->lock); sem_lock() 387 struct sem *sem = sma->sem_base + locknum; sem_unlock() local 388 spin_unlock(&sem->lock); sem_unlock() 468 * performing any operation on the sem array. 510 size = sizeof(*sma) + nsems * sizeof(struct sem); newary() 527 sma->sem_base = (struct sem *) &sma[1]; newary() 617 struct sem *curr; perform_atomic_semop() 1118 struct sem *sem = sma->sem_base + i; freeary() local 1119 list_for_each_entry_safe(q, tq, &sem->pending_const, list) { freeary() 1123 list_for_each_entry_safe(q, tq, &sem->pending_alter, list) { freeary() 1272 struct sem *curr; semctl_setval() 1342 struct sem *curr; semctl_main() 1923 struct sem *curr; SYSCALL_DEFINE4() 2142 struct sem *semaphore = &sma->sem_base[i]; exit_sem()
|
H A D | ipc_sysctl.c | 171 .procname = "sem",
|
H A D | mqueue.c | 911 * ipc/sem.c for more details.
|
/linux-4.1.27/drivers/media/usb/as102/ |
H A D | as102_drv.c | 148 if (mutex_lock_interruptible(&as102_dev->sem)) as102_dvb_dmx_start_feed() 158 mutex_unlock(&as102_dev->sem); as102_dvb_dmx_start_feed() 167 if (mutex_lock_interruptible(&as102_dev->sem)) as102_dvb_dmx_stop_feed() 177 mutex_unlock(&as102_dev->sem); as102_dvb_dmx_stop_feed() 356 mutex_init(&as102_dev->sem); as102_dvb_register()
|
H A D | as102_drv.h | 73 struct mutex sem; member in struct:as102_dev_t
|
/linux-4.1.27/tools/power/acpi/os_specific/service_layers/ |
H A D | osunixxf.c | 645 sem_t *sem; acpi_os_create_semaphore() local 654 sem = acpi_os_create_semaphore() 657 if (!sem) { acpi_os_create_semaphore() 664 sem = acpi_os_allocate(sizeof(sem_t)); acpi_os_create_semaphore() 665 if (!sem) { acpi_os_create_semaphore() 669 if (sem_init(sem, 0, initial_units) == -1) { acpi_os_create_semaphore() 670 acpi_os_free(sem); acpi_os_create_semaphore() 675 *out_handle = (acpi_handle) sem; acpi_os_create_semaphore() 693 sem_t *sem = (sem_t *) handle; acpi_os_delete_semaphore() local 695 if (!sem) { acpi_os_delete_semaphore() 699 if (sem_destroy(sem) == -1) { acpi_os_delete_semaphore() 724 sem_t *sem = (sem_t *) handle; acpi_os_wait_semaphore() local 730 if (!sem) { acpi_os_wait_semaphore() 744 if (sem_trywait(sem) == -1) { acpi_os_wait_semaphore() 753 if (sem_wait(sem)) { acpi_os_wait_semaphore() 768 if (sem_trywait(sem) == 0) { acpi_os_wait_semaphore() 804 while (((ret_val = sem_timedwait(sem, &time)) == -1) acpi_os_wait_semaphore() 837 sem_t *sem = (sem_t *) handle; acpi_os_signal_semaphore() local 839 if (!sem) { acpi_os_signal_semaphore() 843 if (sem_post(sem) == -1) { acpi_os_signal_semaphore()
|
/linux-4.1.27/net/dns_resolver/ |
H A D | dns_query.c | 131 down_read(&rkey->sem); dns_query() 145 lockdep_is_held(&rkey->sem)); dns_query() 161 up_read(&rkey->sem); dns_query()
|
/linux-4.1.27/drivers/gpu/host1x/ |
H A D | cdma.h | 70 struct semaphore sem; /* signalled when event occurs */ member in struct:host1x_cdma 71 enum cdma_event event; /* event that sem is waiting for */
|
H A D | cdma.c | 165 down(&cdma->sem); host1x_cdma_wait_locked() 265 up(&cdma->sem); update_cdma_locked() 367 sema_init(&cdma->sem, 0); host1x_cdma_init()
|
/linux-4.1.27/drivers/staging/rtl8723au/include/ |
H A D | osdep_service.h | 37 #include <linux/sem.h>
|
/linux-4.1.27/arch/sh/kernel/ |
H A D | sys_sh32.c | 5 #include <linux/sem.h>
|
H A D | sys_sh.c | 14 #include <linux/sem.h>
|
/linux-4.1.27/arch/microblaze/kernel/ |
H A D | sys_microblaze.c | 20 #include <linux/sem.h>
|
/linux-4.1.27/include/uapi/linux/ |
H A D | ipc.h | 36 * see also specific commands in sem.h, msg.h and shm.h
|
H A D | sem.h | 27 struct sem *sem_base; /* ptr to first semaphore in array */
|
/linux-4.1.27/arch/blackfin/kernel/ |
H A D | sys_bfin.c | 11 #include <linux/sem.h>
|
/linux-4.1.27/arch/frv/kernel/ |
H A D | sys_frv.c | 18 #include <linux/sem.h>
|
/linux-4.1.27/arch/m32r/kernel/ |
H A D | sys_m32r.c | 15 #include <linux/sem.h>
|
/linux-4.1.27/security/keys/encrypted-keys/ |
H A D | masterkey_trusted.c | 41 down_read(&tkey->sem); request_trusted_key()
|
H A D | encrypted.c | 316 down_read(&ukey->sem); request_user_key() 702 up_read(&mkey->sem); encrypted_key_decrypt() 940 up_read(&mkey->sem); encrypted_read() 949 up_read(&mkey->sem); encrypted_read()
|
/linux-4.1.27/security/keys/ |
H A D | request_key_auth.c | 109 * Called with the key sem write-locked. 175 down_read(&cred->request_key_auth->sem); request_key_auth_new() 186 up_read(&cred->request_key_auth->sem); request_key_auth_new() 220 up_read(&cred->request_key_auth->sem); request_key_auth_new()
|
H A D | process_keys.c | 281 down_write(&tsk->cred->thread_keyring->sem); key_fsuid_changed() 283 up_write(&tsk->cred->thread_keyring->sem); key_fsuid_changed() 295 down_write(&tsk->cred->thread_keyring->sem); key_fsgid_changed() 297 up_write(&tsk->cred->thread_keyring->sem); key_fsgid_changed() 457 down_read(&cred->request_key_auth->sem); search_process_keyrings() 466 up_read(&cred->request_key_auth->sem); search_process_keyrings() 473 up_read(&cred->request_key_auth->sem); search_process_keyrings() 644 down_read(&ctx.cred->request_key_auth->sem); lookup_user_key() 654 up_read(&ctx.cred->request_key_auth->sem); lookup_user_key()
|
H A D | key.c | 285 init_rwsem(&key->sem); key_alloc() 286 lockdep_set_class(&key->sem, &type->lock_class); key_alloc() 656 * We return with the sem read-locked if successful. If the type wasn't 685 down_write(&key->sem); key_set_timeout() 695 up_write(&key->sem); key_set_timeout() 728 down_write(&key->sem); __key_update() 735 up_write(&key->sem); __key_update() 955 down_write(&key->sem); key_update() 962 up_write(&key->sem); key_update() 989 * authorisation key whilst holding the sem on a key we've just key_revoke() 992 down_write_nested(&key->sem, 1); key_revoke() 1005 up_write(&key->sem); key_revoke() 1023 down_write_nested(&key->sem, 1); key_invalidate() 1026 up_write(&key->sem); key_invalidate()
|
H A D | persistent.c | 20 * Called with the namespace's sem locked for writing. 40 * Called with the namespace's sem locked for writing.
|
H A D | keyring.c | 1074 __acquires(&keyring->sem) 1088 down_write(&keyring->sem); 1131 up_write(&keyring->sem); 1175 __releases(&keyring->sem) 1191 up_write(&keyring->sem); 1270 down_write(&keyring->sem); key_unlink() 1287 up_write(&keyring->sem); key_unlink() 1308 down_write(&keyring->sem); keyring_clear() 1320 up_write(&keyring->sem); keyring_clear() 1328 * This is called with the key sem write-locked. 1391 down_write(&keyring->sem); keyring_gc() 1394 up_write(&keyring->sem); keyring_gc()
|
H A D | big_key.c | 122 * - called with the key sem write-locked
|
H A D | user_defined.c | 142 * - called with the key sem write-locked
|
H A D | gc.c | 353 down_write(&key->sem); key_garbage_collector() 358 up_write(&key->sem); key_garbage_collector()
|
H A D | keyctl.c | 765 down_read(&key->sem); keyctl_read_key() 769 up_read(&key->sem); keyctl_read_key() 825 down_write(&key->sem); keyctl_chown_key() 889 up_write(&key->sem); keyctl_chown_key() 931 down_write(&key->sem); keyctl_setperm_key() 939 up_write(&key->sem); keyctl_setperm_key()
|
H A D | request_key.c | 273 down_read(&authkey->sem); construct_get_dest_keyring() 279 up_read(&authkey->sem); construct_get_dest_keyring()
|
/linux-4.1.27/drivers/net/ethernet/mellanox/mlx5/core/ |
H A D | cmd.c | 485 struct semaphore *sem; cmd_work_handler() local 487 sem = ent->page_queue ? &cmd->pages_sem : &cmd->sem; cmd_work_handler() 488 down(sem); cmd_work_handler() 493 up(sem); cmd_work_handler() 1050 down(&cmd->sem); mlx5_cmd_use_events() 1060 up(&cmd->sem); mlx5_cmd_use_events() 1069 down(&cmd->sem); mlx5_cmd_use_polling() 1078 up(&cmd->sem); mlx5_cmd_use_polling() 1108 struct semaphore *sem; mlx5_cmd_comp_handler() local 1112 sem = &cmd->pages_sem; mlx5_cmd_comp_handler() 1114 sem = &cmd->sem; mlx5_cmd_comp_handler() 1154 up(sem); mlx5_cmd_comp_handler() 1425 sema_init(&cmd->sem, cmd->max_reg_cmds); mlx5_cmd_init()
|
/linux-4.1.27/drivers/char/xilinx_hwicap/ |
H A D | xilinx_hwicap.c | 361 status = mutex_lock_interruptible(&drvdata->sem); hwicap_read() 432 mutex_unlock(&drvdata->sem); hwicap_read() 447 status = mutex_lock_interruptible(&drvdata->sem); hwicap_write() 521 mutex_unlock(&drvdata->sem); hwicap_write() 533 status = mutex_lock_interruptible(&drvdata->sem); hwicap_open() 554 mutex_unlock(&drvdata->sem); hwicap_open() 566 mutex_lock(&drvdata->sem); hwicap_release() 585 mutex_unlock(&drvdata->sem); hwicap_release() 671 mutex_init(&drvdata->sem); hwicap_setup()
|
H A D | xilinx_hwicap.h | 60 struct mutex sem; member in struct:hwicap_drvdata
|
/linux-4.1.27/arch/arm/mach-vexpress/ |
H A D | spc.c | 109 struct semaphore sem; member in struct:ve_spc_drvdata 340 if (down_timeout(&info->sem, usecs_to_jiffies(TIMEOUT_US))) ve_spc_set_performance() 350 up(&info->sem); ve_spc_set_performance() 359 if (down_timeout(&info->sem, usecs_to_jiffies(TIMEOUT_US))) ve_spc_read_sys_cfg() 373 up(&info->sem); ve_spc_read_sys_cfg() 480 sema_init(&info->sem, 1); ve_spc_init()
|
/linux-4.1.27/lib/ |
H A D | digsig.c | 86 down_read(&key->sem); digsig_verify_rsa() 169 up_read(&key->sem); digsig_verify_rsa()
|
/linux-4.1.27/drivers/staging/rtl8712/ |
H A D | osdep_service.h | 37 #include <linux/sem.h>
|
H A D | rtl871x_event.h | 33 #include <linux/sem.h>
|
/linux-4.1.27/drivers/staging/rtl8188eu/include/ |
H A D | rtw_event.h | 27 #include <linux/sem.h>
|
H A D | osdep_service.h | 44 #include <linux/sem.h>
|
/linux-4.1.27/drivers/acpi/ |
H A D | osl.c | 1252 struct semaphore *sem = NULL; acpi_os_create_semaphore() local 1254 sem = acpi_os_allocate_zeroed(sizeof(struct semaphore)); acpi_os_create_semaphore() 1255 if (!sem) acpi_os_create_semaphore() 1258 sema_init(sem, initial_units); acpi_os_create_semaphore() 1260 *handle = (acpi_handle *) sem; acpi_os_create_semaphore() 1277 struct semaphore *sem = (struct semaphore *)handle; acpi_os_delete_semaphore() local 1279 if (!sem) acpi_os_delete_semaphore() 1284 BUG_ON(!list_empty(&sem->wait_list)); acpi_os_delete_semaphore() 1285 kfree(sem); acpi_os_delete_semaphore() 1286 sem = NULL; acpi_os_delete_semaphore() 1297 struct semaphore *sem = (struct semaphore *)handle; acpi_os_wait_semaphore() local 1301 if (!sem || (units < 1)) acpi_os_wait_semaphore() 1315 ret = down_timeout(sem, jiffies); acpi_os_wait_semaphore() 1338 struct semaphore *sem = (struct semaphore *)handle; acpi_os_signal_semaphore() local 1340 if (!sem || (units < 1)) acpi_os_signal_semaphore() 1349 up(sem); acpi_os_signal_semaphore()
|
/linux-4.1.27/arch/s390/kernel/ |
H A D | sys_s390.c | 19 #include <linux/sem.h>
|
H A D | compat_linux.c | 26 #include <linux/sem.h>
|
/linux-4.1.27/drivers/net/irda/ |
H A D | sir_dev.c | 100 * On entry, fsm->sem is always locked and the netdev xmit queue stopped. 272 up(&fsm->sem); sirdev_config_fsm() 293 if (down_trylock(&fsm->sem)) { sirdev_schedule_request() 298 down(&fsm->sem); sirdev_schedule_request() 304 up(&fsm->sem); sirdev_schedule_request() 353 down(&dev->fsm.sem); /* block until config change completed */ sirdev_set_dongle() 355 up(&dev->fsm.sem); sirdev_set_dongle() 844 down(&dev->fsm.sem); /* block on pending config completion */ sirdev_close() 865 up(&dev->fsm.sem); sirdev_close() 913 sema_init(&dev->fsm.sem, 1); sirdev_get_instance() 954 down(&dev->fsm.sem); sirdev_put_instance() 958 up(&dev->fsm.sem); sirdev_put_instance()
|
H A D | sir-dev.h | 24 struct semaphore sem; member in struct:sir_fsm
|
/linux-4.1.27/drivers/net/ethernet/qlogic/qlcnic/ |
H A D | qlcnic_hw.c | 318 qlcnic_pcie_sem_lock(struct qlcnic_adapter *adapter, int sem, u32 id_reg) qlcnic_pcie_sem_lock() argument 323 done = QLCRD32(adapter, QLCNIC_PCIE_REG(PCIE_SEM_LOCK(sem)), qlcnic_pcie_sem_lock() 332 "Failed to acquire sem=%d lock held by=%d\n", qlcnic_pcie_sem_lock() 333 sem, done); qlcnic_pcie_sem_lock() 336 "Failed to acquire sem=%d lock", qlcnic_pcie_sem_lock() 337 sem); qlcnic_pcie_sem_lock() 340 "Failed to acquire sem=%d lock", sem); qlcnic_pcie_sem_lock() 354 qlcnic_pcie_sem_unlock(struct qlcnic_adapter *adapter, int sem) qlcnic_pcie_sem_unlock() argument 358 QLCRD32(adapter, QLCNIC_PCIE_REG(PCIE_SEM_UNLOCK(sem)), &err); qlcnic_pcie_sem_unlock()
|
/linux-4.1.27/drivers/macintosh/ |
H A D | rack-meter.c | 72 struct mutex sem; member in struct:rackmeter 249 mutex_lock(&rm->sem); rackmeter_do_timer() 252 mutex_unlock(&rm->sem); rackmeter_do_timer() 407 mutex_init(&rm->sem); rackmeter_probe()
|
/linux-4.1.27/drivers/net/wireless/mwifiex/ |
H A D | main.c | 453 struct semaphore *sem = adapter->card_sem; mwifiex_fw_dpc() local 590 up(sem); mwifiex_fw_dpc() 1102 mwifiex_add_card(void *card, struct semaphore *sem, mwifiex_add_card() argument 1107 if (down_interruptible(sem)) mwifiex_add_card() 1116 adapter->card_sem = sem; mwifiex_add_card() 1185 up(sem); mwifiex_add_card() 1203 int mwifiex_remove_card(struct mwifiex_adapter *adapter, struct semaphore *sem) mwifiex_remove_card() argument 1208 if (down_interruptible(sem)) mwifiex_remove_card() 1275 up(sem); mwifiex_remove_card()
|
/linux-4.1.27/arch/powerpc/kernel/ |
H A D | sys_ppc32.c | 26 #include <linux/sem.h>
|
H A D | syscalls.c | 28 #include <linux/sem.h>
|
/linux-4.1.27/security/selinux/include/ |
H A D | classmap.h | 98 { "sem",
|
/linux-4.1.27/security/integrity/evm/ |
H A D | evm_crypto.c | 249 down_read(&evm_key->sem); evm_init_key() 259 up_read(&evm_key->sem); evm_init_key()
|
/linux-4.1.27/drivers/net/wireless/ |
H A D | airo.c | 1206 struct semaphore sem; member in struct:airo_info 1330 up(&ai->sem); micinit() 1753 if (down_interruptible(&ai->sem)) readBSSListRid() 1757 up(&ai->sem); readBSSListRid() 2110 up(&priv->sem); airo_end_xmit() 2156 if (down_trylock(&priv->sem) != 0) { airo_start_xmit() 2177 up(&priv->sem); airo_end_xmit11() 2230 if (down_trylock(&priv->sem) != 0) { airo_start_xmit11() 2248 up(&ai->sem); airo_read_stats() 2252 up(&ai->sem); airo_read_stats() 2280 if (down_trylock(&local->sem) != 0) { airo_get_stats() 2299 up(&ai->sem); airo_set_promisc() 2307 if (down_trylock(&ai->sem) != 0) { airo_set_multicast_list() 2709 if (lock && down_interruptible(&ai->sem)) reset_card() 2717 up(&ai->sem); reset_card() 2805 sema_init(&ai->sem, 1); _init_airo_card() 2991 up(&ai->sem); airo_send_event() 3046 up(&ai->sem); airo_process_scan_results() 3074 locked = down_interruptible(&ai->sem); airo_thread() 3123 up(&ai->sem); airo_thread() 3128 up(&ai->sem); airo_thread() 3151 up(&ai->sem); airo_thread() 3264 if (down_trylock(&ai->sem) != 0) { airo_handle_link() 3582 if (lock && down_interruptible(&ai->sem)) enable_MAC() 3595 up(&ai->sem); enable_MAC() 3611 if (lock && down_interruptible(&ai->sem)) disable_MAC() 3621 up(&ai->sem); disable_MAC() 3806 if (lock && down_interruptible(&ai->sem)) setup_card() 3810 up(&ai->sem); setup_card() 3820 up(&ai->sem); setup_card() 3833 up(&ai->sem); setup_card() 4122 if (down_interruptible(&ai->sem)) PC4500_readrid() 4175 up(&ai->sem); PC4500_readrid() 4190 if (down_interruptible(&ai->sem)) PC4500_writerid() 4249 up(&ai->sem); PC4500_writerid() 4265 if (down_interruptible(&ai->sem)) transmit_allocate() 4305 up(&ai->sem); transmit_allocate() 5458 if (down_interruptible(&ai->sem)) proc_BSSList_open() 5461 up(&ai->sem); proc_BSSList_open() 5537 up(&apriv->sem); timer_func() 5595 if (down_interruptible(&ai->sem)) airo_pci_suspend() 5650 up(&ai->sem); airo_pci_resume() 5949 if (down_interruptible(&local->sem)) airo_set_wap() 5952 up(&local->sem); airo_set_wap() 7229 if (down_interruptible(&ai->sem)) airo_set_scan() 7245 up(&ai->sem); airo_set_scan() 7448 if (down_interruptible(&ai->sem)) airo_get_scan() 7470 up(&ai->sem); airo_get_scan() 7505 if (down_interruptible(&local->sem)) airo_config_commit() 7512 up(&local->sem); airo_config_commit() 7709 up(&local->sem); airo_read_wireless_stats() 7715 up(&local->sem); airo_read_wireless_stats() 7760 if (down_trylock(&local->sem) != 0) { airo_get_wireless_stats()
|
/linux-4.1.27/fs/ecryptfs/ |
H A D | keystore.c | 519 down_write(&(walker->global_auth_tok_key->sem)); ecryptfs_find_global_auth_tok_for_sig() 532 up_write(&(walker->global_auth_tok_key->sem)); ecryptfs_find_global_auth_tok_for_sig() 871 up_write(&(auth_tok_key->sem)); ecryptfs_write_tag_70_packet() 1108 up_write(&(auth_tok_key->sem)); ecryptfs_parse_tag_70_packet() 1644 down_write(&(*auth_tok_key)->sem); ecryptfs_keyring_auth_tok_for_sig() 1647 up_write(&(*auth_tok_key)->sem); ecryptfs_keyring_auth_tok_for_sig() 1906 up_write(&(auth_tok_key->sem)); ecryptfs_parse_packet_set() 1914 up_write(&(auth_tok_key->sem)); ecryptfs_parse_packet_set() 1919 up_write(&(auth_tok_key->sem)); ecryptfs_parse_packet_set() 1981 up_write(&(auth_tok_key->sem)); pki_encrypt_session_key() 2045 up_write(&(auth_tok_key->sem)); write_tag_1_packet() 2430 up_write(&(auth_tok_key->sem)); ecryptfs_generate_key_packet_set() 2459 up_write(&(auth_tok_key->sem)); ecryptfs_generate_key_packet_set()
|
H A D | main.c | 220 up_write(&(global_auth_tok->global_auth_tok_key)->sem); ecryptfs_init_global_auth_toks()
|
/linux-4.1.27/drivers/infiniband/hw/mlx5/ |
H A D | mr.c | 811 down(&umrc->sem); reg_umr() 831 up(&umrc->sem); reg_umr() 942 down(&umrc->sem); mlx5_ib_update_mtt() 954 up(&umrc->sem); mlx5_ib_update_mtt() 1138 down(&umrc->sem); unreg_umr() 1141 up(&umrc->sem); unreg_umr() 1146 up(&umrc->sem); unreg_umr()
|
H A D | mlx5_ib.h | 355 struct semaphore sem; member in struct:umr_common
|
H A D | main.c | 1056 sema_init(&dev->umrc.sem, MAX_UMR_WR); create_umr_res()
|
/linux-4.1.27/drivers/gpu/drm/nouveau/nvkm/engine/fifo/ |
H A D | nv04.c | 507 u32 reassign, chid, get, sem; nv04_fifo_intr() local 529 sem = nv_rd32(priv, NV10_PFIFO_CACHE1_SEMAPHORE); nv04_fifo_intr() 530 nv_wr32(priv, NV10_PFIFO_CACHE1_SEMAPHORE, sem | 0x1); nv04_fifo_intr()
|
/linux-4.1.27/drivers/iio/imu/inv_mpu6050/ |
H A D | inv_mpu_ring.c | 31 /* take the spin lock sem to avoid interrupt kick in */ inv_clear_kfifo()
|
/linux-4.1.27/drivers/media/pci/zoran/ |
H A D | zoran_procfs.c | 41 #include <linux/sem.h>
|
H A D | zoran_card.c | 44 #include <linux/sem.h>
|
H A D | zoran_device.c | 42 #include <linux/sem.h>
|
/linux-4.1.27/arch/sparc/kernel/ |
H A D | sys_sparc_32.c | 14 #include <linux/sem.h>
|
H A D | sys_sparc32.c | 20 #include <linux/sem.h>
|
H A D | sys_sparc_64.c | 14 #include <linux/sem.h>
|
/linux-4.1.27/fs/ocfs2/ |
H A D | mmap.c | 154 * The alloc sem should be enough to serialize with ocfs2_page_mkwrite()
|
H A D | buffer_head_io.c | 320 * owner sem. Avoid doing any work on the bh if the ocfs2_read_blocks()
|
H A D | aops.c | 2282 * Take alloc sem here to prevent concurrent lookups. That way ocfs2_write_begin()
|
H A D | file.c | 1078 * The alloc sem blocks people in read/write from reading our ocfs2_extend_file()
|
H A D | journal.c | 211 /* we can't grab the goofy sem lock from inside wait_event, so we use
|
/linux-4.1.27/arch/mips/kernel/ |
H A D | linux32.c | 20 #include <linux/sem.h>
|
H A D | syscall.c | 21 #include <linux/sem.h>
|
/linux-4.1.27/net/rds/ |
H A D | tcp_connect.c | 127 * caller has already grabbed the sending sem so we're serialized with other
|
/linux-4.1.27/drivers/scsi/bfa/ |
H A D | bfa_ioc_cb.c | 250 * Read the hw sem reg to make sure that it is locked bfa_ioc_cb_ownership_reset() 326 * At this point, this IOC is hoding the hw sem in the bfa_ioc_cb_sync_complete()
|
H A D | bfa_ioc_ct.c | 402 * Read the hw sem reg to make sure that it is locked bfa_ioc_ct_ownership_reset() 497 * this IOC was waiting for hw sem, the sync_ackd bit for bfa_ioc_ct_sync_complete()
|
/linux-4.1.27/drivers/net/wireless/ath/ath6kl/ |
H A D | cfg80211.c | 483 if (down_interruptible(&ar->sem)) { ath6kl_cfg80211_connect() 490 up(&ar->sem); ath6kl_cfg80211_connect() 503 up(&ar->sem); ath6kl_cfg80211_connect() 510 up(&ar->sem); ath6kl_cfg80211_connect() 525 up(&ar->sem); ath6kl_cfg80211_connect() 551 up(&ar->sem); ath6kl_cfg80211_connect() 573 up(&ar->sem); ath6kl_cfg80211_connect() 597 up(&ar->sem); ath6kl_cfg80211_connect() 629 up(&ar->sem); ath6kl_cfg80211_connect() 654 up(&ar->sem); ath6kl_cfg80211_connect() 835 if (down_interruptible(&ar->sem)) { ath6kl_cfg80211_disconnect() 848 up(&ar->sem); ath6kl_cfg80211_disconnect() 1778 if (down_interruptible(&ar->sem)) ath6kl_get_station() 1786 up(&ar->sem); ath6kl_get_station() 1795 up(&ar->sem); ath6kl_get_station()
|
H A D | debug.c | 560 if (down_interruptible(&ar->sem)) { read_file_tgt_stats() 568 up(&ar->sem); read_file_tgt_stats() 577 up(&ar->sem); read_file_tgt_stats() 1161 if (down_interruptible(&ar->sem)) ath6kl_roam_table_read() 1168 up(&ar->sem); ath6kl_roam_table_read() 1174 up(&ar->sem); ath6kl_roam_table_read()
|
H A D | core.c | 283 sema_init(&ar->sem, 1); ath6kl_core_create()
|
H A D | core.h | 725 struct semaphore sem; member in struct:ath6kl
|
H A D | init.c | 1869 if (down_interruptible(&ar->sem)) { ath6kl_stop_txrx() 1917 up(&ar->sem); ath6kl_stop_txrx()
|
/linux-4.1.27/drivers/media/dvb-core/ |
H A D | dvb_frontend.c | 107 struct semaphore sem; member in struct:dvb_frontend_private 251 up(&fepriv->sem); dvb_frontend_get_event() 256 if (down_interruptible (&fepriv->sem)) dvb_frontend_get_event() 729 up(&fepriv->sem); /* is locked when we enter the thread... */ dvb_frontend_thread() 738 if (!down_interruptible(&fepriv->sem)) dvb_frontend_thread() 747 if (down_interruptible(&fepriv->sem)) dvb_frontend_thread() 862 up(&fepriv->sem); dvb_frontend_thread() 882 sema_init(&fepriv->sem, 1); dvb_frontend_stop() 952 if (down_interruptible (&fepriv->sem)) dvb_frontend_start() 967 up(&fepriv->sem); dvb_frontend_start() 2026 if (down_interruptible(&fepriv->sem)) dvb_frontend_ioctl() 2030 up(&fepriv->sem); dvb_frontend_ioctl() 2037 up(&fepriv->sem); dvb_frontend_ioctl() 2048 up(&fepriv->sem); dvb_frontend_ioctl() 2757 sema_init(&fepriv->sem, 1); dvb_register_frontend()
|
/linux-4.1.27/arch/x86/kernel/ |
H A D | sys_x86_64.c | 7 #include <linux/sem.h>
|
/linux-4.1.27/drivers/gpu/drm/udl/ |
H A D | udl_main.c | 159 node = udl->urbs.list.next; /* have reserved one with sem */ udl_free_urb_list()
|
/linux-4.1.27/fs/afs/ |
H A D | server.c | 83 init_rwsem(&server->sem); afs_alloc_server()
|
H A D | internal.h | 280 struct rw_semaphore sem; /* access lock */ member in struct:afs_server
|
/linux-4.1.27/drivers/iommu/ |
H A D | amd_iommu.c | 797 static int wait_on_sem(volatile u64 *sem) wait_on_sem() argument 801 while (*sem == 0 && i < LOOP_TIMEOUT) { wait_on_sem() 1000 volatile u64 sem = 0; iommu_queue_command_sync() local 1003 build_completion_wait(&sync_cmd, (u64)&sem); iommu_queue_command_sync() 1008 if ((ret = wait_on_sem(&sem)) != 0) iommu_queue_command_sync() 1036 volatile u64 sem = 0; iommu_completion_wait() local 1042 build_completion_wait(&cmd, (u64)&sem); iommu_completion_wait() 1048 return wait_on_sem(&sem); iommu_completion_wait()
|
/linux-4.1.27/drivers/net/ethernet/brocade/bna/ |
H A D | bfa_ioc_ct.c | 482 * Read the hw sem reg to make sure that it is locked bfa_ioc_ct_ownership_reset() 574 * this IOC was waiting for hw sem, the sync_ackd bit for bfa_ioc_ct_sync_complete()
|
H A D | bfa_ioc.c | 175 IOCPF_E_SEM_ERROR = 12, /*!< h/w sem mapping error */
|
/linux-4.1.27/arch/m68k/kernel/ |
H A D | sys_m68k.c | 15 #include <linux/sem.h>
|
/linux-4.1.27/drivers/pci/pcie/ |
H A D | aspm.c | 717 static void __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem, __pci_disable_link_state() argument 745 if (sem) __pci_disable_link_state() 760 if (sem) __pci_disable_link_state()
|
/linux-4.1.27/drivers/net/ethernet/qlogic/netxen/ |
H A D | netxen_nic_hw.c | 322 netxen_pcie_sem_lock(struct netxen_adapter *adapter, int sem, u32 id_reg) netxen_pcie_sem_lock() argument 327 done = NXRD32(adapter, NETXEN_PCIE_REG(PCIE_SEM_LOCK(sem))); netxen_pcie_sem_lock() 342 netxen_pcie_sem_unlock(struct netxen_adapter *adapter, int sem) netxen_pcie_sem_unlock() argument 344 NXRD32(adapter, NETXEN_PCIE_REG(PCIE_SEM_UNLOCK(sem))); netxen_pcie_sem_unlock()
|
/linux-4.1.27/drivers/staging/rtl8192e/ |
H A D | rtllib_softmac_wx.c | 433 /* intentionally forget to up sem */ rtllib_wx_set_scan()
|
/linux-4.1.27/drivers/staging/rtl8192u/ieee80211/ |
H A D | ieee80211_softmac_wx.c | 379 /* intentionally forget to up sem */ ieee80211_wx_set_scan()
|
/linux-4.1.27/drivers/staging/lustre/lustre/include/ |
H A D | lclient.h | 187 * the lifetime of transient pages must be covered by inode sem,
|
/linux-4.1.27/drivers/oprofile/ |
H A D | buffer_sync.c | 205 /* Optimisation. We can manage without taking the dcookie sem
|
/linux-4.1.27/drivers/uwb/ |
H A D | lc-rc.c | 513 * uwb_rc_class->sem would have to be taken--we hold it, ergo we
|
/linux-4.1.27/arch/powerpc/platforms/powermac/ |
H A D | nvram.c | 80 // XXX Turn that into a sem
|
/linux-4.1.27/fs/cifs/ |
H A D | dir.c | 738 /* can not grab the rename sem here since it would cifs_lookup() 740 in which we already have the sb rename sem */ cifs_lookup()
|
H A D | inode.c | 1690 * we already have the rename sem so we do not need to cifs_rename2() 1906 /* can not safely grab the rename sem here if rename calls revalidate cifs_revalidate_dentry_attr()
|
H A D | file.c | 628 * Can not grab rename sem here because various ops, including those cifs_reopen_file() 629 * that already have the rename sem can end up causing writepage to get cifs_reopen_file() 2671 * We need to hold the sem to be sure nobody modifies lock list cifs_writev() 3103 * We need to hold the sem to be sure nobody modifies lock list cifs_strict_readv()
|
H A D | connect.c | 2365 down_read(&key->sem); cifs_set_cifscreds() 2421 up_read(&key->sem); cifs_set_cifscreds()
|
/linux-4.1.27/security/smack/ |
H A D | smack_lsm.c | 2742 * smack_of_sem - the smack pointer for the sem 2753 * smack_sem_alloc_security - Set the security blob for sem 2768 * smack_sem_free_security - Clear the security blob for sem 2781 * smk_curacc_sem : check if current has access on sem 2798 rc = smk_bu_current("sem", ssp, access, rc); smk_curacc_sem() 2803 * smack_sem_associate - Smack access check for sem 2818 * smack_sem_shmctl - Smack access check for sem
|
/linux-4.1.27/fs/ocfs2/cluster/ |
H A D | heartbeat.c | 50 * callback calls. This global serializing sem should only be removed once 637 /* Holding callback sem assures we don't alter the callback o2hb_run_event_list() 1405 /* if we're already in a callback then we're already serialized by the sem */ o2hb_fill_node_map_from_callback()
|
/linux-4.1.27/drivers/net/ethernet/emulex/benet/ |
H A D | be_cmds.c | 618 u32 sem; be_POST_stage_get() local 621 sem = ioread32(adapter->csr + SLIPORT_SEMAPHORE_OFFSET_BEx); be_POST_stage_get() 624 SLIPORT_SEMAPHORE_OFFSET_SH, &sem); be_POST_stage_get() 626 return sem & POST_STAGE_MASK; be_POST_stage_get()
|
/linux-4.1.27/drivers/net/ethernet/qlogic/qlge/ |
H A D | qlge_ethtool.c | 252 "Couldn't get xgmac sem.\n"); ql_update_stats()
|
H A D | qlge_dbg.c | 749 * might be holding the sem. ql_core_dump() 1396 pr_err("%s: Couldn't get xgmac sem\n", __func__); ql_dump_xgmac_control_regs()
|
/linux-4.1.27/drivers/staging/lustre/lustre/ldlm/ |
H A D | ldlm_lib.c | 610 /* There's no need to hold sem while disconnecting an import, client_disconnect_export()
|
/linux-4.1.27/drivers/staging/lustre/lustre/llite/ |
H A D | lloop.c | 422 * up sem, we are running loop_thread()
|
/linux-4.1.27/fs/quota/ |
H A D | quota.c | 784 * because that gets s_umount sem which is also possibly needed by path SYSCALL_DEFINE4()
|
/linux-4.1.27/include/uapi/asm-generic/ |
H A D | unistd.h | 529 /* ipc/sem.c */
|
/linux-4.1.27/arch/powerpc/oprofile/cell/ |
H A D | spu_task_sync.c | 293 /* Optimisation. We can manage without taking the dcookie sem
|
/linux-4.1.27/fs/fscache/ |
H A D | cookie.c | 276 * - caller must be holding the addremove sem
|
/linux-4.1.27/include/linux/mlx5/ |
H A D | driver.h | 258 struct semaphore sem; member in struct:mlx5_cmd
|
/linux-4.1.27/drivers/pci/hotplug/ |
H A D | ibmphp_hpc.c | 1090 debug ("after sem exit up\n"); ibmphp_hpc_stop_poll_thread()
|
/linux-4.1.27/drivers/tty/vt/ |
H A D | vt_ioctl.c | 712 console sem between vc_allocate and vt_ioctl()
|
H A D | vt.c | 960 * caller must hold the console sem to protect console internals and 978 * Takes the console sem and the called methods then take the tty
|
/linux-4.1.27/drivers/staging/dgnc/ |
H A D | dgnc_tty.c | 45 #define init_MUTEX(sem) sema_init(sem, 1)
|
/linux-4.1.27/sound/core/ |
H A D | pcm_native.c | 78 * and this may lead to a deadlock when the code path takes read sem 95 * (or rw sem), too, for avoiding the race with linked streams.
|
/linux-4.1.27/drivers/staging/lustre/lustre/mgc/ |
H A D | mgc_request.c | 1562 simultaneously (in which case we should use a per-log sem.) */ mgc_process_log()
|
/linux-4.1.27/drivers/ata/ |
H A D | libata-core.c | 2572 * PCI/etc. bus probe sem. 3295 * PCI/etc. bus probe sem. 4471 * PCI/etc. bus probe sem. 4519 * PCI/etc. bus probe sem.
|
H A D | libata-scsi.c | 4090 * PCI/etc. bus probe sem. 4183 * PCI/etc. bus probe sem.
|
/linux-4.1.27/net/ipv4/netfilter/ |
H A D | arp_tables.c | 1893 /* No one else will be downing sem now, so we won't sleep */ arp_tables_init()
|
H A D | ip_tables.c | 2243 /* No one else will be downing sem now, so we won't sleep */ ip_tables_init()
|
/linux-4.1.27/mm/ |
H A D | rmap.c | 1399 * SWAP_AGAIN - page mapped in mlocked vma -- couldn't acquire mmap sem
|
/linux-4.1.27/drivers/xen/xen-pciback/ |
H A D | pci_stub.c | 30 /*Add sem for sync AER handling and xen_pcibk remove/reconfigue ops,
|
/linux-4.1.27/fs/ocfs2/dlm/ |
H A D | dlmdomain.c | 1615 /* group sem locking should work for us here -- we're already dlm_try_to_join_domain()
|
/linux-4.1.27/drivers/video/fbdev/ |
H A D | smscufx.c | 1850 node = dev->urbs.list.next; /* have reserved one with sem */ ufx_free_urb_list()
|
H A D | udlfb.c | 1840 node = dev->urbs.list.next; /* have reserved one with sem */ dlfb_free_urb_list()
|
H A D | sh_mobile_lcdcfb.c | 1937 * user == 1, or with console sem held, if user == 0.
|
/linux-4.1.27/net/ipv6/netfilter/ |
H A D | ip6_tables.c | 2256 /* No one else will be downing sem now, so we won't sleep */ ip6_tables_init()
|
/linux-4.1.27/kernel/events/ |
H A D | uprobes.c | 593 /* TODO: move this into _register, until then we abuse this sem. */ prepare_uprobe()
|
/linux-4.1.27/fs/reiserfs/ |
H A D | reiserfs.h | 831 reiserfs_down_read_safe(struct rw_semaphore *sem, struct super_block *s) reiserfs_down_read_safe() argument 835 down_read(sem); reiserfs_down_read_safe()
|
/linux-4.1.27/drivers/usb/misc/ |
H A D | usbtest.c | 2047 * WARNING: Because usbfs grabs udev->dev.sem before calling this ioctl(),
|