aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen/module.rs
diff options
context:
space:
mode:
authorGravatar Emil Fresk <emil.fresk@gmail.com> 2023-01-08 21:10:06 +0100
committerGravatar Henrik Tjäder <henrik@tjaders.com> 2023-03-01 00:33:28 +0100
commit6d252785e83218eeb5d080836281c90b86ca0e03 (patch)
tree7220026f04871b30fa01d3ddddd5d40c87f89f8b /macros/src/codegen/module.rs
parent35c97b61c17a30de675eb1c7f852a100b200a0c2 (diff)
downloadrtic-6d252785e83218eeb5d080836281c90b86ca0e03.tar.gz
rtic-6d252785e83218eeb5d080836281c90b86ca0e03.tar.zst
rtic-6d252785e83218eeb5d080836281c90b86ca0e03.zip
Support 0 prio tasks
Diffstat (limited to 'macros/src/codegen/module.rs')
-rw-r--r--macros/src/codegen/module.rs17
1 files changed, 9 insertions, 8 deletions
diff --git a/macros/src/codegen/module.rs b/macros/src/codegen/module.rs
index c6f7690f..70fbb5e6 100644
--- a/macros/src/codegen/module.rs
+++ b/macros/src/codegen/module.rs
@@ -135,13 +135,14 @@ pub fn codegen(ctxt: Context, app: &App, analysis: &Analysis) -> TokenStream2 {
// Store a copy of the task cfgs
task_cfgs = cfgs.clone();
- let device = &app.args.device;
- let enum_ = util::interrupt_ident();
- let interrupt = &analysis
- .interrupts
- .get(&priority)
- .expect("RTIC-ICE: interrupt identifier not found")
- .0;
+ let pend_interrupt = if priority > 0 {
+ let device = &app.args.device;
+ let enum_ = util::interrupt_ident();
+ let interrupt = &analysis.interrupts.get(&priority).expect("UREACHABLE").0;
+ quote!(rtic::pend(#device::#enum_::#interrupt);)
+ } else {
+ quote!()
+ };
let internal_spawn_ident = util::internal_task_ident(name, "spawn");
@@ -160,7 +161,7 @@ pub fn codegen(ctxt: Context, app: &App, analysis: &Analysis) -> TokenStream2 {
Err(())
} else {
#rq.store(true, core::sync::atomic::Ordering::Release);
- rtic::pend(#device::#enum_::#interrupt);
+ #pend_interrupt
Ok(())
}
}