From 5a19367eef2d49dbe027cf00decfa5e8fe1ae30a Mon Sep 17 00:00:00 2001
From: Per Lindgren <per.lindgren@ltu.se>
Date: Wed, 21 Oct 2020 18:18:08 +0200
Subject: [PATCH] async POC, SeqCst is sufficient

---
 qemu/examples/spawn3.rs | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/qemu/examples/spawn3.rs b/qemu/examples/spawn3.rs
index 54ea4da..48c65ec 100644
--- a/qemu/examples/spawn3.rs
+++ b/qemu/examples/spawn3.rs
@@ -14,8 +14,8 @@ use core::pin::Pin;
 // use core::ptr;
 // use core::ptr::NonNull;
 // use core::sync::atomic::{AtomicPtr, AtomicU32, Ordering};
+use core::sync::atomic::{compiler_fence, Ordering};
 use core::task::{Context, Poll, RawWaker, RawWakerVTable, Waker};
-
 use cortex_m_semihosting::{debug, hprintln};
 use panic_semihosting as _;
 
@@ -86,7 +86,18 @@ mod app {
 
     #[task(resources = [counter], priority = 2)]
     fn rt_task(cx: rt_task::Context) {
-        hprintln!("counter {}", cx.resources.counter).ok();
+        //hprintln!("counter {}", cx.resources.counter).ok();
+        // compiler_fence(Ordering::SeqCst);
+        *cx.resources.counter += 1;
+        compiler_fence(Ordering::SeqCst);
+        *cx.resources.counter += 1;
+    }
+
+    #[task(binds = UART1, resources = [counter], priority = 2)]
+    fn uart1(cx: uart1::Context) {
+        *cx.resources.counter += 1;
+        // compiler_fence(Ordering::SeqCst);
+        *cx.resources.counter += 1;
     }
 
     // RTIC requires that unused interrupts are declared in an extern block when
-- 
GitLab