aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-macros/src/lib.rs2
-rw-r--r--embassy/src/executor/mod.rs4
-rw-r--r--embassy/src/util/forever.rs6
3 files changed, 8 insertions, 4 deletions
diff --git a/embassy-macros/src/lib.rs b/embassy-macros/src/lib.rs
index 091e08cfa..c2e2d9e27 100644
--- a/embassy-macros/src/lib.rs
+++ b/embassy-macros/src/lib.rs
@@ -150,7 +150,7 @@ pub fn interrupt_take(item: TokenStream) -> TokenStream {
150 150
151 static TAKEN: ::core::sync::atomic::AtomicBool = ::core::sync::atomic::AtomicBool::new(false); 151 static TAKEN: ::core::sync::atomic::AtomicBool = ::core::sync::atomic::AtomicBool::new(false);
152 152
153 if TAKEN.compare_and_swap(false, true, ::core::sync::atomic::Ordering::AcqRel) { 153 if TAKEN.compare_exchange(false, true, ::core::sync::atomic::Ordering::AcqRel, ::core::sync::atomic::Ordering::Acquire).is_err() {
154 panic!("IRQ Already taken"); 154 panic!("IRQ Already taken");
155 } 155 }
156 156
diff --git a/embassy/src/executor/mod.rs b/embassy/src/executor/mod.rs
index 845d94c2c..facd71d1b 100644
--- a/embassy/src/executor/mod.rs
+++ b/embassy/src/executor/mod.rs
@@ -105,8 +105,8 @@ impl<F: Future + 'static> Task<F> {
105 if task 105 if task
106 .header 106 .header
107 .state 107 .state
108 .compare_and_swap(0, state, Ordering::AcqRel) 108 .compare_exchange(0, state, Ordering::AcqRel, Ordering::Acquire)
109 == 0 109 .is_ok()
110 { 110 {
111 // Initialize the task 111 // Initialize the task
112 task.header.poll_fn.write(Self::poll); 112 task.header.poll_fn.write(Self::poll);
diff --git a/embassy/src/util/forever.rs b/embassy/src/util/forever.rs
index 80dc0edac..b1bfd1669 100644
--- a/embassy/src/util/forever.rs
+++ b/embassy/src/util/forever.rs
@@ -19,7 +19,11 @@ impl<T> Forever<T> {
19 } 19 }
20 20
21 pub fn put(&'static self, val: T) -> &'static mut T { 21 pub fn put(&'static self, val: T) -> &'static mut T {
22 if self.used.compare_and_swap(false, true, Ordering::SeqCst) { 22 if self
23 .used
24 .compare_exchange(false, true, Ordering::AcqRel, Ordering::Acquire)
25 .is_ok()
26 {
23 panic!("Forever.put() called multiple times"); 27 panic!("Forever.put() called multiple times");
24 } 28 }
25 29