X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Ftimer.c;h=c0106d85bbe515a32747c977e1ced7e48016b5e8;hb=efaaa302de8fec1522eaa5a80ea750214028b3b4;hp=333d6cd83282ed7886b728b43c68861cbeeb697d;hpb=78eea60c48fd902dd469654a69b1dcf5abb93f0c;p=bertos.git diff --git a/bertos/drv/timer.c b/bertos/drv/timer.c index 333d6cd8..c0106d85 100644 --- a/bertos/drv/timer.c +++ b/bertos/drv/timer.c @@ -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 #else #include CPU_CSOURCE(timer) #endif @@ -74,9 +75,6 @@ #endif #if CONFIG_KERNEL - #if CONFIG_KERN_PREEMPTIVE - #include - #endif #if CONFIG_KERN_SIGNALS #include /* sig_wait(), sig_check() */ #include /* proc_current() */ @@ -106,7 +104,7 @@ volatile ticks_t _clock; -#ifndef CONFIG_TIMER_DISABLE_EVENTS +#if CONFIG_TIMER_EVENTS /** * List of active asynchronous timers. @@ -175,7 +173,7 @@ Timer *timer_abort(Timer *timer) return timer; } -#endif /* CONFIG_TIMER_DISABLE_EVENTS */ +#endif /* CONFIG_TIMER_EVENTS */ /** @@ -190,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); @@ -211,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. @@ -257,7 +255,7 @@ void timer_delayHp(hptime_t delay) timer_busyWait(delay); } -#endif /* CONFIG_TIMER_DISABLE_UDELAY */ +#endif /* CONFIG_TIMER_UDELAY */ /** @@ -275,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. @@ -293,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 @@ -314,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; } @@ -326,11 +325,15 @@ MOD_DEFINE(timer) */ void timer_init(void) { - TIMER_STROBE_INIT; + #if CONFIG_KERN_IRQ + MOD_CHECK(irq); + #endif -#ifndef CONFIG_TIMER_DISABLE_EVENTS - LIST_INIT(&timers_queue); -#endif + #if CONFIG_TIMER_EVENTS + LIST_INIT(&timers_queue); + #endif + + TIMER_STROBE_INIT; _clock = 0;