From 1aee43cc3085828dada0702a0330b5519e36bdb2 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Wed, 17 Jan 2018 21:51:47 +0100 Subject: impl Send for all the peripherals --- src/peripheral/mod.rs | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/peripheral/mod.rs b/src/peripheral/mod.rs index dad12a5..4462136 100644 --- a/src/peripheral/mod.rs +++ b/src/peripheral/mod.rs @@ -220,6 +220,9 @@ pub struct CBP { _marker: PhantomData<*const ()>, } +#[cfg(any(armv7m, target_arch = "x86_64"))] +unsafe impl Send for CBP {} + #[cfg(any(armv7m, target_arch = "x86_64"))] impl CBP { pub(crate) unsafe fn new() -> Self { @@ -234,9 +237,6 @@ impl CBP { } } -#[cfg(any(armv7m, target_arch = "x86_64"))] -unsafe impl Send for CBP {} - #[cfg(any(armv7m, target_arch = "x86_64"))] impl ops::Deref for CBP { type Target = self::cbp::RegisterBlock; @@ -251,6 +251,8 @@ pub struct CPUID { _marker: PhantomData<*const ()>, } +unsafe impl Send for CPUID {} + impl CPUID { /// Returns a pointer to the register block pub fn ptr() -> *const self::cpuid::RegisterBlock { @@ -271,6 +273,8 @@ pub struct DCB { _marker: PhantomData<*const ()>, } +unsafe impl Send for DCB {} + impl DCB { /// Returns a pointer to the register block pub fn ptr() -> *const dcb::RegisterBlock { @@ -291,6 +295,8 @@ pub struct DWT { _marker: PhantomData<*const ()>, } +unsafe impl Send for DWT {} + impl DWT { /// Returns a pointer to the register block pub fn ptr() -> *const dwt::RegisterBlock { @@ -314,6 +320,9 @@ pub struct FPB { _marker: PhantomData<*const ()>, } +#[cfg(any(armv7m, target_arch = "x86_64"))] +unsafe impl Send for FPB {} + #[cfg(any(armv7m, target_arch = "x86_64"))] impl FPB { /// Returns a pointer to the register block @@ -339,6 +348,9 @@ pub struct FPU { _marker: PhantomData<*const ()>, } +#[cfg(any(has_fpu, target_arch = "x86_64"))] +unsafe impl Send for FPU {} + #[cfg(any(has_fpu, target_arch = "x86_64"))] impl FPU { /// Returns a pointer to the register block @@ -364,6 +376,9 @@ pub struct ITM { _marker: PhantomData<*const ()>, } +#[cfg(any(armv7m, target_arch = "x86_64"))] +unsafe impl Send for ITM {} + #[cfg(any(armv7m, target_arch = "x86_64"))] impl ITM { /// Returns a pointer to the register block @@ -393,6 +408,8 @@ pub struct MPU { _marker: PhantomData<*const ()>, } +unsafe impl Send for MPU {} + impl MPU { /// Returns a pointer to the register block pub fn ptr() -> *const mpu::RegisterBlock { @@ -413,6 +430,8 @@ pub struct NVIC { _marker: PhantomData<*const ()>, } +unsafe impl Send for NVIC {} + impl NVIC { /// Returns a pointer to the register block pub fn ptr() -> *const nvic::RegisterBlock { @@ -433,6 +452,8 @@ pub struct SCB { _marker: PhantomData<*const ()>, } +unsafe impl Send for SCB {} + impl SCB { /// Returns a pointer to the register block pub fn ptr() -> *const scb::RegisterBlock { @@ -453,6 +474,8 @@ pub struct SYST { _marker: PhantomData<*const ()>, } +unsafe impl Send for SYST {} + impl SYST { /// Returns a pointer to the register block pub fn ptr() -> *const syst::RegisterBlock { @@ -476,6 +499,9 @@ pub struct TPIU { _marker: PhantomData<*const ()>, } +#[cfg(any(armv7m, target_arch = "x86_64"))] +unsafe impl Send for TPIU {} + #[cfg(any(armv7m, target_arch = "x86_64"))] impl TPIU { /// Returns a pointer to the register block -- cgit v1.2.3