Skip to content

Commit d055118

Browse files
committed
Update critical-section crate.
1 parent cfba329 commit d055118

File tree

4 files changed

+15
-16
lines changed

4 files changed

+15
-16
lines changed

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ links = "cortex-m" # prevent multiple versions of this crate to be linked toget
1818

1919
[dependencies]
2020
bitfield = "0.13.2"
21-
critical-section = { version = "0.2", optional = true }
21+
critical-section = { version = "0.3", optional = true }
2222
embedded-hal = "0.2.4"
2323
volatile-register = "0.2.0"
2424

@@ -32,7 +32,7 @@ cm7 = []
3232
cm7-r0p1 = ["cm7"]
3333
linker-plugin-lto = []
3434
std = []
35-
single-core-critical-section = ["critical-section", "critical-section/custom-impl"]
35+
single-core-critical-section = ["critical-section", "critical-section/token-bool"]
3636

3737
[workspace]
3838
members = [
@@ -59,4 +59,4 @@ targets = [
5959

6060
[patch.crates-io]
6161
# See https://github.com/embassy-rs/critical-section/pull/13.
62-
critical-section = { git = "https://github.com/reitermarkus/critical-section", branch = "cortex-m" }
62+
critical-section = { git = "https://github.com/embassy-rs/critical-section" }

cortex-m-semihosting/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ no-semihosting = []
2121

2222
[dependencies]
2323
cortex-m = { path = "..", version = ">= 0.5.8, < 0.8" }
24-
critical-section = "0.2"
24+
critical-section = "0.3"

src/critical_section.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,27 @@
11
#[cfg(all(cortex_m, feature = "single-core-critical-section"))]
22
mod single_core_critical_section {
3+
use critical_section::{set_impl, Impl, RawToken};
4+
35
use crate::interrupt;
46
use crate::register::primask::{self, Primask};
57

6-
struct CriticalSection;
7-
critical_section::custom_impl!(CriticalSection);
8-
9-
const TOKEN_IGNORE: u8 = 0;
10-
const TOKEN_REENABLE: u8 = 1;
8+
struct SingleCoreCriticalSection;
9+
set_impl!(CriticalSection);
1110

12-
unsafe impl critical_section::Impl for CriticalSection {
13-
unsafe fn acquire() -> u8 {
11+
unsafe impl Impl for SingleCoreCriticalSection {
12+
unsafe fn acquire() -> RawToken {
1413
match primask::read() {
1514
Primask::Active => {
1615
interrupt::disable();
17-
TOKEN_REENABLE
16+
true
1817
}
19-
Primask::Inactive => TOKEN_IGNORE,
18+
Primask::Inactive => false,
2019
}
2120
}
2221

23-
unsafe fn release(token: u8) {
22+
unsafe fn release(primask_was_active: RawToken) {
2423
// Only re-enable interrupts if they were enabled before the critical section.
25-
if token == TOKEN_REENABLE {
24+
if primask_was_active {
2625
interrupt::enable()
2726
}
2827
}

testsuite/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ semihosting = ["cortex-m-semihosting", "minitest/semihosting"]
1313
cortex-m-rt.path = "../cortex-m-rt"
1414
cortex-m.path = ".."
1515
minitest.path = "minitest"
16-
critical-section = "0.2"
16+
critical-section = "0.3"
1717

1818
[dependencies.rtt-target]
1919
version = "0.3.1"

0 commit comments

Comments
 (0)