sel4_panicking/
hook.rs
1use core::panic::PanicInfo;
8
9use sel4_immediate_sync_once_cell::ImmediateSyncOnceCell;
10use sel4_panicking_env::debug_println;
11
12pub type PanicHook = &'static (dyn Fn(&PanicInfo) + Send + Sync);
16
17static PANIC_HOOK: ImmediateSyncOnceCell<PanicHook> = ImmediateSyncOnceCell::new();
18
19pub fn set_hook(hook: PanicHook) {
21 PANIC_HOOK.set(hook).unwrap_or_else(|_| panic!())
22}
23
24pub(crate) fn get_hook() -> &'static PanicHook {
25 const DEFAULT_HOOK: PanicHook = &default_hook;
26 PANIC_HOOK.get().unwrap_or(&DEFAULT_HOOK)
27}
28
29fn default_hook(info: &PanicInfo) {
30 debug_println!("{}", info);
31}