mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-11-23 20:22:51 +01:00
free queue now with RacyCell
This commit is contained in:
parent
b6c07ac1e4
commit
0dc2d52918
4 changed files with 4 additions and 4 deletions
|
@ -87,7 +87,7 @@ pub fn codegen(app: &App, analysis: &Analysis, _extra: &Extra) -> Vec<TokenStrea
|
||||||
#t::#name => {
|
#t::#name => {
|
||||||
let #tupled =
|
let #tupled =
|
||||||
#inputs.get_unchecked(usize::from(index)).as_ptr().read();
|
#inputs.get_unchecked(usize::from(index)).as_ptr().read();
|
||||||
#fq.split().0.enqueue_unchecked(index);
|
#fq.get_mut_unchecked().split().0.enqueue_unchecked(index);
|
||||||
let priority = &rtic::export::Priority::new(PRIORITY);
|
let priority = &rtic::export::Priority::new(PRIORITY);
|
||||||
#app_path::#name(
|
#app_path::#name(
|
||||||
#locals_new
|
#locals_new
|
||||||
|
|
|
@ -208,7 +208,7 @@ pub fn codegen(
|
||||||
let input = #tupled;
|
let input = #tupled;
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
if let Some(index) = rtic::export::interrupt::free(|_| #app_path::#fq.dequeue()) {
|
if let Some(index) = rtic::export::interrupt::free(|_| #app_path::#fq.get_mut_unchecked().dequeue()) {
|
||||||
#app_path::#inputs
|
#app_path::#inputs
|
||||||
.get_unchecked_mut(usize::from(index))
|
.get_unchecked_mut(usize::from(index))
|
||||||
.as_mut_ptr()
|
.as_mut_ptr()
|
||||||
|
|
|
@ -20,7 +20,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
|
||||||
let fq_ident = util::mark_internal_ident(&fq_ident);
|
let fq_ident = util::mark_internal_ident(&fq_ident);
|
||||||
|
|
||||||
stmts.push(quote!(
|
stmts.push(quote!(
|
||||||
(0..#cap).for_each(|i| #fq_ident.enqueue_unchecked(i));
|
(0..#cap).for_each(|i| #fq_ident.get_mut_unchecked().enqueue_unchecked(i));
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ pub fn codegen(
|
||||||
// /// Queue version of a free-list that keeps track of empty slots in
|
// /// Queue version of a free-list that keeps track of empty slots in
|
||||||
// /// the following buffers
|
// /// the following buffers
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
static mut #fq: #fq_ty = #fq_expr;
|
static #fq: rtic::RacyCell<#fq_ty> = rtic::RacyCell::new(#fq_expr);
|
||||||
));
|
));
|
||||||
|
|
||||||
let elems = &(0..cap)
|
let elems = &(0..cap)
|
||||||
|
|
Loading…
Reference in a new issue