Changes in kernel/generic/src/synch/waitq.c [b59318e:96c30c8] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/synch/waitq.c
rb59318e r96c30c8 190 190 if (do_wakeup) 191 191 thread_ready(thread); 192 }193 194 /** Interrupt the first thread sleeping in the wait queue.195 *196 * Note that the caller somehow needs to know that the thread to be interrupted197 * is sleeping interruptibly.198 *199 * @param wq Pointer to wait queue.200 *201 */202 void waitq_unsleep(waitq_t *wq)203 {204 irq_spinlock_lock(&wq->lock, true);205 206 if (!list_empty(&wq->sleepers)) {207 thread_t *thread = list_get_instance(list_first(&wq->sleepers),208 thread_t, wq_link);209 210 irq_spinlock_lock(&thread->lock, false);211 212 assert(thread->sleep_interruptible);213 214 if ((thread->timeout_pending) &&215 (timeout_unregister(&thread->sleep_timeout)))216 thread->timeout_pending = false;217 218 list_remove(&thread->wq_link);219 thread->saved_context = thread->sleep_interruption_context;220 thread->sleep_queue = NULL;221 222 irq_spinlock_unlock(&thread->lock, false);223 thread_ready(thread);224 }225 226 irq_spinlock_unlock(&wq->lock, true);227 192 } 228 193
Note:
See TracChangeset
for help on using the changeset viewer.