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;
|
||||
|
||||
use cortex_m::ctxt::Context;
|
||||
use cortex_m::interrupt::CriticalSection;
|
||||
use cortex_m::peripheral::Peripheral;
|
||||
use cortex_m::register::{basepri, basepri_max};
|
||||
|
||||
|
@ -76,6 +77,16 @@ where
|
|||
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>
|
||||
|
@ -171,6 +182,16 @@ impl<T, C> Resource<T, C> {
|
|||
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>
|
||||
|
|
Loading…
Reference in a new issue