aboutsummaryrefslogtreecommitdiff
path: root/examples/extern_spawn.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/extern_spawn.rs')
-rw-r--r--examples/extern_spawn.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/extern_spawn.rs b/examples/extern_spawn.rs
new file mode 100644
index 00000000..1be3d512
--- /dev/null
+++ b/examples/extern_spawn.rs
@@ -0,0 +1,35 @@
+//! examples/extern_spawn.rs
+
+#![deny(unsafe_code)]
+#![deny(warnings)]
+#![no_main]
+#![no_std]
+
+use cortex_m_semihosting::{debug, hprintln};
+use panic_semihosting as _;
+
+// Free function implementing the spawnable task `foo`.
+fn foo(_c: app::foo::Context, x: i32, y: u32) {
+ hprintln!("foo {}, {}", x, y).unwrap();
+ if x == 2 {
+ debug::exit(debug::EXIT_SUCCESS);
+ }
+ app::foo::spawn(2, 3).unwrap();
+}
+
+#[rtic::app(device = lm3s6965, dispatchers = [SSI0])]
+mod app {
+ use crate::foo;
+
+ #[init]
+ fn init(_c: init::Context) -> init::LateResources {
+ foo::spawn(1, 2).unwrap();
+
+ init::LateResources {}
+ }
+
+ extern "Rust" {
+ #[task()]
+ fn foo(_c: foo::Context, _x: i32, _y: u32);
+ }
+}