mirror of
https://github.com/rtic-rs/rtic.git
synced 2025-12-20 06:45:36 +01:00
drop lock methods, add raise_to function
This commit is contained in:
parent
854939fc6b
commit
3e165f2a42
6 changed files with 96 additions and 90 deletions
|
|
@ -6,32 +6,44 @@ static R1: Resource<i32, C2> = Resource::new(0);
|
|||
|
||||
// You CAN'T lock a resource with ceiling C from a task with priority P if P > C
|
||||
fn j1(prio: P3) {
|
||||
R1.lock(&prio, |_, _| {});
|
||||
//~^ error
|
||||
let ceil = prio.as_ceiling();
|
||||
|
||||
rtfm::raise_to(ceil, &R1, |ceil| {
|
||||
//~^ error
|
||||
});
|
||||
}
|
||||
|
||||
// DON'T lock a resource with ceiling equal to the task priority.
|
||||
// Instead use `borrow`
|
||||
fn j2(prio: P2) {
|
||||
R1.lock(&prio, |_, _| {});
|
||||
let ceil = prio.as_ceiling();
|
||||
|
||||
rtfm::raise_to(ceil, &R1, |_| {});
|
||||
//~^ error
|
||||
|
||||
// OK
|
||||
let r1 = R1.borrow(&prio, prio.as_ceiling());
|
||||
let r1 = R1.borrow(&prio, ceil);
|
||||
}
|
||||
|
||||
// You CAN lock a resource with ceiling C from a task with priority P if C > P
|
||||
fn j3(prio: P1) {
|
||||
let ceil = prio.as_ceiling();
|
||||
|
||||
// OK
|
||||
R1.lock(&prio, |r1, _| {});
|
||||
rtfm::raise_to(ceil, &R1, |ceil| {
|
||||
let r1 = R1.borrow(&prio, ceil);
|
||||
})
|
||||
}
|
||||
|
||||
static R2: Resource<i32, C16> = Resource::new(0);
|
||||
|
||||
// Tasks with priority less than P16 can't lock a resource with ceiling C16
|
||||
fn j4(prio: P1) {
|
||||
R2.lock(&prio, |_, _| {});
|
||||
//~^ error
|
||||
let ceil = prio.as_ceiling();
|
||||
|
||||
rtfm::raise_to(ceil, &R2, |ceil| {
|
||||
//~^ error
|
||||
});
|
||||
}
|
||||
|
||||
// Only tasks with priority P16 can claim a resource with ceiling C16
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue