aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorJorge Aparicio <japaricious@gmail.com>2017-04-02 20:42:38 -0500
committerJorge Aparicio <japaricious@gmail.com>2017-04-02 20:42:38 -0500
commitf3b73bcc127a475a0cdb93309098b26523ef242d (patch)
treebf192a6533b2490bf550d41f49c71f29a2b46f29 /src/lib.rs
parent0ef71d29a857118e2f6742389793beb3f63266b2 (diff)
add a get method to get a raw pointer to the resource data
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs50
1 files changed, 30 insertions, 20 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 2e2ce0b..e06eee8 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<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> {