use moa_uapi::{
sysnr::{SYSNR_EXIT, SYSNR_SLEEP, SYSNR_TASK_SELF, SYSNR_YIELD},
task::{ExitFlags, TaskId},
types::Timeout,
};
pub fn yield_now() {
unsafe { super::arch::syscall0(SYSNR_YIELD) };
}
pub fn sleep(duration: Timeout) {
unsafe { super::arch::syscall1(SYSNR_SLEEP, duration.raw() as usize) };
}
pub fn exit(code: i32, flags: ExitFlags) -> ! {
unsafe {
super::arch::syscall2(SYSNR_EXIT, code as usize, flags.bits() as usize);
}
unreachable!()
}
pub fn task_self() -> TaskId {
let ret = unsafe { super::arch::syscall0(SYSNR_TASK_SELF) };
TaskId::from_raw(ret as usize)
}