diff --git a/kernel/tasks.c b/kernel/tasks.c index 743a0a9e..bc037aad 100644 --- a/kernel/tasks.c +++ b/kernel/tasks.c @@ -1017,8 +1017,9 @@ int set_timer(uint64_t deadline) if (runqueues[core_id].timers.last) runqueues[core_id].timers.last->next = curr_task; runqueues[core_id].timers.last = curr_task; - if (!runqueues[core_id].timers.first) - runqueues[core_id].timers.first = curr_task; + // obsolete lines... + //if (!runqueues[core_id].timers.first) + // runqueues[core_id].timers.first = curr_task; } else { curr_task->prev = tmp->prev; curr_task->next = tmp; @@ -1198,7 +1199,9 @@ void scheduler(void) // remove timer from queue runqueues[core_id].timers.first = runqueues[core_id].timers.first->next; - if (!runqueues[core_id].timers.first) + if (runqueues[core_id].timers.first) + runqueues[core_id].timers.first->prev = NULL; + else runqueues[core_id].timers.last = NULL; task->flags &= ~TASK_TIMER;