Searched refs:sem (Results 1 - 200 of 212) sorted by relevance

12

/linux-4.1.27/kernel/locking/
H A Drwsem.h2 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 Drwsem.c19 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 Drwsem-spinlock.c23 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 Dsemaphore.c36 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 Drwsem-xadd.c73 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 Drwsem.h24 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 Drwsem.h26 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 Drwsem.h25 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 Drwsem.h34 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 Dpgtable.h661 * walk ptes while holding the mmap sem in read mode (write mode don't
/linux-4.1.27/drivers/tty/
H A Dtty_ldsem.c77 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 Dn_tty.c1978 * Called under the ldata->atomic_read_lock sem
/linux-4.1.27/arch/xtensa/include/asm/
H A Drwsem.h30 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 Dsemaphore.h32 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 Drwsem.h44 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 Drwsem-spinlock.h34 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 Dsem.h7 #include <uapi/linux/sem.h>
16 struct sem *sem_base; /* ptr to first semaphore in array */
H A Dtty_ldisc.h148 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 Dkey.h139 struct rw_semaphore sem; /* change vs change sem */ member in struct:key
340 rwsem_is_locked(&((struct key *)(KEY))->sem)))
H A Dserio.h45 struct serio_driver *drv; /* accessed from interrupt, must be protected by serio->lock and serio->sem */
H A Dkey-type.h154 struct lock_class_key lock_class; /* key->sem lock class */
H A Duwb.h340 * @priv: Backend implementation; rw with uwb_dev.dev.sem taken.
342 * only with uwb_dev.dev.sem taken.
H A Dcompat.h12 #include <linux/sem.h>
H A Dsyscalls.h76 #include <linux/sem.h>
H A Dsched.h35 #include <linux/sem.h>
/linux-4.1.27/arch/ia64/include/asm/
H A Drwsem.h41 __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 Drwsem.h52 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 Drwsem.h63 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 Dintrinsics.h41 #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 Dcmpxchg.h72 #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 Dpmon.h27 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 Di2c-designware-baytrail.c32 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 Dradeon_trace.h169 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 Ddir.c92 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 Dwrite.c145 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 Dfile.c127 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 Dsymlink.c38 * 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 Dfs.c58 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 Djffs2_fs_i.h27 struct mutex sem; member in struct:jffs2_inode_info
H A Dreadinode.c1206 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 Dbackground.c121 /* Put_super will send a SIGKILL and then wait on the sem. jffs2_garbage_collect_thread()
H A Ddebug.c69 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 Dgc.c486 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 Dsuper.c62 mutex_init(&f->sem); jffs2_i_init_once()
H A Dnodemgmt.c85 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 Dwbuf.c512 /* 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 Dmmu.c106 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 Dgtt.h36 struct rw_semaphore sem; member in struct:psb_gtt
H A Dmmu.h22 struct rw_semaphore sem; member in struct:psb_mmu_driver
H A Dpsb_drv.c185 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 Dgtt.c393 init_rwsem(&dev_priv->gtt.sem); psb_gtt_alloc()
/linux-4.1.27/drivers/staging/comedi/drivers/
H A Dusbduxfast.c164 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 Dusbduxsigma.c175 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 Dusbdux.c213 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 Ddt9812.c236 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 Dni_usb6501.c169 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 Dreset.c51 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 Dsys.c17 #include <linux/sem.h>
/linux-4.1.27/arch/mn10300/kernel/
H A Dsys_mn10300.c16 #include <linux/sem.h>
/linux-4.1.27/arch/cris/kernel/
H A Dsys_cris.c18 #include <linux/sem.h>
/linux-4.1.27/arch/arm/kernel/
H A Dsys_arm.c19 #include <linux/sem.h>
H A Dsys_oabi-compat.c81 #include <linux/sem.h>
/linux-4.1.27/drivers/input/joystick/
H A Dturbografx.c84 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 Dtaskstats.c68 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 Dfork.c22 #include <linux/sem.h>
1987 /* Orphan segments in old ns (see sem above). */ SYSCALL_DEFINE1()
H A Dsysctl_binary.c103 { CTL_INT, KERN_SEM, "sem" },
H A Dfutex.c1887 * Must be called with hash bucket lock held and mm->sem held for non
/linux-4.1.27/ipc/
H A Dsem.c2 * 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 Dipc_sysctl.c171 .procname = "sem",
H A Dmqueue.c911 * ipc/sem.c for more details.
/linux-4.1.27/drivers/media/usb/as102/
H A Das102_drv.c148 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 Das102_drv.h73 struct mutex sem; member in struct:as102_dev_t
/linux-4.1.27/tools/power/acpi/os_specific/service_layers/
H A Dosunixxf.c645 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 Ddns_query.c131 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 Dcdma.h70 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 Dcdma.c165 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 Dosdep_service.h37 #include <linux/sem.h>
/linux-4.1.27/arch/sh/kernel/
H A Dsys_sh32.c5 #include <linux/sem.h>
H A Dsys_sh.c14 #include <linux/sem.h>
/linux-4.1.27/arch/microblaze/kernel/
H A Dsys_microblaze.c20 #include <linux/sem.h>
/linux-4.1.27/include/uapi/linux/
H A Dipc.h36 * see also specific commands in sem.h, msg.h and shm.h
H A Dsem.h27 struct sem *sem_base; /* ptr to first semaphore in array */
/linux-4.1.27/arch/blackfin/kernel/
H A Dsys_bfin.c11 #include <linux/sem.h>
/linux-4.1.27/arch/frv/kernel/
H A Dsys_frv.c18 #include <linux/sem.h>
/linux-4.1.27/arch/m32r/kernel/
H A Dsys_m32r.c15 #include <linux/sem.h>
/linux-4.1.27/security/keys/encrypted-keys/
H A Dmasterkey_trusted.c41 down_read(&tkey->sem); request_trusted_key()
H A Dencrypted.c316 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 Drequest_key_auth.c109 * 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 Dprocess_keys.c281 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 Dkey.c285 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 Dpersistent.c20 * Called with the namespace's sem locked for writing.
40 * Called with the namespace's sem locked for writing.
H A Dkeyring.c1074 __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 Dbig_key.c122 * - called with the key sem write-locked
H A Duser_defined.c142 * - called with the key sem write-locked
H A Dgc.c353 down_write(&key->sem); key_garbage_collector()
358 up_write(&key->sem); key_garbage_collector()
H A Dkeyctl.c765 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 Drequest_key.c273 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 Dcmd.c485 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 Dxilinx_hwicap.c361 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 Dxilinx_hwicap.h60 struct mutex sem; member in struct:hwicap_drvdata
/linux-4.1.27/arch/arm/mach-vexpress/
H A Dspc.c109 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 Ddigsig.c86 down_read(&key->sem); digsig_verify_rsa()
169 up_read(&key->sem); digsig_verify_rsa()
/linux-4.1.27/drivers/staging/rtl8712/
H A Dosdep_service.h37 #include <linux/sem.h>
H A Drtl871x_event.h33 #include <linux/sem.h>
/linux-4.1.27/drivers/staging/rtl8188eu/include/
H A Drtw_event.h27 #include <linux/sem.h>
H A Dosdep_service.h44 #include <linux/sem.h>
/linux-4.1.27/drivers/acpi/
H A Dosl.c1252 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 Dsys_s390.c19 #include <linux/sem.h>
H A Dcompat_linux.c26 #include <linux/sem.h>
/linux-4.1.27/drivers/net/irda/
H A Dsir_dev.c100 * 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 Dsir-dev.h24 struct semaphore sem; member in struct:sir_fsm
/linux-4.1.27/drivers/net/ethernet/qlogic/qlcnic/
H A Dqlcnic_hw.c318 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 Drack-meter.c72 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 Dmain.c453 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 Dsys_ppc32.c26 #include <linux/sem.h>
H A Dsyscalls.c28 #include <linux/sem.h>
/linux-4.1.27/security/selinux/include/
H A Dclassmap.h98 { "sem",
/linux-4.1.27/security/integrity/evm/
H A Devm_crypto.c249 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 Dairo.c1206 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 Dkeystore.c519 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 Dmain.c220 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 Dmr.c811 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 Dmlx5_ib.h355 struct semaphore sem; member in struct:umr_common
H A Dmain.c1056 sema_init(&dev->umrc.sem, MAX_UMR_WR); create_umr_res()
/linux-4.1.27/drivers/gpu/drm/nouveau/nvkm/engine/fifo/
H A Dnv04.c507 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 Dinv_mpu_ring.c31 /* take the spin lock sem to avoid interrupt kick in */ inv_clear_kfifo()
/linux-4.1.27/drivers/media/pci/zoran/
H A Dzoran_procfs.c41 #include <linux/sem.h>
H A Dzoran_card.c44 #include <linux/sem.h>
H A Dzoran_device.c42 #include <linux/sem.h>
/linux-4.1.27/arch/sparc/kernel/
H A Dsys_sparc_32.c14 #include <linux/sem.h>
H A Dsys_sparc32.c20 #include <linux/sem.h>
H A Dsys_sparc_64.c14 #include <linux/sem.h>
/linux-4.1.27/fs/ocfs2/
H A Dmmap.c154 * The alloc sem should be enough to serialize with ocfs2_page_mkwrite()
H A Dbuffer_head_io.c320 * owner sem. Avoid doing any work on the bh if the ocfs2_read_blocks()
H A Daops.c2282 * Take alloc sem here to prevent concurrent lookups. That way ocfs2_write_begin()
H A Dfile.c1078 * The alloc sem blocks people in read/write from reading our ocfs2_extend_file()
H A Djournal.c211 /* we can't grab the goofy sem lock from inside wait_event, so we use
/linux-4.1.27/arch/mips/kernel/
H A Dlinux32.c20 #include <linux/sem.h>
H A Dsyscall.c21 #include <linux/sem.h>
/linux-4.1.27/net/rds/
H A Dtcp_connect.c127 * caller has already grabbed the sending sem so we're serialized with other
/linux-4.1.27/drivers/scsi/bfa/
H A Dbfa_ioc_cb.c250 * 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 Dbfa_ioc_ct.c402 * 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 Dcfg80211.c483 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 Ddebug.c560 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 Dcore.c283 sema_init(&ar->sem, 1); ath6kl_core_create()
H A Dcore.h725 struct semaphore sem; member in struct:ath6kl
H A Dinit.c1869 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 Ddvb_frontend.c107 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 Dsys_x86_64.c7 #include <linux/sem.h>
/linux-4.1.27/drivers/gpu/drm/udl/
H A Dudl_main.c159 node = udl->urbs.list.next; /* have reserved one with sem */ udl_free_urb_list()
/linux-4.1.27/fs/afs/
H A Dserver.c83 init_rwsem(&server->sem); afs_alloc_server()
H A Dinternal.h280 struct rw_semaphore sem; /* access lock */ member in struct:afs_server
/linux-4.1.27/drivers/iommu/
H A Damd_iommu.c797 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 Dbfa_ioc_ct.c482 * 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 Dbfa_ioc.c175 IOCPF_E_SEM_ERROR = 12, /*!< h/w sem mapping error */
/linux-4.1.27/arch/m68k/kernel/
H A Dsys_m68k.c15 #include <linux/sem.h>
/linux-4.1.27/drivers/pci/pcie/
H A Daspm.c717 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 Dnetxen_nic_hw.c322 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 Drtllib_softmac_wx.c433 /* intentionally forget to up sem */ rtllib_wx_set_scan()
/linux-4.1.27/drivers/staging/rtl8192u/ieee80211/
H A Dieee80211_softmac_wx.c379 /* intentionally forget to up sem */ ieee80211_wx_set_scan()
/linux-4.1.27/drivers/staging/lustre/lustre/include/
H A Dlclient.h187 * the lifetime of transient pages must be covered by inode sem,
/linux-4.1.27/drivers/oprofile/
H A Dbuffer_sync.c205 /* Optimisation. We can manage without taking the dcookie sem
/linux-4.1.27/drivers/uwb/
H A Dlc-rc.c513 * uwb_rc_class->sem would have to be taken--we hold it, ergo we
/linux-4.1.27/arch/powerpc/platforms/powermac/
H A Dnvram.c80 // XXX Turn that into a sem
/linux-4.1.27/fs/cifs/
H A Ddir.c738 /* 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 Dinode.c1690 * 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 Dfile.c628 * 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 Dconnect.c2365 down_read(&key->sem); cifs_set_cifscreds()
2421 up_read(&key->sem); cifs_set_cifscreds()
/linux-4.1.27/security/smack/
H A Dsmack_lsm.c2742 * 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 Dheartbeat.c50 * 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 Dbe_cmds.c618 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 Dqlge_ethtool.c252 "Couldn't get xgmac sem.\n"); ql_update_stats()
H A Dqlge_dbg.c749 * 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 Dldlm_lib.c610 /* 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 Dlloop.c422 * up sem, we are running loop_thread()
/linux-4.1.27/fs/quota/
H A Dquota.c784 * 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 Dunistd.h529 /* ipc/sem.c */
/linux-4.1.27/arch/powerpc/oprofile/cell/
H A Dspu_task_sync.c293 /* Optimisation. We can manage without taking the dcookie sem
/linux-4.1.27/fs/fscache/
H A Dcookie.c276 * - caller must be holding the addremove sem
/linux-4.1.27/include/linux/mlx5/
H A Ddriver.h258 struct semaphore sem; member in struct:mlx5_cmd
/linux-4.1.27/drivers/pci/hotplug/
H A Dibmphp_hpc.c1090 debug ("after sem exit up\n"); ibmphp_hpc_stop_poll_thread()
/linux-4.1.27/drivers/tty/vt/
H A Dvt_ioctl.c712 console sem between vc_allocate and vt_ioctl()
H A Dvt.c960 * 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 Ddgnc_tty.c45 #define init_MUTEX(sem) sema_init(sem, 1)
/linux-4.1.27/sound/core/
H A Dpcm_native.c78 * 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 Dmgc_request.c1562 simultaneously (in which case we should use a per-log sem.) */ mgc_process_log()
/linux-4.1.27/drivers/ata/
H A Dlibata-core.c2572 * 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 Dlibata-scsi.c4090 * PCI/etc. bus probe sem.
4183 * PCI/etc. bus probe sem.
/linux-4.1.27/net/ipv4/netfilter/
H A Darp_tables.c1893 /* No one else will be downing sem now, so we won't sleep */ arp_tables_init()
H A Dip_tables.c2243 /* No one else will be downing sem now, so we won't sleep */ ip_tables_init()
/linux-4.1.27/mm/
H A Drmap.c1399 * SWAP_AGAIN - page mapped in mlocked vma -- couldn't acquire mmap sem
/linux-4.1.27/drivers/xen/xen-pciback/
H A Dpci_stub.c30 /*Add sem for sync AER handling and xen_pcibk remove/reconfigue ops,
/linux-4.1.27/fs/ocfs2/dlm/
H A Ddlmdomain.c1615 /* 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 Dsmscufx.c1850 node = dev->urbs.list.next; /* have reserved one with sem */ ufx_free_urb_list()
H A Dudlfb.c1840 node = dev->urbs.list.next; /* have reserved one with sem */ dlfb_free_urb_list()
H A Dsh_mobile_lcdcfb.c1937 * user == 1, or with console sem held, if user == 0.
/linux-4.1.27/net/ipv6/netfilter/
H A Dip6_tables.c2256 /* No one else will be downing sem now, so we won't sleep */ ip6_tables_init()
/linux-4.1.27/kernel/events/
H A Duprobes.c593 /* TODO: move this into _register, until then we abuse this sem. */ prepare_uprobe()
/linux-4.1.27/fs/reiserfs/
H A Dreiserfs.h831 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 Dusbtest.c2047 * WARNING: Because usbfs grabs udev->dev.sem before calling this ioctl(),

Completed in 5200 milliseconds

12