ready queue now with RacyCell

This commit is contained in:
Per Lindgren 2021-03-10 17:39:44 +01:00
parent db1574bf6b
commit b6c07ac1e4
3 changed files with 5 additions and 4 deletions

View file

@ -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
@ -100,7 +100,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)*
}

View file

@ -215,7 +215,7 @@ pub fn codegen(
.write(input);
rtic::export::interrupt::free(|_| {
#app_path::#rq.enqueue_unchecked((#app_path::#t::#name, index));
#app_path::#rq.get_mut_unchecked().enqueue_unchecked((#app_path::#t::#name, index));
});
rtic::pend(#device::#enum_::#interrupt);

View file

@ -75,4 +75,5 @@ impl<T> RacyCell<T> {
}
// The type wrapped need to be Sync for RacyCell<T> to be Sync
unsafe impl<T> Sync for RacyCell<T> where T: Sync {}
//unsafe impl<T> Sync for RacyCell<T> where T: Sync {}
unsafe impl<T> Sync for RacyCell<T> {}