pub fn recv<T>() -> T {
    let uc = UnsafeCell::<MaybeUninit<T>>::new(MaybeUninit::uninit());
    
    critical_section::with(|cs| /* magic */);
    
    compiler_fence(Ordering::Acquire);
    let m = uc.into_inner(); 
    unsafe { m.assume_init() }
}