1
0
Fork 0
forked from AbleOS/ableos

SCHED: Two programs are now running in ableOS

This commit is contained in:
able 2023-07-15 05:51:19 -05:00
parent d3e019ffe1
commit 6c4eee0c56
8 changed files with 43 additions and 12 deletions

4
Cargo.lock generated
View file

@ -859,12 +859,12 @@ dependencies = [
[[package]]
name = "hbbytecode"
version = "0.1.0"
source = "git+https://git.ablecorp.us/ableos/holey-bytes#75995422262a192f2c87713d239856e98c799f41"
source = "git+https://git.ablecorp.us/ableos/holey-bytes#6a444bd29ea6d474ec98edbc11b27030825b86e2"
[[package]]
name = "hbvm"
version = "0.1.0"
source = "git+https://git.ablecorp.us/ableos/holey-bytes#75995422262a192f2c87713d239856e98c799f41"
source = "git+https://git.ablecorp.us/ableos/holey-bytes#6a444bd29ea6d474ec98edbc11b27030825b86e2"
dependencies = [
"delegate",
"derive_more",

View file

@ -4,7 +4,6 @@
use {
crate::{
bootmodules::{build_cmd, BootModules},
capabilities,
device_tree::DeviceTree,
scheduler::Scheduler,
},
@ -38,10 +37,10 @@ pub fn kmain(cmdline: &str, boot_modules: BootModules) -> ! {
// TODO: schedule the filesystem driver from the initramfs
// TODO: schedule the init system from the initramfs
capabilities::example();
// capabilities::example();
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());

View file

@ -48,11 +48,29 @@ impl Scheduler<'_> {
}
let mut prog = self.data.pop_front().unwrap();
prog.run().unwrap();
let ret = prog.run();
match ret {
Ok(oki) => match oki {
hbvm::vm::VmRunOk::End => {
log::info!(
"Program ended. {} programs remaining.",
// Add one here because we pop a program
self.data.len() + 1
)
}
hbvm::vm::VmRunOk::Timer => {
log::info!("Timer exhausted. Scheduled program");
self.data.push_back(prog);
}
hbvm::vm::VmRunOk::Ecall => {
// panic!();
log::info!("{:?}", prog.registers);
self.data.push_back(prog);
}
},
// log::info!("VM registers {:?}", prog.registers);
log::info!("Scheduled program");
self.data.push_back(prog);
Err(_) => {}
}
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -21,5 +21,5 @@ TERM_BACKDROP=008080
MODULE_PATH=boot:///inf_loop.hb
MODULE_CMDLINE="diskid=123456789"
MODULE_PATH=boot:///inf_loop.hb
MODULE_PATH=boot:///ecall.hb
MODULE_CMDLINE=""

View file

@ -122,10 +122,15 @@ fn get_fs() -> Result<FileSystem<impl ReadWriteSeek>, io::Error> {
&mut fs.root_dir().create_file("background.bmp")?,
)?;
io::copy(
&mut File::open("repbuild/inf_loop.hb")?,
&mut File::open("repbuild/holeybytes/inf_loop.hb")?,
&mut fs.root_dir().create_file("inf_loop.hb")?,
)?;
io::copy(
&mut File::open("repbuild/holeybytes/ecall.hb")?,
&mut fs.root_dir().create_file("ecall.hb")?,
)?;
drop(bootdir);
Ok(fs)
}
@ -224,8 +229,17 @@ fn run(release: bool, target: Target) -> Result<(), Error> {
if target == Target::Aarch64 {
com.args([
"-M", "virt", "-m", //
"-bios",
"target/OVMF_CODE.fd",
"-M",
"virt",
"-device",
"ramfb",
"-m", //
"128M",
//
"-drive",
"file=target/disk.img,format=raw",
// "-serial", "stdio",
]);
}