mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-11-25 21:19:35 +01:00
add methods to borrow resources within interrupt::free
This commit is contained in:
parent
441a822780
commit
85c628c2af
1 changed files with 21 additions and 0 deletions
21
src/lib.rs
21
src/lib.rs
|
@ -11,6 +11,7 @@
|
||||||
extern crate cortex_m;
|
extern crate cortex_m;
|
||||||
|
|
||||||
use cortex_m::ctxt::Context;
|
use cortex_m::ctxt::Context;
|
||||||
|
use cortex_m::interrupt::CriticalSection;
|
||||||
use cortex_m::peripheral::Peripheral;
|
use cortex_m::peripheral::Peripheral;
|
||||||
use cortex_m::register::{basepri, basepri_max};
|
use cortex_m::register::{basepri, basepri_max};
|
||||||
|
|
||||||
|
@ -76,6 +77,16 @@ where
|
||||||
peripheral: p,
|
peripheral: p,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Borrows the resource for the duration of `interrupt::free`
|
||||||
|
pub fn cs_borrow<'cs>(&self, _ctxt: &'cs CriticalSection) -> &'cs P {
|
||||||
|
unsafe { &*self.peripheral.get() }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Mutably borrows the resource for the duration of `interrupt::free`
|
||||||
|
pub fn cs_borrow_mut<'cs>(&self, _ctxt: &'cs mut CriticalSection) -> &'cs mut P {
|
||||||
|
unsafe { &mut *self.peripheral.get() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<P, C> ResourceP<P, C>
|
impl<P, C> ResourceP<P, C>
|
||||||
|
@ -171,6 +182,16 @@ impl<T, C> Resource<T, C> {
|
||||||
data: UnsafeCell::new(data),
|
data: UnsafeCell::new(data),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Borrows the resource for the duration of `interrupt::free`
|
||||||
|
pub fn cs_borrow<'cs>(&self, _ctxt: &'cs CriticalSection) -> &'cs T {
|
||||||
|
unsafe { &*self.data.get() }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Mutably borrows the resource for the duration of `interrupt::free`
|
||||||
|
pub fn cs_borrow_mut<'cs>(&self, _ctxt: &'cs mut CriticalSection) -> &'cs mut T {
|
||||||
|
unsafe { &mut *self.data.get() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T, C> Resource<T, C>
|
impl<T, C> Resource<T, C>
|
||||||
|
|
Loading…
Reference in a new issue