add Mutex.borrow_mut method
@@ -19,6 +19,11 @@ impl<T> Mutex<T> {
pub fn borrow<'cs>(&self, _ctxt: &'cs CriticalSection) -> &'cs T {
unsafe { &*self.inner.get() }
}
+
+ /// Mutably borrows the data for the duration of the critical section
+ pub fn borrow_mut<'cs>(&self, _ctxt: &'cs mut CriticalSection) -> &'cs mut T {
+ unsafe { &mut *self.inner.get() }
+ }
}
/// Interrupt number
@@ -75,14 +80,14 @@ pub struct CriticalSection {
/// This as also known as a "critical section".
pub fn free<F, R>(f: F) -> R
where
- F: FnOnce(&CriticalSection) -> R,
+ F: FnOnce(CriticalSection) -> R,
{
let primask = ::register::primask::read();
// disable interrupts
disable();
- let r = f(&CriticalSection { _0: () });
+ let r = f(CriticalSection { _0: () });
// If the interrupts were active before our `disable` call, then re-enable
// them. Otherwise, keep them disabled
