ableos/kernel/src/holeybytes/ecalls.rs

42 lines
979 B
Rust

use {
crate::{
ipc::buffer::{BufferTypes, IpcBuffer},
kmain::IPC_BUFFERS,
},
hbvm::value::Value,
};
pub fn make_ipc_buffer(registers: [Value; 256]) {
let r255 = registers[255];
let r254 = registers[254];
let r253 = registers[253];
let bounded = match unsafe { r254.u64 } {
0 => false,
1 => true,
_ => {
panic!("Bad");
}
};
let length = unsafe { r254.u64 };
let mut buffs = IPC_BUFFERS.lock();
match bounded {
false => {
let abc = IpcBuffer::new(false, 0);
buffs.push(abc);
}
true => {
let abc = IpcBuffer::new(true, length);
buffs.push(abc);
}
};
}
pub fn delete_ipc_buffer(registers: [Value; 256]) {
log::warn!("Unstable ecall");
//TODO: fully define out how to layout the ecall for deleting buffers
//and figure out what happens if there are still messages in the queue
}