aboutsummaryrefslogtreecommitdiff
path: root/embassy-executor-macros/src/macros
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-executor-macros/src/macros')
-rw-r--r--embassy-executor-macros/src/macros/task.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/embassy-executor-macros/src/macros/task.rs b/embassy-executor-macros/src/macros/task.rs
index 91bf8e940..1c5e3571d 100644
--- a/embassy-executor-macros/src/macros/task.rs
+++ b/embassy-executor-macros/src/macros/task.rs
@@ -131,6 +131,12 @@ pub fn run(args: TokenStream, item: TokenStream) -> TokenStream {
131 )); 131 ));
132 } 132 }
133 133
134 let spawn = if returns_impl_trait {
135 quote!(spawn)
136 } else {
137 quote!(_spawn_async_fn)
138 };
139
134 #[cfg(feature = "nightly")] 140 #[cfg(feature = "nightly")]
135 let mut task_outer_body = quote! { 141 let mut task_outer_body = quote! {
136 trait _EmbassyInternalTaskTrait { 142 trait _EmbassyInternalTaskTrait {
@@ -147,7 +153,7 @@ pub fn run(args: TokenStream, item: TokenStream) -> TokenStream {
147 153
148 const POOL_SIZE: usize = #pool_size; 154 const POOL_SIZE: usize = #pool_size;
149 static POOL: #embassy_executor::raw::TaskPool<<() as _EmbassyInternalTaskTrait>::Fut, POOL_SIZE> = #embassy_executor::raw::TaskPool::new(); 155 static POOL: #embassy_executor::raw::TaskPool<<() as _EmbassyInternalTaskTrait>::Fut, POOL_SIZE> = #embassy_executor::raw::TaskPool::new();
150 unsafe { POOL._spawn_async_fn(move || <() as _EmbassyInternalTaskTrait>::construct(#(#full_args,)*)) } 156 unsafe { POOL.#spawn(move || <() as _EmbassyInternalTaskTrait>::construct(#(#full_args,)*)) }
151 }; 157 };
152 #[cfg(not(feature = "nightly"))] 158 #[cfg(not(feature = "nightly"))]
153 let mut task_outer_body = quote! { 159 let mut task_outer_body = quote! {
@@ -164,7 +170,7 @@ pub fn run(args: TokenStream, item: TokenStream) -> TokenStream {
164 {#embassy_executor::_export::task_pool_size::<_, _, _, POOL_SIZE>(#task_inner_ident)}, 170 {#embassy_executor::_export::task_pool_size::<_, _, _, POOL_SIZE>(#task_inner_ident)},
165 {#embassy_executor::_export::task_pool_align::<_, _, _, POOL_SIZE>(#task_inner_ident)}, 171 {#embassy_executor::_export::task_pool_align::<_, _, _, POOL_SIZE>(#task_inner_ident)},
166 > = unsafe { ::core::mem::transmute(#embassy_executor::_export::task_pool_new::<_, _, _, POOL_SIZE>(#task_inner_ident)) }; 172 > = unsafe { ::core::mem::transmute(#embassy_executor::_export::task_pool_new::<_, _, _, POOL_SIZE>(#task_inner_ident)) };
167 unsafe { __task_pool_get(#task_inner_ident)._spawn_async_fn(move || #task_inner_ident(#(#full_args,)*)) } 173 unsafe { __task_pool_get(#task_inner_ident).#spawn(move || #task_inner_ident(#(#full_args,)*)) }
168 }; 174 };
169 175
170 let task_outer_attrs = task_inner.attrs.clone(); 176 let task_outer_attrs = task_inner.attrs.clone();