blob: d5ff0bc63343c559ac759c2f4e5ea7633452e8eb [file] [log] [blame]
// TODO: Implement `libtock_runtime` and `libtock_unittest`, which are
// referenced in the comment on `Syscalls`.
/// `Syscalls` provides safe abstractions over Tock's system calls. It is
/// implemented for `libtock_runtime::TockSyscalls` and
/// `libtock_unittest::FakeSyscalls` (by way of `RawSyscalls`).
pub trait Syscalls {
/// Runs the next pending callback, if a callback is pending. Unlike
/// `yield_wait`, `yield_no_wait` returns immediately if no callback is
/// pending.
fn yield_no_wait() -> crate::YieldNoWaitReturn;
/// Puts the process to sleep until a callback becomes pending, invokes the
/// callback, then returns.
fn yield_wait();
// TODO: Add a subscribe interface.
// TODO: Add a command interface.
// TODO: Add a read-write allow interface.
// TODO: Add a read-only allow interface.
// TODO: Add memop() methods.
}