From 0609a75bb016453cd7bb4f8393c31c572d56a06e Mon Sep 17 00:00:00 2001 From: Tianhao Wang Date: Tue, 11 Jun 2024 03:34:24 +0200 Subject: proc: VecDequeue round-robin scheduler Signed-off-by: Tianhao Wang --- src/lib.rs | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index 41acca2..b4b6d66 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,7 @@ #![no_std] #![no_main] #![feature(const_option)] +#![feature(try_with_capacity)] mod arch; mod defs; mod ds; @@ -11,6 +12,7 @@ mod machine; mod mm; mod proc; extern crate alloc; +use crate::proc::sched::*; use alloc::vec::Vec; use arch::x86_64::interrupt; use arch::x86_64::interrupt::pic_8259; @@ -82,23 +84,10 @@ pub unsafe fn _test_pf() { } pub fn _test_proc_switch_to() { - use crate::arch::x86_64::arch_regs::Context64; - use crate::mm::KSTACK_ALLOCATOR; - use crate::proc::task::*; - let sp = unsafe { KSTACK_ALLOCATOR.lock().allocate() }; - println!("new task on {:#X}", sp); - let new_task = unsafe { - Task::settle_on_stack( - sp, - Task { - magic: Mem::KERNEL_STACK_TASK_MAGIC, - task_id: 42, - kernel_stack: sp, - state: TaskState::Meow, - context: Context64::default(), - }, - ) - }; - new_task.prepare_context(_task_entry as u64); - unsafe { context_swap_to(&(new_task.context) as *const _ as u64) } + SCHEDULER.lock().insert_task(Task::create_dummy(1)); + SCHEDULER.lock().insert_task(Task::create_dummy(2)); + SCHEDULER.lock().insert_task(Task::create_dummy(3)); + SCHEDULER.lock().insert_task(Task::create_dummy(4)); + SCHEDULER.lock().insert_task(Task::create_dummy(5)); + Scheduler::kickoff(); } -- cgit v1.2.3-70-g09d2