From aa7eec02996aca9304187f36d674d5fe898aece6 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Tue, 16 Apr 2019 23:04:24 +0200 Subject: check task priority at compile time before we were checking the priority at runtime. The compile time error message when the priority is too high is kind of awful though. --- tests/cfail/priority-too-high.rs | 22 ++++++++++++++++++++++ tests/cfail/priority-too-low.rs | 22 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tests/cfail/priority-too-high.rs create mode 100644 tests/cfail/priority-too-low.rs (limited to 'tests/cfail') diff --git a/tests/cfail/priority-too-high.rs b/tests/cfail/priority-too-high.rs new file mode 100644 index 0000000..ec32401 --- /dev/null +++ b/tests/cfail/priority-too-high.rs @@ -0,0 +1,22 @@ +#![no_main] +#![no_std] + +extern crate lm3s6965; +extern crate panic_halt; +extern crate rtfm; + +use rtfm::app; + +#[app(device = lm3s6965)] //~ error evaluation of constant value failed +const APP: () = { + #[init] + fn init() {} + + // OK, this is the maximum priority supported by the device + #[interrupt(priority = 8)] + fn UART0() {} + + // this value is too high! + #[interrupt(priority = 9)] + fn UART1() {} +}; diff --git a/tests/cfail/priority-too-low.rs b/tests/cfail/priority-too-low.rs new file mode 100644 index 0000000..6dcbfd6 --- /dev/null +++ b/tests/cfail/priority-too-low.rs @@ -0,0 +1,22 @@ +#![no_main] +#![no_std] + +extern crate lm3s6965; +extern crate panic_halt; +extern crate rtfm; + +use rtfm::app; + +#[app(device = lm3s6965)] +const APP: () = { + #[init] + fn init() {} + + // OK, this is the minimum priority that tasks can have + #[interrupt(priority = 1)] + fn UART0() {} + + // this value is too low! + #[interrupt(priority = 0)] //~ error this literal must be in the range 1...255 + fn UART1() {} +}; -- cgit v1.2.3