use moa_uapi::{
error::ERR_PERM,
sysnr::{SYSNR_CLOCK_SET_OFFSET, SYSNR_DEBUG_PRINT, SYSNR_REBOOT},
system::RebootAction,
};
pub type Result<T> = core::result::Result<T, SystemError>;
define_syscall_error! {
pub enum SystemError {
Perm = ERR_PERM,
}
}
pub fn clock_set_offset(delta: i64) -> Result<()> {
let ret = unsafe { super::arch::syscall1(SYSNR_CLOCK_SET_OFFSET, delta as usize) };
if ret < 0 { Err(SystemError::from_raw(ret)) } else { Ok(()) }
}
pub fn reboot(action: RebootAction) -> Result<()> {
let ret = unsafe { super::arch::syscall1(SYSNR_REBOOT, action as usize) };
if ret < 0 { Err(SystemError::from_raw(ret)) } else { Ok(()) }
}
pub fn debug_print(buf: &[u8]) -> Result<()> {
let ret = unsafe { super::arch::syscall2(SYSNR_DEBUG_PRINT, buf.as_ptr() as usize, buf.len()) };
if ret < 0 { Err(SystemError::from_raw(ret)) } else { Ok(()) }
}