Files
mop3/kernel/amd64/sched1.c
kamkow1 e5ebd7f3ba
All checks were successful
Build ISO image / build-and-deploy (push) Successful in 2m21s
Build documentation / build-and-deploy (push) Successful in 54s
Use a big-lock for kernel sychronization instead of fine-grained locking
2026-04-27 18:06:02 +02:00

34 lines
762 B
C

#include <amd64/fx.h>
#include <amd64/msr-index.h>
#include <amd64/msr.h>
#include <amd64/sched.h>
#include <aux/compiler.h>
#include <libk/std.h>
#include <libk/string.h>
#include <proc/proc.h>
#include <sync/biglock.h>
#include <sync/spin_lock.h>
#include <sys/debug.h>
#include <sys/intr.h>
#include <sys/mm.h>
#include <sys/smp.h>
void do_sched(struct proc* proc) {
intr_disable();
thiscpu->tss.rsp0 = proc->pdata.kernel_stack;
thiscpu->syscall_kernel_stack = proc->pdata.kernel_stack;
wrmsr(MSR_FS_BASE, proc->pdata.fs_base);
void* cr3 = (void*)proc->procgroup->pd.cr3_paddr;
struct saved_regs regs;
memcpy(&regs, &proc->pdata.regs, sizeof(regs));
fx_restore(proc->pdata.fx_env);
biglock_unlock();
do_sched1((void*)&regs, cr3);
}