Skip to content
Snippets Groups Projects
Select Git revision
  • 62c5c1ae431790e36ffeb0eebba75dfabb5dbd76
  • master default protected
  • exam
  • exper
  • klee
  • simple
  • v0.3.2
  • v0.3.1
  • v0.3.0
  • v0.2.2
  • v0.2.1
  • v0.2.0
  • v0.1.1
  • v0.1.0
14 results

resource-not-send-sync.rs

Blame
  • resource-not-send-sync.rs 1.12 KiB
    #![deny(unsafe_code)]
    #![deny(warnings)]
    #![feature(const_fn)]
    #![feature(proc_macro)]
    #![no_std]
    
    extern crate cortex_m_rtfm as rtfm;
    extern crate stm32f103xx;
    
    use rtfm::{app, Resource, Threshold};
    
    app! {
        device: stm32f103xx,
    
        resources: {
            static SHARED: bool = false;
        },
    
        tasks: {
            EXTI0: {
                path: exti0,
                priority: 1,
                resources: [SHARED],
            },
    
            EXTI1: {
                path: exti1,
                priority: 2,
                resources: [SHARED],
            },
        },
    }
    
    fn init(_p: init::Peripherals, _r: init::Resources) {}
    
    fn idle() -> ! {
        loop {}
    }
    
    fn is_send<T>(_: &T) where T: Send {}
    fn is_sync<T>(_: &T) where T: Sync {}
    
    fn exti0(_t: &mut Threshold, r: EXTI0::Resources) {
        // ERROR resource proxies can't be shared between tasks
        is_sync(&r.SHARED);
        //~^ error the trait bound `*const (): core::marker::Sync` is not satisfied
    
        // ERROR resource proxies are not `Send`able across tasks
        is_send(&r.SHARED);
        //~^ error the trait bound `*const (): core::marker::Send` is not satisfied
    }
    
    fn exti1(_t: &mut Threshold, _r: EXTI1::Resources) {
    }