preempt: introduce idle process; timer: use managed irqs for preemption
[bertos.git] / bertos / drv / timer.c
index 0d78d198aaa3a6bb5690bab53f2ad59e49acb80f..485cc0229d2192796b6c2cfe2d1ae630654a9984 100644 (file)
@@ -54,7 +54,8 @@
  * Try the CPU specific one for bare-metal environments.
  */
 #if OS_HOSTED
-       #include OS_CSOURCE(timer)
+       //#include OS_CSOURCE(timer)
+       #include <emul/timer_posix.c>
 #else
        #include CPU_CSOURCE(timer)
 #endif
 volatile ticks_t _clock;
 
 
-#ifndef CONFIG_TIMER_DISABLE_EVENTS
+#if CONFIG_TIMER_EVENTS
 
 /**
  * List of active asynchronous timers.
@@ -172,7 +173,7 @@ Timer *timer_abort(Timer *timer)
        return timer;
 }
 
-#endif /* CONFIG_TIMER_DISABLE_EVENTS */
+#endif /* CONFIG_TIMER_EVENTS */
 
 
 /**
@@ -187,7 +188,7 @@ void timer_delayTicks(ticks_t delay)
        Timer t;
 
        ASSERT(!sig_check(SIG_SINGLE));
-       timer_set_event_signal(&t, proc_current(), SIG_SINGLE);
+       timer_setSignal(&t, proc_current(), SIG_SINGLE);
        timer_setDelay(&t, delay);
        timer_add(&t);
        sig_wait(SIG_SINGLE);
@@ -208,7 +209,7 @@ void timer_delayTicks(ticks_t delay)
 }
 
 
-#ifndef CONFIG_TIMER_DISABLE_UDELAY
+#if CONFIG_TIMER_UDELAY
 
 /**
  * Busy wait until the specified amount of high-precision ticks have elapsed.
@@ -254,7 +255,7 @@ void timer_delayHp(hptime_t delay)
 
        timer_busyWait(delay);
 }
-#endif /* CONFIG_TIMER_DISABLE_UDELAY */
+#endif /* CONFIG_TIMER_UDELAY */
 
 
 /**
@@ -272,9 +273,10 @@ DEFINE_TIMER_ISR
        #pragma interrupt saveall
        #endif
 
-#ifndef CONFIG_TIMER_DISABLE_EVENTS
+#if CONFIG_TIMER_EVENTS
        Timer *timer;
 #endif
+
        /*
         * On systems sharing IRQ line and vector, this check is needed
         * to ensure that IRQ is generated by timer source.
@@ -290,7 +292,7 @@ DEFINE_TIMER_ISR
        /* Update the master ms counter */
        ++_clock;
 
-#ifndef CONFIG_TIMER_DISABLE_EVENTS
+#if CONFIG_TIMER_EVENTS
        /*
         * Check the first timer request in the list and process
         * it when it has expired. Repeat this check until the
@@ -311,7 +313,7 @@ DEFINE_TIMER_ISR
                /* Execute the associated event */
                event_do(&timer->expire);
        }
-#endif /* CONFIG_TIMER_DISABLE_EVENTS */
+#endif /* CONFIG_TIMER_EVENTS */
 
        TIMER_STROBE_OFF;
 }
@@ -325,7 +327,7 @@ void timer_init(void)
 {
        TIMER_STROBE_INIT;
 
-#ifndef CONFIG_TIMER_DISABLE_EVENTS
+#if CONFIG_TIMER_EVENTS
        LIST_INIT(&timers_queue);
 #endif