Lines Matching refs:sem
38 static noinline void __down(struct semaphore *sem);
39 static noinline int __down_interruptible(struct semaphore *sem);
40 static noinline int __down_killable(struct semaphore *sem);
41 static noinline int __down_timeout(struct semaphore *sem, long timeout);
42 static noinline void __up(struct semaphore *sem, struct wake_q_head *wake_q);
55 void __sched down(struct semaphore *sem) in down() argument
60 raw_spin_lock_irqsave(&sem->lock, flags); in down()
61 if (likely(sem->count > 0)) in down()
62 sem->count--; in down()
64 __down(sem); in down()
65 raw_spin_unlock_irqrestore(&sem->lock, flags); in down()
78 int __sched down_interruptible(struct semaphore *sem) in down_interruptible() argument
84 raw_spin_lock_irqsave(&sem->lock, flags); in down_interruptible()
85 if (likely(sem->count > 0)) in down_interruptible()
86 sem->count--; in down_interruptible()
88 result = __down_interruptible(sem); in down_interruptible()
89 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_interruptible()
105 int __sched down_killable(struct semaphore *sem) in down_killable() argument
111 raw_spin_lock_irqsave(&sem->lock, flags); in down_killable()
112 if (likely(sem->count > 0)) in down_killable()
113 sem->count--; in down_killable()
115 result = __down_killable(sem); in down_killable()
116 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_killable()
135 int __sched down_trylock(struct semaphore *sem) in down_trylock() argument
140 raw_spin_lock_irqsave(&sem->lock, flags); in down_trylock()
141 count = sem->count - 1; in down_trylock()
143 sem->count = count; in down_trylock()
144 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_trylock()
160 int __sched down_timeout(struct semaphore *sem, long timeout) in down_timeout() argument
166 raw_spin_lock_irqsave(&sem->lock, flags); in down_timeout()
167 if (likely(sem->count > 0)) in down_timeout()
168 sem->count--; in down_timeout()
170 result = __down_timeout(sem, timeout); in down_timeout()
171 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_timeout()
184 void __sched up(struct semaphore *sem) in up() argument
189 raw_spin_lock_irqsave(&sem->lock, flags); in up()
190 if (likely(list_empty(&sem->wait_list))) in up()
191 sem->count++; in up()
193 __up(sem, &wake_q); in up()
194 raw_spin_unlock_irqrestore(&sem->lock, flags); in up()
213 static inline int __sched ___down_common(struct semaphore *sem, long state, in ___down_common() argument
218 list_add_tail(&waiter.list, &sem->wait_list); in ___down_common()
228 raw_spin_unlock_irq(&sem->lock); in ___down_common()
230 raw_spin_lock_irq(&sem->lock); in ___down_common()
244 static inline int __sched __down_common(struct semaphore *sem, long state, in __down_common() argument
249 trace_contention_begin(sem, 0); in __down_common()
250 ret = ___down_common(sem, state, timeout); in __down_common()
251 trace_contention_end(sem, ret); in __down_common()
256 static noinline void __sched __down(struct semaphore *sem) in __down() argument
258 __down_common(sem, TASK_UNINTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); in __down()
261 static noinline int __sched __down_interruptible(struct semaphore *sem) in __down_interruptible() argument
263 return __down_common(sem, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); in __down_interruptible()
266 static noinline int __sched __down_killable(struct semaphore *sem) in __down_killable() argument
268 return __down_common(sem, TASK_KILLABLE, MAX_SCHEDULE_TIMEOUT); in __down_killable()
271 static noinline int __sched __down_timeout(struct semaphore *sem, long timeout) in __down_timeout() argument
273 return __down_common(sem, TASK_UNINTERRUPTIBLE, timeout); in __down_timeout()
276 static noinline void __sched __up(struct semaphore *sem, in __up() argument
279 struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list, in __up()