| /// yield for a callback fired by the kernel | |
| /// # Safety | |
| /// Yielding inside a callback conflicts with Rust's safety guarantees. For example, | |
| /// a FnMut closure could be triggered multiple times making a &mut a shared reference. | |
| pub unsafe fn yieldk() {} | |
| /// Subscribe a callback to the kernel | |
| /// # Safety | |
| /// Unsafe as passed callback is dereferenced and called. | |
| pub unsafe fn subscribe( | |
| _: usize, | |
| _: usize, | |
| _: *const unsafe extern "C" fn(usize, usize, usize, usize), | |
| _: usize, | |
| ) -> isize { | |
| unimplemented() | |
| } | |
| /// Send a command to the tock kernel | |
| /// # Safety | |
| /// This function usually involves assembly calls which are unsafe. | |
| pub unsafe fn command(_: usize, _: usize, _: usize, _: usize) -> isize { | |
| unimplemented() | |
| } | |
| /// Call a command only taking into accoun the first argument | |
| /// # Safety | |
| /// Unsafe as ignored arguments cause leaking of registers to the kernel | |
| pub unsafe fn command1(_: usize, _: usize, _: usize) -> isize { | |
| unimplemented() | |
| } | |
| /// Share a memory region with the kernel | |
| /// # Safety | |
| /// Unsafe as the pointer to the shared buffer is potentially dereferenced by the kernel. | |
| pub unsafe fn allow(_: usize, _: usize, _: *mut u8, _: usize) -> isize { | |
| unimplemented() | |
| } | |
| /// Generic operations on the app's memory as requesting more memory | |
| /// # Safety | |
| /// Allows the kernel to do generic operations on the app's memory which can cause memory corruption. | |
| pub unsafe fn memop(_: u32, _: usize) -> isize { | |
| unimplemented() | |
| } | |
| fn unimplemented() -> ! { | |
| unimplemented!("Unimplemented for tests"); | |
| } |