aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen/spawn.rs
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src/codegen/spawn.rs')
-rw-r--r--macros/src/codegen/spawn.rs24
1 files changed, 7 insertions, 17 deletions
diff --git a/macros/src/codegen/spawn.rs b/macros/src/codegen/spawn.rs
index 287c92a1..4b824f56 100644
--- a/macros/src/codegen/spawn.rs
+++ b/macros/src/codegen/spawn.rs
@@ -1,4 +1,4 @@
-use std::collections::{BTreeMap, HashSet};
+use std::collections::HashSet;
use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
@@ -14,16 +14,12 @@ use crate::{
pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream2> {
let mut items = vec![];
- let mut seen = BTreeMap::<u8, HashSet<_>>::new();
+ let mut seen = HashSet::<_>::new();
for (spawner, spawnees) in app.spawn_callers() {
- let sender = spawner.core(app);
- let cfg_sender = util::cfg_core(sender, app.args.cores);
- let seen = seen.entry(sender).or_default();
let mut methods = vec![];
for name in spawnees {
let spawnee = &app.software_tasks[name];
- let receiver = spawnee.args.core;
let cfgs = &spawnee.cfgs;
let (args, _, untupled, ty) = util::regroup_inputs(&spawnee.inputs);
let args = &args;
@@ -34,7 +30,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
let body = spawn_body::codegen(spawner, &name, app, analysis, extra);
- let let_instant = if app.uses_schedule(receiver) {
+ let let_instant = if app.uses_schedule() {
let m = extra.monotonic();
Some(quote!(let instant = unsafe { <#m as rtic::Monotonic>::zero() };))
@@ -42,23 +38,21 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
None
};
- let section = util::link_section("text", sender);
methods.push(quote!(
#(#cfgs)*
- #section
fn #name(&self #(,#args)*) -> Result<(), #ty> {
#let_instant
#body
}
));
} else {
- let spawn = util::spawn_ident(name, sender);
+ let spawn = util::spawn_ident(name);
if !seen.contains(name) {
- // generate a `spawn_${name}_S${sender}` function
+ // Generate a `spawn_${name}_S${sender}` function
seen.insert(name);
- let instant = if app.uses_schedule(receiver) {
+ let instant = if app.uses_schedule() {
let m = extra.monotonic();
Some(quote!(, instant: <#m as rtic::Monotonic>::Instant))
@@ -68,11 +62,8 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
let body = spawn_body::codegen(spawner, &name, app, analysis, extra);
- let section = util::link_section("text", sender);
items.push(quote!(
- #cfg_sender
#(#cfgs)*
- #section
unsafe fn #spawn(
priority: &rtic::export::Priority
#instant
@@ -83,7 +74,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
));
}
- let (let_instant, instant) = if app.uses_schedule(receiver) {
+ let (let_instant, instant) = if app.uses_schedule() {
let m = extra.monotonic();
(
@@ -120,7 +111,6 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
let spawner = spawner.ident(app);
debug_assert!(!methods.is_empty());
items.push(quote!(
- #cfg_sender
impl<#lt> #spawner::Spawn<#lt> {
#(#methods)*
}