4,436
社区成员
发帖
与我相关
我的任务
分享
53 void down(struct semaphore *sem)
54 {
55 unsigned long flags;
56
57 raw_spin_lock_irqsave(&sem->lock, flags);
58 if (likely(sem->count > 0))
59 sem->count--;
60 else
61 __down(sem);
62 raw_spin_unlock_irqrestore(&sem->lock, flags);
63 }
178 void up(struct semaphore *sem)
179 {
180 unsigned long flags;
181
182 raw_spin_lock_irqsave(&sem->lock, flags);
183 if (likely(list_empty(&sem->wait_list)))
184 sem->count++;
185 else
186 __up(sem);
187 raw_spin_unlock_irqrestore(&sem->lock, flags);
188 }