pub(crate) mod arceos;
pub(crate) mod paging;
pub(crate) mod task;
pub(crate) mod traits;
pub(crate) fn default_host() -> &'static arceos::ArceOsHost {
arceos::arceos_host()
}
pub(crate) use paging::PagingHandler;
pub(crate) use traits::{HostCpu, HostMemory, HostPlatform, HostTime};
pub mod console {
pub fn set_input_irq_enabled(enabled: bool) {
super::arceos::set_console_input_irq_enabled(enabled);
}
pub fn read_bytes(bytes: &mut [u8]) -> usize {
super::arceos::read_console_bytes(bytes)
}
pub fn write_bytes(bytes: &[u8]) {
super::arceos::write_console_bytes(bytes);
}
}
pub mod cpu {
use super::HostCpu;
pub fn count() -> usize {
super::default_host().cpu_count()
}
pub fn current_id() -> usize {
super::default_host().this_cpu_id()
}
}
#[cfg(all(feature = "host-fs", target_arch = "x86_64"))]
pub mod x86 {
use crate::{AxVMRef, AxVmResult};
pub fn register_qemu_block_passthrough_irq(vm: &AxVMRef) -> AxVmResult {
super::arceos::register_qemu_block_passthrough_irq(vm)
}
pub fn prepare_qemu_block_passthrough_device() {
super::arceos::prepare_qemu_block_passthrough_device();
}
}