mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
sys/ztimer64: properly clear timer on removal
This commit is contained in:
parent
3a9e64806c
commit
888cb09dff
@ -127,6 +127,12 @@ static int _add_entry_to_list(ztimer64_clock_t *clock, ztimer64_base_t *entry)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _clear(ztimer64_base_t *entry)
|
||||||
|
{
|
||||||
|
entry->next = NULL;
|
||||||
|
entry->target = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int _del_entry_from_list(ztimer64_clock_t *clock, ztimer64_base_t *entry)
|
static int _del_entry_from_list(ztimer64_clock_t *clock, ztimer64_base_t *entry)
|
||||||
{
|
{
|
||||||
DEBUG("_del_entry_from_list()\n");
|
DEBUG("_del_entry_from_list()\n");
|
||||||
@ -137,7 +143,7 @@ static int _del_entry_from_list(ztimer64_clock_t *clock, ztimer64_base_t *entry)
|
|||||||
if (clock->first == entry) {
|
if (clock->first == entry) {
|
||||||
/* special case: removing first entry */
|
/* special case: removing first entry */
|
||||||
clock->first = entry->next;
|
clock->first = entry->next;
|
||||||
entry->next = 0;
|
_clear(entry);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -151,7 +157,7 @@ static int _del_entry_from_list(ztimer64_clock_t *clock, ztimer64_base_t *entry)
|
|||||||
pos = pos->next;
|
pos = pos->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
entry->next = 0;
|
_clear(entry);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -238,9 +244,9 @@ void ztimer64_handler(void *arg)
|
|||||||
ztimer64_t *timer = (ztimer64_t *)clock->first;
|
ztimer64_t *timer = (ztimer64_t *)clock->first;
|
||||||
/* remove timer from list */
|
/* remove timer from list */
|
||||||
clock->first = clock->first->next;
|
clock->first = clock->first->next;
|
||||||
|
|
||||||
/* clear timer struct so it can be re-set */
|
/* clear timer struct so it can be re-set */
|
||||||
timer->base.next = NULL;
|
_clear(&timer->base);
|
||||||
timer->base.target = 0;
|
|
||||||
|
|
||||||
/* shoot callback */
|
/* shoot callback */
|
||||||
timer->callback(timer->arg);
|
timer->callback(timer->arg);
|
||||||
|
Loading…
Reference in New Issue
Block a user