diff --git a/src/sys/sched/scheduler.c b/src/sys/sched/scheduler.c index 96ef2572..e6b80019 100644 --- a/src/sys/sched/scheduler.c +++ b/src/sys/sched/scheduler.c @@ -199,6 +199,8 @@ void sched_timerhook(arch_regs* regs){ timer_add(&arch_getcls()->schedreq, THREAD_QUANTUM, false); + + } void switch_thread(thread_t* thread){ @@ -209,7 +211,9 @@ void switch_thread(thread_t* thread){ arch_getcls()->thread = thread; - vmm_switchcontext(thread->ctx); + + if(current->ctx != thread->ctx) + vmm_switchcontext(thread->ctx); arch_setkernelstack(thread->kernelstack); @@ -418,6 +422,8 @@ void sched_runinit(){ timer_add(&arch_getcls()->schedreq, THREAD_QUANTUM, true); + printf("Switching to init thread\n"); + switch_thread(thread); __builtin_unreachable();