Lines Matching refs:sem

36 static noinline void __down(struct semaphore *sem);
37 static noinline int __down_interruptible(struct semaphore *sem);
38 static noinline int __down_killable(struct semaphore *sem);
39 static noinline int __down_timeout(struct semaphore *sem, long timeout);
40 static noinline void __up(struct semaphore *sem);
53 void down(struct semaphore *sem) in down() argument
57 raw_spin_lock_irqsave(&sem->lock, flags); in down()
58 if (likely(sem->count > 0)) in down()
59 sem->count--; in down()
61 __down(sem); in down()
62 raw_spin_unlock_irqrestore(&sem->lock, flags); in down()
75 int down_interruptible(struct semaphore *sem) in down_interruptible() argument
80 raw_spin_lock_irqsave(&sem->lock, flags); in down_interruptible()
81 if (likely(sem->count > 0)) in down_interruptible()
82 sem->count--; in down_interruptible()
84 result = __down_interruptible(sem); in down_interruptible()
85 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_interruptible()
101 int down_killable(struct semaphore *sem) in down_killable() argument
106 raw_spin_lock_irqsave(&sem->lock, flags); in down_killable()
107 if (likely(sem->count > 0)) in down_killable()
108 sem->count--; in down_killable()
110 result = __down_killable(sem); in down_killable()
111 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_killable()
130 int down_trylock(struct semaphore *sem) in down_trylock() argument
135 raw_spin_lock_irqsave(&sem->lock, flags); in down_trylock()
136 count = sem->count - 1; in down_trylock()
138 sem->count = count; in down_trylock()
139 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_trylock()
155 int down_timeout(struct semaphore *sem, long timeout) in down_timeout() argument
160 raw_spin_lock_irqsave(&sem->lock, flags); in down_timeout()
161 if (likely(sem->count > 0)) in down_timeout()
162 sem->count--; in down_timeout()
164 result = __down_timeout(sem, timeout); in down_timeout()
165 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_timeout()
178 void up(struct semaphore *sem) in up() argument
182 raw_spin_lock_irqsave(&sem->lock, flags); in up()
183 if (likely(list_empty(&sem->wait_list))) in up()
184 sem->count++; in up()
186 __up(sem); in up()
187 raw_spin_unlock_irqrestore(&sem->lock, flags); in up()
204 static inline int __sched __down_common(struct semaphore *sem, long state, in __down_common() argument
210 list_add_tail(&waiter.list, &sem->wait_list); in __down_common()
220 raw_spin_unlock_irq(&sem->lock); in __down_common()
222 raw_spin_lock_irq(&sem->lock); in __down_common()
236 static noinline void __sched __down(struct semaphore *sem) in __down() argument
238 __down_common(sem, TASK_UNINTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); in __down()
241 static noinline int __sched __down_interruptible(struct semaphore *sem) in __down_interruptible() argument
243 return __down_common(sem, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); in __down_interruptible()
246 static noinline int __sched __down_killable(struct semaphore *sem) in __down_killable() argument
248 return __down_common(sem, TASK_KILLABLE, MAX_SCHEDULE_TIMEOUT); in __down_killable()
251 static noinline int __sched __down_timeout(struct semaphore *sem, long timeout) in __down_timeout() argument
253 return __down_common(sem, TASK_UNINTERRUPTIBLE, timeout); in __down_timeout()
256 static noinline void __sched __up(struct semaphore *sem) in __up() argument
258 struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list, in __up()