aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen/module.rs
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src/codegen/module.rs')
-rw-r--r--macros/src/codegen/module.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/macros/src/codegen/module.rs b/macros/src/codegen/module.rs
index b4ad68aa..7bbfdf37 100644
--- a/macros/src/codegen/module.rs
+++ b/macros/src/codegen/module.rs
@@ -183,13 +183,14 @@ pub fn codegen(
#[doc(hidden)]
pub fn #internal_spawn_ident() -> Result<(), ()> {
unsafe {
- let r = rtic::export::interrupt::free(|_| (&mut *#rq.get_mut()).enqueue(()));
-
- if r.is_ok() {
+ // TODO: Fix this to be compare and swap
+ if #rq.load(core::sync::atomic::Ordering::Acquire) {
+ Err(())
+ } else {
+ #rq.store(true, core::sync::atomic::Ordering::Release);
rtic::pend(#device::#enum_::#interrupt);
+ Ok(())
}
-
- r
}
}));