#[cfg(feature = "multitask")]
mod multi;
use core::num::NonZero;
use arceos_api::task as api;
#[cfg(feature = "multitask")]
pub use multi::*;
pub fn yield_now() {
api::ax_yield_now();
}
pub fn exit(exit_code: i32) -> ! {
api::ax_exit(exit_code);
}
pub fn sleep(dur: core::time::Duration) {
sleep_until(arceos_api::time::ax_wall_time() + dur);
}
pub fn sleep_until(deadline: arceos_api::time::AxTimeValue) {
api::ax_sleep_until(deadline);
}
pub fn available_parallelism() -> crate::io::Result<NonZero<usize>> {
NonZero::new(arceos_api::modules::axconfig::plat::MAX_CPU_NUM)
.ok_or_else(|| panic!("No available CPUs found, cannot determine parallelism"))
}