use safa_abi::errors::ErrorStatus;
use crate::syscalls::types::{RequiredPtrMut, Ri};
use super::{define_syscall, err_from_u16, SyscallNum};
define_syscall! {
SyscallNum::SysRDestroy => {
sysr_destroy(ri: Ri)
},
SyscallNum::SysRDup => {
sysr_dup(ri: Ri, dest_ri: RequiredPtrMut<Ri>)
}
}
#[inline]
pub fn destroy_resource(ri: Ri) -> Result<(), ErrorStatus> {
err_from_u16!(sysr_destroy(ri))
}
#[inline]
pub fn dup(ri: Ri) -> Result<Ri, ErrorStatus> {
let mut dest_ri = 0xAAAAAAAAAAAAAAAAusize;
let ptr = unsafe { RequiredPtrMut::new_unchecked(&mut dest_ri) };
err_from_u16!(sysr_dup(ri, ptr), dest_ri)
}