aboutsummaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorEmil Fresk <emil.fresk@gmail.com>2023-01-04 20:29:16 +0100
committerHenrik Tjäder <henrik@tjaders.com>2023-03-01 00:31:05 +0100
commit5c3cedf69ad07cb8522a0b040bdbf1f9ca4cf37b (patch)
tree0d6346af0e61f32254648fca975aed1e8ebf8a9a /macros
parentd27d0fe33fdb54e6a11a1e9d09a7916f19e5c9ec (diff)
Fix fences
Diffstat (limited to 'macros')
-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 aa854d7..c811665 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 eb0cb65..b4ad68a 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,
};