commit 836647ae0821cc54f898ee48617f06de87d6a654 from: int16h date: Fri Dec 5 12:38:09 2025 UTC Sched: Update PERF_COUNTER_SCHED_TICKS with sched_tick() commit - 68d2febf4860768d02aaa134cfcac0fa3ee35508 commit + 836647ae0821cc54f898ee48617f06de87d6a654 blob - 38c0ad2754ae80a4a1dd4adba133b9acecc02196 blob + 29e1953aad0e1d7866a4c0f8bf9b70280a272e97 --- kernel/sched/task.c +++ kernel/sched/task.c @@ -661,8 +661,6 @@ void sched_tick(void) { struct sched_cpu_state *state; - struct sched_task *task; - bool requeue; if (!scheduler_started) return; @@ -673,15 +671,10 @@ sched_tick(void) state->tick_count++; if (state->run_length > state->max_run_length) state->max_run_length = state->run_length; - task = state->current; - requeue = task != NULL && !task->is_idle; - if (state->need_resched) { - state->need_resched = false; - requeue = true; - } + /* Set need_resched to trigger a context switch at a safe point */ + state->need_resched = true; /* Check for portal_recv timeouts (deadlock detection) */ deadlock_check_and_report(); - sched_switch(requeue); } void blob - b589bbf3dfa668ad1860308d684d604e95eb8632 blob + f66a1c51bd3c85d97b594ba61a2769d5e365e88e --- kernel/time/time.c +++ kernel/time/time.c @@ -6,6 +6,7 @@ #include "time/timer.h" #include "sched/clock.h" +#include "sched/task.h" #include "mm/kmem.h" #include "log/printk.h" #include "log/serial.h" @@ -116,6 +117,7 @@ timer_handle_tick(void) serial_poll_rx(); timer_tick_count++; sched_clock_tick(timer_tick_count); + sched_tick(); /* Timer discipline: detect drift and vector storms */ if (timer_last_tick_time != 0) {