summaryrefslogtreecommitdiffstats
path: root/proc/scheduler.c
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-10-16 16:42:22 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-10-16 16:42:22 -0400
commitd8aca3ff2501f9a77e22e5afb7a30380aed205af (patch)
treea27db1749a35aea07317406f170a2d9b2a799ce7 /proc/scheduler.c
parent548506392b789f58b1556a6ffca917441e1d89fd (diff)
downloadjove-kernel-d8aca3ff2501f9a77e22e5afb7a30380aed205af.tar.gz
jove-kernel-d8aca3ff2501f9a77e22e5afb7a30380aed205af.tar.bz2
jove-kernel-d8aca3ff2501f9a77e22e5afb7a30380aed205af.zip
remove explicit framebuffer in kernel. reduce locking in syscalls
Diffstat (limited to 'proc/scheduler.c')
-rw-r--r--proc/scheduler.c12
1 files changed, 1 insertions, 11 deletions
diff --git a/proc/scheduler.c b/proc/scheduler.c
index ba00abc..a3c3071 100644
--- a/proc/scheduler.c
+++ b/proc/scheduler.c
@@ -18,16 +18,13 @@ static uintmax_t s_this_tick;
static inline void
s_scheduler_swap_pcb(processor_t *proc, pcb_t *current_pcb, pcb_t *target_pcb)
{
- jove_owned_obj_t *target_rootdir = obj_take(pcb_getrootdir(target_pcb));
+ jove_obj_t *target_rootdir = pcb_getrootdir(target_pcb);
jove_owned_obj_t *target_pcb_obj = pcb_getself(target_rootdir);
jove_obj_t target_pagedir = objdir_peeklocal(target_rootdir, PCB_ROOTDIR_PAGEDIR_I);
- obj_release(target_rootdir);
-
processor_setpcb(proc, target_pcb_obj);
_scheduler_switch_pcb_arch(target_pcb);
-
scheduler_switch(
pcb_getksp_ref(current_pcb),
pcb_getksp(target_pcb),
@@ -170,15 +167,8 @@ void scheduler_init(jove_owned_obj_t *pcb_obj, void *process_main)
pcb_set_syscall_stack((pcb_t*)pcb_header, obj_getvalue(&syscall_stack));
pcb_set_interrupt_stack((pcb_t*)pcb_header, obj_getvalue(&interrupt_stack));
- kprintf("Syscall stack %p %p\n", *__syscall_stack_mapping, pcb_get_syscall_stack((pcb_t*)pcb_header));
- kprintf("Interrupt stack %p %p\n", *__interrupt_stack_mapping, pcb_get_interrupt_stack((pcb_t*)pcb_header));
-
_scheduler_switch_pcb_arch((pcb_t*)pcb_header);
- jove_owned_obj_t *pagedir_obj = pcb_getpagedir(_rootdir_obj);
- void *pagedir = (void*)obj_getvalue(pagedir_obj);
- obj_release(pagedir_obj);
-
pcb_map_syscall_stack((pcb_t*)pcb_header);
pcb_map_interrupt_stack((pcb_t*)pcb_header);