X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Ftimer.c;h=a411dc4e8be29775aed3cc959f5af49b62f32c00;hb=1ebcf9b89595826a5c158ae6a68d4c2407b1dd52;hp=d75f15abcf85324e525444bd3ad060404f196c56;hpb=9ce278eab99540113abad1e55026fb9d3aa3c2e2;p=bertos.git diff --git a/bertos/drv/timer.c b/bertos/drv/timer.c index d75f15ab..a411dc4e 100644 --- a/bertos/drv/timer.c +++ b/bertos/drv/timer.c @@ -158,6 +158,8 @@ INLINE void timer_addToList(Timer *timer, List *queue) * When the delay indicated by the timer expires, the timer * device will execute the event associated with it. * + * You should not call this function on an already running timer. + * * \note Interrupt safe */ void timer_add(Timer *timer) @@ -252,14 +254,13 @@ void timer_delayTicks(ticks_t delay) #if CONFIG_KERN_SIGNALS Timer t; - + DB(t.magic = TIMER_MAGIC_INACTIVE;) if (proc_preemptAllowed()) { - ASSERT(!sig_check(SIG_SINGLE)); - timer_setSignal(&t, proc_current(), SIG_SINGLE); + timer_setEvent(&t); timer_setDelay(&t, delay); timer_add(&t); - sig_wait(SIG_SINGLE); + timer_waitEvent(&t); } else #endif /* !CONFIG_KERN_SIGNALS */