mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-17 05:12:57 +01:00
xtimer: set now pointer correctly in _update_short_timers() loop
This fixes `xtimer` to use `xtimer_now64()` instead of `xtimer_now()` for updating the `*now` variable during the iteration in `_update_short_timers()` function. The same function is used to initialize `*now` in `_timer_callback()` below. While using `xtimer_now()` in this iteration step does not hinder the proper execution of all timers in the short term timers (for those the `xtimer` module only looks at the `start_time` member, not the `long_start_time` member) at least for the current long term time window (I did not test higher cases), it sets the `long_start_time` member to 0 for all timers following in the list of timers after this iteration step. However, external modules that rely on this to be correct, e.g. evtimer [1], fail their calculations when trying to compare to the current value to `xtimer_now64()`. [1] https://github.com/RIOT-OS/RIOT/blob/11f3d68/sys/evtimer/evtimer.c#L118-L121 Co-Authored-By: Cenk Gündoğan <mail+dev@gundogan.net>
This commit is contained in:
parent
11f3d68887
commit
212fe15786
@ -292,7 +292,7 @@ static inline void _update_short_timers(uint64_t *now)
|
||||
/* assign new head */
|
||||
timer = timer_list_head;
|
||||
/* update current_time */
|
||||
*now = _xtimer_now();
|
||||
*now = _xtimer_now64();
|
||||
}
|
||||
else {
|
||||
timer->offset -= elapsed;
|
||||
|
Loading…
Reference in New Issue
Block a user