Lines Matching refs:sem
37 static noinline void __down(struct semaphore *sem);
38 static noinline int __down_interruptible(struct semaphore *sem);
39 static noinline int __down_killable(struct semaphore *sem);
40 static noinline int __down_timeout(struct semaphore *sem, long timeout);
41 static noinline void __up(struct semaphore *sem);
54 void down(struct semaphore *sem) in down() argument
58 raw_spin_lock_irqsave(&sem->lock, flags); in down()
59 if (likely(sem->count > 0)) in down()
60 sem->count--; in down()
62 __down(sem); in down()
63 raw_spin_unlock_irqrestore(&sem->lock, flags); in down()
76 int down_interruptible(struct semaphore *sem) in down_interruptible() argument
81 raw_spin_lock_irqsave(&sem->lock, flags); in down_interruptible()
82 if (likely(sem->count > 0)) in down_interruptible()
83 sem->count--; in down_interruptible()
85 result = __down_interruptible(sem); in down_interruptible()
86 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_interruptible()
102 int down_killable(struct semaphore *sem) in down_killable() argument
107 raw_spin_lock_irqsave(&sem->lock, flags); in down_killable()
108 if (likely(sem->count > 0)) in down_killable()
109 sem->count--; in down_killable()
111 result = __down_killable(sem); in down_killable()
112 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_killable()
131 int down_trylock(struct semaphore *sem) in down_trylock() argument
136 raw_spin_lock_irqsave(&sem->lock, flags); in down_trylock()
137 count = sem->count - 1; in down_trylock()
139 sem->count = count; in down_trylock()
140 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_trylock()
156 int down_timeout(struct semaphore *sem, long timeout) in down_timeout() argument
161 raw_spin_lock_irqsave(&sem->lock, flags); in down_timeout()
162 if (likely(sem->count > 0)) in down_timeout()
163 sem->count--; in down_timeout()
165 result = __down_timeout(sem, timeout); in down_timeout()
166 raw_spin_unlock_irqrestore(&sem->lock, flags); in down_timeout()
179 void up(struct semaphore *sem) in up() argument
183 raw_spin_lock_irqsave(&sem->lock, flags); in up()
184 if (likely(list_empty(&sem->wait_list))) in up()
185 sem->count++; in up()
187 __up(sem); in up()
188 raw_spin_unlock_irqrestore(&sem->lock, flags); in up()
205 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()