aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--macros/src/codegen/async_dispatchers.rs5
-rw-r--r--macros/src/codegen/module.rs10
2 files changed, 7 insertions, 8 deletions
diff --git a/macros/src/codegen/async_dispatchers.rs b/macros/src/codegen/async_dispatchers.rs
index aa854d7f..c8116654 100644
--- a/macros/src/codegen/async_dispatchers.rs
+++ b/macros/src/codegen/async_dispatchers.rs
@@ -101,7 +101,12 @@ pub fn codegen(app: &App, analysis: &Analysis) -> Vec<TokenStream2> {
const PRIORITY: u8 = #level;
rtic::export::run(PRIORITY, || {
+ // Have the acquire/release semantics outside the checks to no overdo it
+ core::sync::atomic::fence(core::sync::atomic::Ordering::Acquire);
+
#(#stmts)*
+
+ core::sync::atomic::fence(core::sync::atomic::Ordering::Release);
});
}
));
diff --git a/macros/src/codegen/module.rs b/macros/src/codegen/module.rs
index eb0cb65b..b4ad68aa 100644
--- a/macros/src/codegen/module.rs
+++ b/macros/src/codegen/module.rs
@@ -111,14 +111,8 @@ pub fn codegen(
let v = Vec::new();
let cfgs = match ctxt {
- Context::HardwareTask(t) => {
- &app.hardware_tasks[t].cfgs
- // ...
- }
- Context::SoftwareTask(t) => {
- &app.software_tasks[t].cfgs
- // ...
- }
+ Context::HardwareTask(t) => &app.hardware_tasks[t].cfgs,
+ Context::SoftwareTask(t) => &app.software_tasks[t].cfgs,
_ => &v,
};