From fbc2cc52c8a38c3c63a34f5547ba7c4209a667ac Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Thu, 2 Mar 2023 20:30:55 +0100 Subject: scheduling usermode processes & code refactoring --- kernel/src/scheduler/scheduler.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'kernel/src/scheduler/scheduler.c') diff --git a/kernel/src/scheduler/scheduler.c b/kernel/src/scheduler/scheduler.c index 91e5ddd..28e2cae 100644 --- a/kernel/src/scheduler/scheduler.c +++ b/kernel/src/scheduler/scheduler.c @@ -7,19 +7,27 @@ #include #include #include +#include +#include mutex_t scheduler_lock; uint32_t sched_init = 0; __attribute__((noreturn)) void init_scheduler() { + uint32_t argc; + uint64_t *argv; + INIT_LIST(process_queue.list); init_mutex(&scheduler_lock); - uint64_t argc = 6; - uint64_t *argv = (uint64_t *)kalloc(sizeof(uint64_t) * 6); - memset(argv, 0, sizeof(uint64_t) * 6); - init_process(0, (uint64_t)idle_thread2, argc, argv); - curr_process = init_process(0, (uint64_t)idle_thread, argc, argv); + + argc = 1; + argv = (uint64_t *)kalloc(argc * sizeof(uint64_t)); + memset(argv, 0, sizeof(uint64_t) * argc); + init_process(0, (uint64_t)idle_thread, argc, argv); + curr_process = init_process(0, (uint64_t)init_ap_cpus, argc, argv); + init_process(3, (uint64_t)begin_userspace, argc, argv); + sched_init = 1; restore_context_from_rsp(curr_process->rsp); } -- cgit v1.2.3