aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen/module.rs
diff options
context:
space:
mode:
Diffstat (limited to 'macros/src/codegen/module.rs')
-rw-r--r--macros/src/codegen/module.rs42
1 files changed, 21 insertions, 21 deletions
diff --git a/macros/src/codegen/module.rs b/macros/src/codegen/module.rs
index 5e0827ca..c59a814c 100644
--- a/macros/src/codegen/module.rs
+++ b/macros/src/codegen/module.rs
@@ -232,15 +232,15 @@ pub fn codegen(
let input = #tupled;
unsafe {
- if let Some(index) = rtic::export::interrupt::free(|_| #fq.get_mut_unchecked().dequeue()) {
- #inputs
- .get_mut_unchecked()
+ if let Some(index) = rtic::export::interrupt::free(|_| (&mut *#fq.get_mut()).dequeue()) {
+ (&mut *#inputs
+ .get_mut())
.get_unchecked_mut(usize::from(index))
.as_mut_ptr()
.write(input);
rtic::export::interrupt::free(|_| {
- #rq.get_mut_unchecked().enqueue_unchecked((#t::#name, index));
+ (&mut *#rq.get_mut()).enqueue_unchecked((#t::#name, index));
});
rtic::pend(#device::#enum_::#interrupt);
@@ -330,16 +330,16 @@ pub fn codegen(
impl #internal_spawn_handle_ident {
pub fn cancel(self) -> Result<#ty, ()> {
rtic::export::interrupt::free(|_| unsafe {
- let tq = #tq.get_mut_unchecked();
+ let tq = &mut *#tq.get_mut();
if let Some((_task, index)) = tq.cancel_marker(self.marker) {
// Get the message
- let msg = #inputs
- .get_unchecked()
+ let msg = (&*#inputs
+ .get())
.get_unchecked(usize::from(index))
.as_ptr()
.read();
// Return the index to the free queue
- #fq.get_mut_unchecked().split().0.enqueue_unchecked(index);
+ (&mut *#fq.get_mut()).split().0.enqueue_unchecked(index);
Ok(msg)
} else {
@@ -359,10 +359,10 @@ pub fn codegen(
pub fn reschedule_at(self, instant: rtic::time::Instant<#mono_type>) -> Result<Self, ()>
{
rtic::export::interrupt::free(|_| unsafe {
- let marker = *#tq_marker.get_mut_unchecked();
- *#tq_marker.get_mut_unchecked() = #tq_marker.get_mut_unchecked().wrapping_add(1);
+ let marker = #tq_marker.get().read();
+ #tq_marker.get_mut().write(marker.wrapping_add(1));
- let tq = #tq.get_mut_unchecked();
+ let tq = (&mut *#tq.get_mut());
tq.update_marker(self.marker, marker, instant, || #pend).map(|_| #name::#m::SpawnHandle { marker })
})
@@ -383,7 +383,7 @@ pub fn codegen(
D::T: Into<<#mono_type as rtic::time::Clock>::T>,
{
- let instant = if rtic::export::interrupt::free(|_| unsafe { #m_ident.get_mut_unchecked().is_none() }) {
+ let instant = if rtic::export::interrupt::free(|_| unsafe { (&*#m_ident.get()).is_none() }) {
rtic::time::Instant::new(0)
} else {
monotonics::#m::now()
@@ -401,21 +401,21 @@ pub fn codegen(
) -> Result<#name::#m::SpawnHandle, #ty> {
unsafe {
let input = #tupled;
- if let Some(index) = rtic::export::interrupt::free(|_| #fq.get_mut_unchecked().dequeue()) {
- #inputs
- .get_mut_unchecked()
+ if let Some(index) = rtic::export::interrupt::free(|_| (&mut *#fq.get_mut()).dequeue()) {
+ (&mut *#inputs
+ .get_mut())
.get_unchecked_mut(usize::from(index))
.as_mut_ptr()
.write(input);
- #instants
- .get_mut_unchecked()
+ (&mut *#instants
+ .get_mut())
.get_unchecked_mut(usize::from(index))
.as_mut_ptr()
.write(instant);
rtic::export::interrupt::free(|_| {
- let marker = *#tq_marker.get_mut_unchecked();
+ let marker = #tq_marker.get().read();
let nr = rtic::export::NotReady {
instant,
index,
@@ -423,15 +423,15 @@ pub fn codegen(
marker,
};
- *#tq_marker.get_mut_unchecked() = #tq_marker.get_mut_unchecked().wrapping_add(1);
+ #tq_marker.get_mut().write(#tq_marker.get().read().wrapping_add(1));
- let tq = #tq.get_mut_unchecked();
+ let tq = &mut *#tq.get_mut();
tq.enqueue_unchecked(
nr,
|| #enable_interrupt,
|| #pend,
- #m_ident.get_mut_unchecked().as_mut());
+ (&mut *#m_ident.get_mut()).as_mut());
Ok(#name::#m::SpawnHandle { marker })
})