From 2e028abc1c9daaa75b14b74f00aa2780ccf88edc Mon Sep 17 00:00:00 2001 From: Per Lindgren Date: Fri, 12 Mar 2021 01:31:04 +0100 Subject: [PATCH] task local minimal examples --- examples/minimal-task-local-early.rs | 35 ++++++++++++++++++++++++++++ examples/minimal-task-local-late.rs | 34 +++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 examples/minimal-task-local-early.rs create mode 100644 examples/minimal-task-local-late.rs diff --git a/examples/minimal-task-local-early.rs b/examples/minimal-task-local-early.rs new file mode 100644 index 0000000000..e77a8a8b57 --- /dev/null +++ b/examples/minimal-task-local-early.rs @@ -0,0 +1,35 @@ +//! examples/task-local-minimal-early.rs +#![deny(unsafe_code)] +#![deny(warnings)] +#![no_main] +#![no_std] + +use panic_semihosting as _; + +#[rtic::app(device = lm3s6965)] +mod app { + use cortex_m_semihosting::{debug, hprintln}; + + #[resources] + struct Resources { + // A local (move), late resource + #[task_local] + #[init(42)] + early: u32, + } + + #[init] + fn init(_: init::Context) -> (init::LateResources, init::Monotonics) { + (init::LateResources {}, init::Monotonics()) + } + + // task_local is task_local + #[idle(resources = [early])] + fn idle(cx: idle::Context) -> ! { + hprintln!("IDLE:l = {}", cx.resources.early).unwrap(); + debug::exit(debug::EXIT_SUCCESS); + loop { + cortex_m::asm::nop(); + } + } +} diff --git a/examples/minimal-task-local-late.rs b/examples/minimal-task-local-late.rs new file mode 100644 index 0000000000..9815516cf7 --- /dev/null +++ b/examples/minimal-task-local-late.rs @@ -0,0 +1,34 @@ +//! examples/minimal-task-local-late.rs +#![deny(unsafe_code)] +#![deny(warnings)] +#![no_main] +#![no_std] + +use panic_semihosting as _; + +#[rtic::app(device = lm3s6965)] +mod app { + use cortex_m_semihosting::{debug, hprintln}; + + #[resources] + struct Resources { + // A local (move), late resource + #[task_local] + late: u32, + } + + #[init] + fn init(_: init::Context) -> (init::LateResources, init::Monotonics) { + (init::LateResources { late: 42 }, init::Monotonics()) + } + + // task_local is task_local + #[idle(resources = [late])] + fn idle(cx: idle::Context) -> ! { + hprintln!("IDLE:late = {}", cx.resources.late).unwrap(); + debug::exit(debug::EXIT_SUCCESS); + loop { + cortex_m::asm::nop(); + } + } +}