From b9af2ae9c40969a625973142fffb434651f7b082 Mon Sep 17 00:00:00 2001 From: able Date: Thu, 13 Jul 2023 03:27:47 -0500 Subject: [PATCH] SCHEDULER: added in some super simple bootmodules and run them --- Cargo.lock | 95 +++------------------------------------- a.out | 0 kernel/Cargo.toml | 2 +- kernel/src/host.rs | 45 +++++-------------- kernel/src/kmain.rs | 1 + kernel/src/scheduler.rs | 9 ++-- repbuild/inf_loop.hb | Bin 0 -> 11 bytes repbuild/limine.cfg | 4 +- repbuild/src/main.rs | 4 ++ 9 files changed, 31 insertions(+), 129 deletions(-) delete mode 100644 a.out create mode 100644 repbuild/inf_loop.hb diff --git a/Cargo.lock b/Cargo.lock index c0f57ebb..da83d796 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -69,12 +69,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "allocator-api2" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56fc6cf8dc8c4158eed8649f9b8b0ea1518eb62b544fe9490d66fa0b349eafe9" - [[package]] name = "android-tzdata" version = "0.1.1" @@ -152,12 +146,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "beef" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" - [[package]] name = "bit" version = "0.1.1" @@ -316,7 +304,7 @@ name = "clparse" version = "0.1.0" source = "git+https://git.ablecorp.us/ableos/ableos_userland#a45a19c6b7355ebdac53259d06a1894a096143e6" dependencies = [ - "hashbrown 0.14.0", + "hashbrown 0.12.3", "log", "toml", ] @@ -868,37 +856,15 @@ dependencies = [ "ahash 0.8.3", ] -[[package]] -name = "hashbrown" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" -dependencies = [ - "ahash 0.8.3", - "allocator-api2", -] - -[[package]] -name = "hbasm" -version = "0.1.0" -source = "git+https://git.ablecorp.us/ableos/holey-bytes#b6ea49a1b5e45a3f64737ddd40707731e71ac1d2" -dependencies = [ - "hashbrown 0.14.0", - "hbbytecode", - "lasso", - "logos", - "paste", -] - [[package]] name = "hbbytecode" version = "0.1.0" -source = "git+https://git.ablecorp.us/ableos/holey-bytes#b6ea49a1b5e45a3f64737ddd40707731e71ac1d2" +source = "git+https://git.ablecorp.us/ableos/holey-bytes#75995422262a192f2c87713d239856e98c799f41" [[package]] name = "hbvm" version = "0.1.0" -source = "git+https://git.ablecorp.us/ableos/holey-bytes#b6ea49a1b5e45a3f64737ddd40707731e71ac1d2" +source = "git+https://git.ablecorp.us/ableos/holey-bytes#75995422262a192f2c87713d239856e98c799f41" dependencies = [ "delegate", "derive_more", @@ -1141,8 +1107,7 @@ dependencies = [ "derive_more", "embedded-graphics", "error-stack 0.3.1", - "hashbrown 0.14.0", - "hbasm", + "hashbrown 0.12.3", "hbvm", "limine", "log", @@ -1158,16 +1123,6 @@ dependencies = [ "xml", ] -[[package]] -name = "lasso" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4644821e1c3d7a560fe13d842d13f587c07348a1a05d3a797152d41c90c56df2" -dependencies = [ - "ahash 0.8.3", - "hashbrown 0.13.2", -] - [[package]] name = "lazy_static" version = "1.4.0" @@ -1216,38 +1171,6 @@ version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" -[[package]] -name = "logos" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c000ca4d908ff18ac99b93a062cb8958d331c3220719c52e77cb19cc6ac5d2c1" -dependencies = [ - "logos-derive", -] - -[[package]] -name = "logos-codegen" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc487311295e0002e452025d6b580b77bb17286de87b57138f3b5db711cded68" -dependencies = [ - "beef", - "fnv", - "proc-macro2", - "quote", - "regex-syntax 0.6.29", - "syn 2.0.23", -] - -[[package]] -name = "logos-derive" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfc0d229f1f42d790440136d941afd806bc9e949e2bcb8faa813b0f00d1267e" -dependencies = [ - "logos-codegen", -] - [[package]] name = "lzma-sys" version = "0.1.20" @@ -1706,7 +1629,7 @@ dependencies = [ "aho-corasick", "memchr", "regex-automata", - "regex-syntax 0.7.3", + "regex-syntax", ] [[package]] @@ -1717,15 +1640,9 @@ checksum = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.3", + "regex-syntax", ] -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - [[package]] name = "regex-syntax" version = "0.7.3" diff --git a/a.out b/a.out deleted file mode 100644 index e69de29b..00000000 diff --git a/kernel/Cargo.toml b/kernel/Cargo.toml index 2f9df3b6..a01e05a3 100644 --- a/kernel/Cargo.toml +++ b/kernel/Cargo.toml @@ -7,7 +7,7 @@ version = "0.2.0" [dependencies] hbvm = { git = "https://git.ablecorp.us/ableos/holey-bytes" } -hbasm = { git = "https://git.ablecorp.us/ableos/holey-bytes" } +# hbasm = { git = "https://git.ablecorp.us/ableos/holey-bytes" } embedded-graphics = "0.7.1" diff --git a/kernel/src/host.rs b/kernel/src/host.rs index e2e29af8..35a01920 100644 --- a/kernel/src/host.rs +++ b/kernel/src/host.rs @@ -63,49 +63,26 @@ pub enum HostError { // // pub fn rpc_register(_engine: &mut Engine) {} // // pub fn rpc_call(_engine: &mut Engine) {} -use log::error; - -use hbvm::vm::{ - mem::{Memory, MemoryAccessReason, PageSize}, - trap::HandleTrap, - value::Value, -}; - +use {hbvm::vm::mem::HandlePageFault, log::error}; /// AbleOS HBVM traphandler pub struct TrapHandler; -impl HandleTrap for TrapHandler { +impl HandlePageFault for TrapHandler { fn page_fault( &mut self, - mar: MemoryAccessReason, - memory: &mut Memory, + reason: hbvm::vm::mem::MemoryAccessReason, + memory: &mut hbvm::vm::mem::Memory, vaddr: u64, - size: PageSize, + size: hbvm::vm::mem::PageSize, dataptr: *mut u8, ) -> bool { error!( - "MemoryAccessReason: {} -Memory: {:?} -VAddr: {} -Size: {:?} -DataPTR: {:?}", - mar, memory, vaddr, size, dataptr + "REASON: {} +memory: {:?} +vaddr: {} +size: {:?} +Dataptr {:?}", + reason, memory, vaddr, size, dataptr ); false } - - fn invalid_op(&mut self, _: &mut [Value; 256], _: &mut usize, _: &mut Memory, _: u8) -> bool - where - Self: Sized, - { - log::trace!("Invalid opcode"); - - false - } - - fn ecall(&mut self, _: &mut [Value; 256], _: &mut usize, _: &mut Memory) - where - Self: Sized, - { - log::trace!("ableOS system call made"); - } } diff --git a/kernel/src/kmain.rs b/kernel/src/kmain.rs index cb043f82..0c9fded3 100644 --- a/kernel/src/kmain.rs +++ b/kernel/src/kmain.rs @@ -43,6 +43,7 @@ pub fn kmain(cmdline: &str, boot_modules: BootModules) -> ! { let mut sched = Scheduler::new(); // AHEM that isn't a valid HBVM program sched.new_process(boot_modules[0].bytes.clone()); + sched.new_process(boot_modules[1].bytes.clone()); sched.run(); // sloop(); diff --git a/kernel/src/scheduler.rs b/kernel/src/scheduler.rs index 46474d2b..c127b28c 100644 --- a/kernel/src/scheduler.rs +++ b/kernel/src/scheduler.rs @@ -4,9 +4,10 @@ use { }; use {crate::host::TrapHandler, hbvm::vm::Vm}; +const TIMER_QUOTIENT: usize = 10_000_000; pub struct Scheduler<'a> { - data: VecDeque>, + data: VecDeque>, } // NOTE: This is a very simple schduler and it sucks and should be replaced with a better one @@ -40,7 +41,7 @@ impl Scheduler<'_> { pub fn run(&mut self) -> ! { loop { - // If there are no programs to run sleep + // If there are no programs to run then sleep. if self.data.is_empty() { use crate::arch::sloop; sloop(); @@ -48,7 +49,9 @@ impl Scheduler<'_> { let mut prog = self.data.pop_front().unwrap(); prog.run().unwrap(); - log::trace!("VM registers {:?}", prog.registers); + + // log::info!("VM registers {:?}", prog.registers); + log::info!("Scheduled program"); self.data.push_back(prog); } } diff --git a/repbuild/inf_loop.hb b/repbuild/inf_loop.hb new file mode 100644 index 0000000000000000000000000000000000000000..2896284bd9325d7cce67b69b4bc1c574cd53d540 GIT binary patch literal 11 KcmY#jfCB&lYXBht literal 0 HcmV?d00001 diff --git a/repbuild/limine.cfg b/repbuild/limine.cfg index 6f8f0099..bddfbce2 100644 --- a/repbuild/limine.cfg +++ b/repbuild/limine.cfg @@ -18,8 +18,8 @@ TERM_BACKDROP=008080 # Setting a default resolution for the framebuffer RESOLUTION=1024x768x24 - MODULE_PATH=boot:///background.bmp + MODULE_PATH=boot:///inf_loop.hb MODULE_CMDLINE="diskid=123456789" - MODULE_PATH=boot:///background.bmp + MODULE_PATH=boot:///inf_loop.hb MODULE_CMDLINE="" \ No newline at end of file diff --git a/repbuild/src/main.rs b/repbuild/src/main.rs index 70af57bf..b5da26bd 100644 --- a/repbuild/src/main.rs +++ b/repbuild/src/main.rs @@ -115,6 +115,10 @@ fn get_fs() -> Result, io::Error> { &mut File::open("repbuild/background.bmp")?, &mut fs.root_dir().create_file("background.bmp")?, )?; + io::copy( + &mut File::open("repbuild/inf_loop.hb")?, + &mut fs.root_dir().create_file("inf_loop.hb")?, + )?; drop(bootdir); Ok(fs)