diff options
author | 2019-06-13 23:56:59 +0200 | |
---|---|---|
committer | 2019-06-13 23:56:59 +0200 | |
commit | 81275bfa4f41e2066770087f3a33cad4227eab41 (patch) | |
tree | c779a68e7cecf4c2613c7593376f980cea5dbc05 /examples/t-late-not-send.rs | |
parent | fafeeb27270ef24fc3852711c6032f65aa7dbcc0 (diff) | |
download | rtic-81275bfa4f41e2066770087f3a33cad4227eab41.tar.gz rtic-81275bfa4f41e2066770087f3a33cad4227eab41.tar.zst rtic-81275bfa4f41e2066770087f3a33cad4227eab41.zip |
rtfm-syntax refactor + heterogeneous multi-core support
Diffstat (limited to 'examples/t-late-not-send.rs')
-rw-r--r-- | examples/t-late-not-send.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/examples/t-late-not-send.rs b/examples/t-late-not-send.rs new file mode 100644 index 00000000..55a053df --- /dev/null +++ b/examples/t-late-not-send.rs @@ -0,0 +1,36 @@ +//! [compile-pass] late resources don't need to be `Send` if they are owned by `idle` + +#![no_main] +#![no_std] + +use core::marker::PhantomData; + +use panic_halt as _; + +pub struct NotSend { + _0: PhantomData<*const ()>, +} + +#[rtfm::app(device = lm3s6965)] +const APP: () = { + extern "C" { + static mut X: NotSend; + } + + static mut Y: Option<NotSend> = None; + + #[init(resources = [Y])] + fn init(c: init::Context) -> init::LateResources { + // equivalent to late resource initialization + *c.resources.Y = Some(NotSend { _0: PhantomData }); + + init::LateResources { + X: NotSend { _0: PhantomData }, + } + } + + #[idle(resources = [X, Y])] + fn idle(_: idle::Context) -> ! { + loop {} + } +}; |