X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Ftimer.c;h=7e99d78ee8822b9e6eeaadbdd434b09c221fc8ac;hb=d293a14828642a25816611a62031bea7da59bdc8;hp=485cc0229d2192796b6c2cfe2d1ae630654a9984;hpb=cfa8814ca45e8bae9b36713bc534ecb581834016;p=bertos.git diff --git a/bertos/drv/timer.c b/bertos/drv/timer.c index 485cc022..7e99d78e 100644 --- a/bertos/drv/timer.c +++ b/bertos/drv/timer.c @@ -40,7 +40,8 @@ #include "cfg/cfg_timer.h" #include "cfg/cfg_wdt.h" -#include "cfg/cfg_kern.h" +#include "cfg/cfg_proc.h" +#include "cfg/cfg_signal.h" #include #include #include @@ -48,6 +49,7 @@ #include #include #include +#include // cpu_relax() /* * Include platform-specific binding code if we're hosted. @@ -63,8 +65,8 @@ /* * Sanity check for config parameters required by this module. */ -#if !defined(CONFIG_KERNEL) || ((CONFIG_KERNEL != 0) && CONFIG_KERNEL != 1) - #error CONFIG_KERNEL must be set to either 0 or 1 in config.h +#if !defined(CONFIG_KERN) || ((CONFIG_KERN != 0) && CONFIG_KERN != 1) + #error CONFIG_KERN must be set to either 0 or 1 in config.h #endif #if !defined(CONFIG_WATCHDOG) || ((CONFIG_WATCHDOG != 0) && CONFIG_WATCHDOG != 1) #error CONFIG_WATCHDOG must be set to either 0 or 1 in config.h @@ -74,12 +76,10 @@ #include #endif -#if CONFIG_KERNEL - #if CONFIG_KERN_SIGNALS - #include /* sig_wait(), sig_check() */ - #include /* proc_current() */ - #include /* BV() */ - #endif +#if defined (CONFIG_KERN_SIGNALS) && CONFIG_KERN_SIGNALS + #include /* sig_wait(), sig_check() */ + #include /* proc_current() */ + #include /* BV() */ #endif @@ -122,7 +122,7 @@ REGISTER static List timers_queue; void timer_add(Timer *timer) { Timer *node; - cpuflags_t flags; + cpu_flags_t flags; /* Inserting timers twice causes mayhem. */ @@ -182,7 +182,7 @@ Timer *timer_abort(Timer *timer) void timer_delayTicks(ticks_t delay) { /* We shouldn't sleep with interrupts disabled */ - ASSERT_IRQ_ENABLED(); + IRQ_ASSERT_ENABLED(); #if defined(CONFIG_KERN_SIGNALS) && CONFIG_KERN_SIGNALS Timer t; @@ -199,11 +199,7 @@ void timer_delayTicks(ticks_t delay) /* Busy wait */ while (timer_clock() - start < delay) - { -#if CONFIG_WATCHDOG - wdt_reset(); -#endif - } + cpu_relax(); #endif /* !CONFIG_KERN_SIGNALS */ } @@ -325,11 +321,15 @@ MOD_DEFINE(timer) */ void timer_init(void) { - TIMER_STROBE_INIT; + #if CONFIG_KERN_IRQ + MOD_CHECK(irq); + #endif -#if CONFIG_TIMER_EVENTS - LIST_INIT(&timers_queue); -#endif + #if CONFIG_TIMER_EVENTS + LIST_INIT(&timers_queue); + #endif + + TIMER_STROBE_INIT; _clock = 0;