diff options
author | 2021-04-08 18:25:09 +0200 | |
---|---|---|
committer | 2021-04-08 19:58:20 +0200 | |
commit | 6aa0fb450f417ce899b43f4539eb226b391a0f2e (patch) | |
tree | 2202c8bb4aa2ba2451f025784a5bad99c4370b2e /macros/src/codegen/dispatchers.rs | |
parent | 43c5ad79c27fbdefa00e2373eba554ec11e1d9df (diff) | |
download | rtic-6aa0fb450f417ce899b43f4539eb226b391a0f2e.tar.gz rtic-6aa0fb450f417ce899b43f4539eb226b391a0f2e.tar.zst rtic-6aa0fb450f417ce899b43f4539eb226b391a0f2e.zip |
Goodbye static mut
Diffstat (limited to 'macros/src/codegen/dispatchers.rs')
-rw-r--r-- | macros/src/codegen/dispatchers.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/macros/src/codegen/dispatchers.rs b/macros/src/codegen/dispatchers.rs index dc33b1af..6aca901a 100644 --- a/macros/src/codegen/dispatchers.rs +++ b/macros/src/codegen/dispatchers.rs @@ -59,7 +59,7 @@ pub fn codegen(app: &App, analysis: &Analysis, _extra: &Extra) -> Vec<TokenStrea // ); items.push(quote!( #[doc(hidden)] - static mut #rq: #rq_ty = #rq_expr; + static #rq: rtic::RacyCell<#rq_ty> = rtic::RacyCell::new(#rq_expr); )); let arms = channel @@ -86,8 +86,12 @@ pub fn codegen(app: &App, analysis: &Analysis, _extra: &Extra) -> Vec<TokenStrea #(#cfgs)* #t::#name => { let #tupled = - #inputs.get_unchecked(usize::from(index)).as_ptr().read(); - #fq.split().0.enqueue_unchecked(index); + #inputs + .get_unchecked() + .get_unchecked(usize::from(index)) + .as_ptr() + .read(); + #fq.get_mut_unchecked().split().0.enqueue_unchecked(index); let priority = &rtic::export::Priority::new(PRIORITY); #app_path::#name( #locals_new @@ -100,7 +104,7 @@ pub fn codegen(app: &App, analysis: &Analysis, _extra: &Extra) -> Vec<TokenStrea .collect::<Vec<_>>(); stmts.push(quote!( - while let Some((task, index)) = #rq.split().1.dequeue() { + while let Some((task, index)) = #rq.get_mut_unchecked().split().1.dequeue() { match task { #(#arms)* } |