diff options
| author | Jorge Aparicio <jorge@japaric.io> | 2018-12-16 20:56:57 +0100 |
|---|---|---|
| committer | Jorge Aparicio <jorge@japaric.io> | 2018-12-16 20:57:04 +0100 |
| commit | 34e74f4bb36b0866be94c9bfdb41c11270b448a7 (patch) | |
| tree | aef6e61ab3e88fc222b50bb3d373679739a066df /examples | |
| parent | 06c1e2f9b47b5bc9de049e1e1edfed27d8dd2c58 (diff) | |
book: add an example of conditional compilation of resources and tasks
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/cfg.rs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/examples/cfg.rs b/examples/cfg.rs new file mode 100644 index 0000000..3f4ca90 --- /dev/null +++ b/examples/cfg.rs @@ -0,0 +1,54 @@ +//! examples/cfg.rs + +#![deny(unsafe_code)] +#![deny(warnings)] +#![no_main] +#![no_std] + +extern crate panic_semihosting; + +#[cfg(debug_assertions)] +use cortex_m_semihosting::hprintln; +use rtfm::app; + +#[app(device = lm3s6965)] +const APP: () = { + #[cfg(debug_assertions)] // <- `true` when using the `dev` profile + static mut COUNT: u32 = 0; + + #[init] + fn init() { + // .. + } + + #[task(priority = 3, resources = [COUNT], spawn = [log])] + fn foo() { + #[cfg(debug_assertions)] + { + *resources.COUNT += 1; + + spawn.log(*resources.COUNT).ok(); + } + + // this wouldn't compile in `release` mode + // *resources.COUNT += 1; + + // .. + } + + #[cfg(debug_assertions)] + #[task] + fn log(n: u32) { + hprintln!( + "foo has been called {} time{}", + n, + if n == 1 { "" } else { "s" } + ) + .ok(); + } + + extern "C" { + fn UART0(); + fn UART1(); + } +}; |
