Simplify reschedule points, mail works now!
All checks were successful
Build documentation / build-and-deploy (push) Successful in 2m55s

This commit is contained in:
2026-02-19 18:25:47 +01:00
parent a1730dfdc2
commit 4472ad5bb3
13 changed files with 45 additions and 143 deletions

View File

@@ -181,8 +181,10 @@ void proc_register (struct proc* proc, struct cpu* register_cpu, struct reschedu
spin_unlock (&cpu->lock);
spin_unlock (&proc_tree_lock);
if (rctx != NULL)
reschedule_list_append (rctx, cpu);
if (rctx != NULL) {
rctx->reschedule = true;
rctx->cpu = cpu;
}
}
/* caller holds cpu->lock */
@@ -252,7 +254,7 @@ static void proc_reap (struct reschedule_ctx* rctx) {
void proc_sched (void) {
int s_cycles = atomic_fetch_add (&sched_cycles, 1);
struct reschedule_ctx rctx = {.entries = NULL, .lock = SPIN_LOCK_INIT};
struct reschedule_ctx rctx = {.reschedule = false, .cpu = NULL};
if (s_cycles % SCHED_REAP_FREQ == 0)
proc_reap (&rctx);
@@ -295,7 +297,8 @@ void proc_kill (struct proc* proc, struct reschedule_ctx* rctx) {
spin_unlock (&proc->lock);
spin_unlock (&cpu->lock);
reschedule_list_append (rctx, cpu);
rctx->reschedule = true;
rctx->cpu = cpu;
DEBUG ("killed PID %d\n", proc->pid);
}