From 1c82f1b1190cb40a3502d5b74a8c98775a788850 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Fri, 21 Apr 2017 15:41:03 -0500 Subject: raise_to -> Ceiling.raise --- src/lib.rs | 47 ++++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 70de1a5..910635f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -522,31 +522,6 @@ where r } -/// Raises the system ceiling to match `resource`'s ceiling -#[cfg(not(thumbv6m))] -pub fn raise_to( - _current_ceiling: &C, - _resource: &RES, - f: F, -) -> R -where - F: FnOnce(&C) -> R, - RES: ResourceLike, - HIGHER: Cmp, - HIGHER: Cmp, - HIGHER: Unsigned, -{ - unsafe { - let old_basepri = basepri::read(); - basepri_max::write(logical2hw(HIGHER::to_u8())); - barrier!(); - let ret = f(&C { _marker: PhantomData }); - barrier!(); - basepri::write(old_basepri); - ret - } -} - /// Requests the execution of a `task` pub fn request(_task: fn(T, P)) where @@ -586,6 +561,28 @@ pub struct C { _marker: PhantomData, } +impl C { + /// Raises the ceiling to match `resource`'s ceiling + pub fn raise(&self, _resource: &'static RES, f: F) -> R + where + RES: ResourceLike, + HIGHER: Cmp, + HIGHER: Cmp, + HIGHER: Unsigned, + F: FnOnce(&C) -> R, + { + unsafe { + let old_basepri = basepri::read(); + basepri_max::write(logical2hw(HIGHER::to_u8())); + barrier!(); + let ret = f(&C { _marker: PhantomData }); + barrier!(); + basepri::write(old_basepri); + ret + } + } +} + /// A type-level priority pub struct P { _marker: PhantomData, -- cgit v1.2.3