#include "proc/scheduler.h" #include "arch/x86_64/hal/gdt.h" #include "process.h" #include "../hal/smp.h" #include void _scheduler_switch_pcb_arch(pcb_t *target) { processor_t *proc = processor_current(); proc->tss.rsp[0] = (uintptr_t)target->header.ksp; if(target->iopb) { proc->tss.iopb = sizeof(struct tss); jove_owned_obj_t *iopb_obj = obj_take(target->iopb); memcpy(proc->iopb, obj_deref(iopb_obj), sizeof(proc->iopb)); }else{ proc->tss.iopb = 0xff; } }