aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen
diff options
context:
space:
mode:
authorGravatar Per Lindgren <per.lindgren@ltu.se> 2023-01-12 08:50:12 +0100
committerGravatar Henrik Tjäder <henrik@tjaders.com> 2023-03-01 00:33:30 +0100
commit5688a5d332cdaffaca64ade5b138a3676ac7cd32 (patch)
tree5520a22c541a712239bca5604694ec7baf8f63fa /macros/src/codegen
parentd6d58b0eb88242cf63724e1420bd29f8a4489916 (diff)
downloadrtic-5688a5d332cdaffaca64ade5b138a3676ac7cd32.tar.gz
rtic-5688a5d332cdaffaca64ade5b138a3676ac7cd32.tar.zst
rtic-5688a5d332cdaffaca64ade5b138a3676ac7cd32.zip
executor update for less unsafe and more clear
Diffstat (limited to 'macros/src/codegen')
-rw-r--r--macros/src/codegen/async_dispatchers.rs11
-rw-r--r--macros/src/codegen/module.rs8
2 files changed, 8 insertions, 11 deletions
diff --git a/macros/src/codegen/async_dispatchers.rs b/macros/src/codegen/async_dispatchers.rs
index 012bd61a..a12ad325 100644
--- a/macros/src/codegen/async_dispatchers.rs
+++ b/macros/src/codegen/async_dispatchers.rs
@@ -44,16 +44,15 @@ pub fn codegen(app: &App, analysis: &Analysis) -> TokenStream2 {
for name in channel.tasks.iter() {
let exec_name = util::internal_task_ident(name, "EXEC");
+ // TODO: Fix cfg
// let task = &app.software_tasks[name];
// let cfgs = &task.cfgs;
stmts.push(quote!(
- if #exec_name.check_and_clear_pending() {
- #exec_name.poll(|| {
- #exec_name.set_pending();
- #pend_interrupt
- });
- }
+ #exec_name.poll(|| {
+ #exec_name.set_pending();
+ #pend_interrupt
+ });
));
}
diff --git a/macros/src/codegen/module.rs b/macros/src/codegen/module.rs
index 666bd042..f4c188a4 100644
--- a/macros/src/codegen/module.rs
+++ b/macros/src/codegen/module.rs
@@ -156,11 +156,8 @@ pub fn codegen(ctxt: Context, app: &App, analysis: &Analysis) -> TokenStream2 {
#[allow(non_snake_case)]
#[doc(hidden)]
pub fn #internal_spawn_ident(#(#input_args,)*) -> Result<(), #input_ty> {
- if #exec_name.try_reserve() {
- // This unsafe is protected by `try_reserve`, see its documentation for details
- unsafe {
- #exec_name.spawn_unchecked(#name(#name::Context::new() #(,#input_untupled)*));
- }
+
+ if #exec_name.spawn(|| #name(unsafe { #name::Context::new() } #(,#input_untupled)*) ) {
#pend_interrupt
@@ -168,6 +165,7 @@ pub fn codegen(ctxt: Context, app: &App, analysis: &Analysis) -> TokenStream2 {
} else {
Err(#input_tupled)
}
+
}
));