aboutsummaryrefslogtreecommitdiff
path: root/macros/src
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src')
-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)
}
+
}
));