From f3b73bcc127a475a0cdb93309098b26523ef242d Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 2 Apr 2017 20:42:38 -0500 Subject: [PATCH] add a get method to get a raw pointer to the resource data --- src/lib.rs | 50 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 2e2ce0b2a9..e06eee813f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -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(&'static self, _ctxt: &Ctxt, f: F) -> R @@ -204,26 +209,6 @@ impl Resource where C: Ceiling, { - /// Locks the resource, preventing tasks with priority lower than `Ceiling` - /// from preempting the current task - pub fn lock(&'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(&'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(&'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(&'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 Resource {