diff options
author | 2017-04-27 19:06:22 -0500 | |
---|---|---|
committer | 2017-04-27 19:28:27 -0500 | |
commit | e2bde8d21acdfb845554d960536bfb94a7bb1f86 (patch) | |
tree | e44c57d9f018039fda1a0845b8d5a6310903725b /tests/cfail/tasks-same-handler.rs | |
parent | ec2df608ca4c35f044c383b7a4c8ba268657aa15 (diff) | |
download | rtic-e2bde8d21acdfb845554d960536bfb94a7bb1f86.tar.gz rtic-e2bde8d21acdfb845554d960536bfb94a7bb1f86.tar.zst rtic-e2bde8d21acdfb845554d960536bfb94a7bb1f86.zip |
make the ceiling part of the task signature
remove the P.as_ceiling method
Diffstat (limited to 'tests/cfail/tasks-same-handler.rs')
-rw-r--r-- | tests/cfail/tasks-same-handler.rs | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/tests/cfail/tasks-same-handler.rs b/tests/cfail/tasks-same-handler.rs index 457ff55e..1d32d581 100644 --- a/tests/cfail/tasks-same-handler.rs +++ b/tests/cfail/tasks-same-handler.rs @@ -1,12 +1,12 @@ -// error-pattern: specified more than once +// error-pattern: field `Exti0` specified more than once #![feature(used)] #[macro_use] extern crate cortex_m_rtfm as rtfm; -use rtfm::{C16, P0, P1, P2}; -use device::interrupt::Exti0; +use rtfm::{C0, C1, C16, C2, P0, P1, P2}; +use device::interrupt::{Exti0, Exti1}; // WRONG: Two tasks mapped to the same interrupt handler tasks!(device, { @@ -24,13 +24,13 @@ tasks!(device, { fn init(_: P0, _: &C16) {} -fn idle(_: P0) -> ! { +fn idle(_: P0, _: C0) -> ! { loop {} } -fn j1(_task: Exti0, _prio: P1) {} +fn j1(_task: Exti0, _prio: P1, _ceil: C1) {} -fn j2(_task: Exti0, _prio: P1) {} +fn j2(_task: Exti0, _prio: P2, _ceil: C2) {} // fake device crate extern crate core; @@ -38,6 +38,7 @@ extern crate cortex_m; mod device { pub mod interrupt { + use cortex_m::ctxt::Context; use cortex_m::interrupt::Nr; extern "C" fn default_handler<T>(_: T) {} @@ -45,14 +46,17 @@ mod device { pub struct Handlers { pub Exti0: extern "C" fn(Exti0), pub Exti1: extern "C" fn(Exti1), + pub Exti2: extern "C" fn(Exti2), } pub struct Exti0; pub struct Exti1; + pub struct Exti2; pub enum Interrupt { Exti0, Exti1, + Exti2, } unsafe impl Nr for Interrupt { @@ -61,9 +65,34 @@ mod device { } } + unsafe impl Context for Exti0 {} + + unsafe impl Nr for Exti0 { + fn nr(&self) -> u8 { + 0 + } + } + + unsafe impl Context for Exti1 {} + + unsafe impl Nr for Exti1 { + fn nr(&self) -> u8 { + 0 + } + } + + unsafe impl Context for Exti2 {} + + unsafe impl Nr for Exti2 { + fn nr(&self) -> u8 { + 0 + } + } + pub const DEFAULT_HANDLERS: Handlers = Handlers { Exti0: default_handler, Exti1: default_handler, + Exti2: default_handler, }; } } |