aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorTianhao Wang <shrik3@mailbox.org>2024-06-11 03:34:24 +0200
committerTianhao Wang <shrik3@mailbox.org>2024-06-11 15:17:14 +0200
commit0609a75bb016453cd7bb4f8393c31c572d56a06e (patch)
treebcc307b736131db06c06a735bee0f63e9d50d54b /src/lib.rs
parentf7dfc26865c586003d30bab578277e9776b98994 (diff)
proc: VecDequeue round-robin scheduler
Signed-off-by: Tianhao Wang <shrik3@mailbox.org>
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs27
1 files changed, 8 insertions, 19 deletions
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();
}