diff options
| author | prife <[email protected]> | 2013-01-22 16:23:33 +0800 |
|---|---|---|
| committer | prife <[email protected]> | 2013-01-22 16:23:33 +0800 |
| commit | 29d63fe2bcd04008322a0ca2259a56a6ed51ee89 (patch) | |
| tree | 4b317f0b23f17e0b676cca0ce9152615818e70a0 /src/timer.c | |
| parent | 3f3b6b7deb2b87f88c2b4a1ed65bbfa25c2b3621 (diff) | |
| parent | 8bbd54ddf65fde499870ceaf4d107d6d23d90d6d (diff) | |
Merge branch 'master' into simposix
Diffstat (limited to 'src/timer.c')
| -rw-r--r-- | src/timer.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/timer.c b/src/timer.c index a1699dad63..2a27d9d9a8 100644 --- a/src/timer.c +++ b/src/timer.c @@ -273,12 +273,18 @@ rt_err_t rt_timer_start(rt_timer_t timer) for (n = timer_list->next; n != timer_list; n = n->next) { t = rt_list_entry(n, struct rt_timer, list); - + /* * It supposes that the new tick shall less than the half duration of - * tick max. + * tick max. And if we have two timers that timeout at the same time, + * it's prefered that the timer inserted early get called early. */ - if ((t->timeout_tick - timer->timeout_tick) < RT_TICK_MAX / 2) + if ((t->timeout_tick - timer->timeout_tick) == 0) + { + rt_list_insert_after(n, &(timer->list)); + break; + } + else if ((t->timeout_tick - timer->timeout_tick) < RT_TICK_MAX / 2) { rt_list_insert_before(n, &(timer->list)); break; |
