Ignore:
File:
1 edited

Legend:

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

    r6c4a56f r2e4e706  
    4949#include <proc/scheduler.h>
    5050#include <arch/asm.h>
    51 #include <arch/types.h>
     51#include <typedefs.h>
    5252#include <time/timeout.h>
    5353#include <arch.h>
    5454#include <context.h>
    5555#include <adt/list.h>
     56#include <arch/cycle.h>
    5657
    5758static void waitq_sleep_timed_out(void *data);
     
    207208}
    208209
     210#define PARAM_NON_BLOCKING(flags, usec) \
     211        (((flags) & SYNCH_FLAGS_NON_BLOCKING) && ((usec) == 0))
     212
    209213/** Sleep until either wakeup, timeout or interruption occurs
    210214 *
     
    256260        ipl_t ipl;
    257261        int rc;
     262
     263        ASSERT((!PREEMPTION_DISABLED) || (PARAM_NON_BLOCKING(flags, usec)));
    258264       
    259265        ipl = waitq_sleep_prepare(wq);
     
    343349        }
    344350        else {
    345                 if ((flags & SYNCH_FLAGS_NON_BLOCKING) && (usec == 0)) {
     351                if (PARAM_NON_BLOCKING(flags, usec)) {
    346352                        /* return immediatelly instead of going to sleep */
    347353                        return ESYNCH_WOULD_BLOCK;
     
    373379                if (!context_save(&THREAD->sleep_interruption_context)) {
    374380                        /* Short emulation of scheduler() return code. */
     381                        THREAD->last_cycle = get_cycle();
    375382                        spinlock_unlock(&THREAD->lock);
    376383                        return ESYNCH_INTERRUPTED;
     
    385392                if (!context_save(&THREAD->sleep_timeout_context)) {
    386393                        /* Short emulation of scheduler() return code. */
     394                        THREAD->last_cycle = get_cycle();
    387395                        spinlock_unlock(&THREAD->lock);
    388396                        return ESYNCH_TIMEOUT;
Note: See TracChangeset for help on using the changeset viewer.