From 383ada93492c54d7a8c7ec9be4544c68b29f49a0 Mon Sep 17 00:00:00 2001 From: Kaspar Schleiser <kaspar@schleiser.de> Date: Fri, 4 Sep 2015 17:19:43 +0200 Subject: [PATCH] sys: xtimer: always set long_target, even for short timers --- sys/xtimer/xtimer_core.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sys/xtimer/xtimer_core.c b/sys/xtimer/xtimer_core.c index d7a57117fe..0e1ceaf2e1 100644 --- a/sys/xtimer/xtimer_core.c +++ b/sys/xtimer/xtimer_core.c @@ -170,19 +170,17 @@ int _xtimer_set_absolute(xtimer_t *timer, uint32_t target) } timer->target = target; + timer->long_target = _long_cnt; + if (target < now) { + timer->long_target++; + } unsigned state = disableIRQ(); if ( !_this_high_period(target) ) { DEBUG("xtimer_set_absolute(): the timer doesn't fit into the low-level timer's mask.\n"); - timer->long_target = _long_cnt; _add_timer_to_long_list(&long_list_head, timer); } else { - if (!target) { - /* set long_target != 0 so _is_set() can work */ - timer->long_target = 1; - } - if (_mask(now) >= target) { DEBUG("xtimer_set_absolute(): the timer will expire in the next timer period\n"); _add_timer_to_list(&overflow_list_head, timer); -- GitLab