add a get method to get a raw pointer to the resource data

This commit is contained in:
Jorge Aparicio 2017-04-02 20:42:38 -05:00
parent 0ef71d29a8
commit f3b73bcc12

View file

@ -119,6 +119,11 @@ where
unsafe { &mut *self.peripheral.get() } unsafe { &mut *self.peripheral.get() }
} }
/// Returns a mutable pointer to the wrapped value
pub fn get(&self) -> *mut P {
self.peripheral.get()
}
/// Locks the resource, preventing tasks with priority lower than `Ceiling` /// Locks the resource, preventing tasks with priority lower than `Ceiling`
/// from preempting the current task /// from preempting the current task
pub fn lock<R, F, Ctxt>(&'static self, _ctxt: &Ctxt, f: F) -> R pub fn lock<R, F, Ctxt>(&'static self, _ctxt: &Ctxt, f: F) -> R
@ -204,26 +209,6 @@ impl<T, C> Resource<T, C>
where where
C: Ceiling, C: Ceiling,
{ {
/// Locks the resource, preventing tasks with priority lower than `Ceiling`
/// from preempting the current task
pub fn lock<F, R, Ctxt>(&'static self, _ctxt: &Ctxt, f: F) -> R
where
F: FnOnce(&T, C) -> R,
Ctxt: Context,
{
unsafe { lock(f, self.data.get(), C::ceiling()) }
}
/// Mutably locks the resource, preventing tasks with priority lower than
/// `Ceiling` from preempting the current task
pub fn lock_mut<F, R, Ctxt>(&'static self, _ctxt: &mut Ctxt, f: F) -> R
where
F: FnOnce(&mut T, C) -> R,
Ctxt: Context,
{
unsafe { lock_mut(f, self.data.get(), C::ceiling()) }
}
/// Borrows the resource without locking /// Borrows the resource without locking
/// ///
/// NOTE The system ceiling must be higher than this resource ceiling /// NOTE The system ceiling must be higher than this resource ceiling
@ -243,6 +228,31 @@ where
{ {
unsafe { &mut *self.data.get() } unsafe { &mut *self.data.get() }
} }
/// Returns a mutable pointer to the wrapped value
pub fn get(&self) -> *mut T {
self.data.get()
}
/// Locks the resource, preventing tasks with priority lower than `Ceiling`
/// from preempting the current task
pub fn lock<F, R, Ctxt>(&'static self, _ctxt: &Ctxt, f: F) -> R
where
F: FnOnce(&T, C) -> R,
Ctxt: Context,
{
unsafe { lock(f, self.data.get(), C::ceiling()) }
}
/// Mutably locks the resource, preventing tasks with priority lower than
/// `Ceiling` from preempting the current task
pub fn lock_mut<F, R, Ctxt>(&'static self, _ctxt: &mut Ctxt, f: F) -> R
where
F: FnOnce(&mut T, C) -> R,
Ctxt: Context,
{
unsafe { lock_mut(f, self.data.get(), C::ceiling()) }
}
} }
impl<T> Resource<T, C0> { impl<T> Resource<T, C0> {