diff options
| author | Jorge Aparicio <japaricious@gmail.com> | 2017-04-02 20:42:38 -0500 |
|---|---|---|
| committer | Jorge Aparicio <japaricious@gmail.com> | 2017-04-02 20:42:38 -0500 |
| commit | f3b73bcc127a475a0cdb93309098b26523ef242d (patch) | |
| tree | bf192a6533b2490bf550d41f49c71f29a2b46f29 | |
| parent | 0ef71d29a857118e2f6742389793beb3f63266b2 (diff) | |
add a get method to get a raw pointer to the resource data
| -rw-r--r-- | src/lib.rs | 50 |
1 files changed, 30 insertions, 20 deletions
@@ -119,6 +119,11 @@ where 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` /// from preempting the current task pub fn lock<R, F, Ctxt>(&'static self, _ctxt: &Ctxt, f: F) -> R @@ -204,26 +209,6 @@ impl<T, C> Resource<T, C> where 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 /// /// NOTE The system ceiling must be higher than this resource ceiling @@ -243,6 +228,31 @@ where { 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> { |
