use crate::trts;
use core::sync::atomic::{AtomicPtr, Ordering};
use core::mem;
use core::alloc::AllocErr;
static SGX_OOM_HANDLER: AtomicPtr<()> = AtomicPtr::new(default_oom_handler as *mut ());
#[allow(clippy::needless_pass_by_value)]
fn default_oom_handler( _err: AllocErr) -> ! {
trts::rsgx_abort()
}
pub fn rsgx_oom(err: AllocErr) -> ! {
let value = SGX_OOM_HANDLER.load(Ordering::SeqCst);
let handler: fn(AllocErr) -> ! = unsafe { mem::transmute(value) };
handler(err);
}
pub fn set_panic_handler(handler: fn(AllocErr) -> !) {
SGX_OOM_HANDLER.store(handler as *mut (), Ordering::SeqCst);
}