SCHED: Two programs are now running in ableOS
This commit is contained in:
parent
d3e019ffe1
commit
6c4eee0c56
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -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",
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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(_) => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
BIN
repbuild/holeybytes/ecall.hb
Normal file
BIN
repbuild/holeybytes/ecall.hb
Normal file
Binary file not shown.
BIN
repbuild/holeybytes/inf_loop.hb
Normal file
BIN
repbuild/holeybytes/inf_loop.hb
Normal file
Binary file not shown.
Binary file not shown.
|
@ -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=""
|
|
@ -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",
|
||||
]);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue