Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/synch/waitq.c

    rb59318e r7c3fb9b  
    5757#include <adt/list.h>
    5858#include <arch/cycle.h>
    59 #include <mem.h>
    6059
    6160static void waitq_sleep_timed_out(void *);
     
    7271void waitq_initialize(waitq_t *wq)
    7372{
    74         memsetb(wq, sizeof(*wq), 0);
    7573        irq_spinlock_initialize(&wq->lock, "wq.lock");
    7674        list_initialize(&wq->sleepers);
     75        wq->missed_wakeups = 0;
    7776}
    7877
     
    115114                thread->saved_context = thread->sleep_timeout_context;
    116115                do_wakeup = true;
    117                 if (thread->sleep_composable)
    118                         wq->ignore_wakeups++;
    119116                thread->sleep_queue = NULL;
    120117                irq_spinlock_unlock(&wq->lock, false);
     
    179176                list_remove(&thread->wq_link);
    180177                thread->saved_context = thread->sleep_interruption_context;
    181                 if (thread->sleep_composable)
    182                         wq->ignore_wakeups++;
    183178                do_wakeup = true;
    184179                thread->sleep_queue = NULL;
     
    398393         */
    399394        irq_spinlock_lock(&THREAD->lock, false);
    400 
    401         THREAD->sleep_composable = (flags & SYNCH_FLAGS_FUTEX);
    402395
    403396        if (flags & SYNCH_FLAGS_INTERRUPTIBLE) {
     
    545538        assert(irq_spinlock_locked(&wq->lock));
    546539
    547         if (wq->ignore_wakeups > 0) {
    548                 if (mode == WAKEUP_FIRST) {
    549                         wq->ignore_wakeups--;
    550                         return;
    551                 }
    552                 wq->ignore_wakeups = 0;
    553         }
    554 
    555540loop:
    556541        if (list_empty(&wq->sleepers)) {
Note: See TracChangeset for help on using the changeset viewer.