aboutsummaryrefslogtreecommitdiff
path: root/tests/cfail/race-1.rs
diff options
context:
space:
mode:
authorJorge Aparicio <jorge@japaric.io>2017-04-21 21:24:28 -0500
committerJorge Aparicio <jorge@japaric.io>2017-04-21 21:24:28 -0500
commiteea803008390cbae307e873ce6d39e01d6367759 (patch)
treec759d6c28a01fa8fa89abd52326720c5d3b5b8d3 /tests/cfail/race-1.rs
parent1c82f1b1190cb40a3502d5b74a8c98775a788850 (diff)
reword the comments in compile-fail tests
Diffstat (limited to 'tests/cfail/race-1.rs')
-rw-r--r--tests/cfail/race-1.rs41
1 files changed, 31 insertions, 10 deletions
diff --git a/tests/cfail/race-1.rs b/tests/cfail/race-1.rs
index e9d030d..9037ed4 100644
--- a/tests/cfail/race-1.rs
+++ b/tests/cfail/race-1.rs
@@ -7,17 +7,38 @@ static R1: Resource<i32, C2> = Resource::new(0);
fn j1(prio: P1) {
let ceil = prio.as_ceiling();
- ceil.raise(&R1, |ceil| {
- let r1 = R1.borrow(&prio, ceil);
+ ceil.raise(
+ &R1, |ceil| {
+ let r1 = R1.borrow(&prio, ceil);
- // Would preempt this critical section
- // rtfm::request(j2);
- });
+ // `j2` preempts this critical section
+ rtfm::request(j2);
+ }
+ );
}
-fn j2(prio: P3) {
- rtfm::critical(|ceil| {
- let r1 = R1.borrow(&prio, &ceil);
- //~^ error
- });
+fn j2(_task: Task, prio: P3) {
+ rtfm::critical(
+ |ceil| {
+ // OK C2 (R1's ceiling) <= C16 (system ceiling)
+ // BAD C2 (R1's ceiling) < P3 (j2's priority)
+ let r1 = R1.borrow(&prio, &ceil);
+ //~^ error
+ },
+ );
+}
+
+// glue
+extern crate cortex_m;
+
+use cortex_m::ctxt::Context;
+use cortex_m::interrupt::Nr;
+
+struct Task;
+
+unsafe impl Context for Task {}
+unsafe impl Nr for Task {
+ fn nr(&self) -> u8 {
+ 0
+ }
}