aboutsummaryrefslogtreecommitdiff
path: root/cortex-m-semihosting
diff options
context:
space:
mode:
authorGravatar bors[bot] <26634292+bors[bot]@users.noreply.github.com> 2022-08-12 00:34:12 +0000
committerGravatar GitHub <noreply@github.com> 2022-08-12 00:34:12 +0000
commit0e530549de322684c50e858c6bb985afb5479dbe (patch)
tree21efc15cdadf74ac03a2e210f15eff1542f33e82 /cortex-m-semihosting
parente46e2310adc86a5a09a1858a23ecdde2a2c6963f (diff)
parent3a15a6b4b320fa328e8ab99c31f81536960dd280 (diff)
downloadcortex-m-0e530549de322684c50e858c6bb985afb5479dbe.tar.gz
cortex-m-0e530549de322684c50e858c6bb985afb5479dbe.tar.zst
cortex-m-0e530549de322684c50e858c6bb985afb5479dbe.zip
Merge #447
447: Add implementation for critical-section 1.0 r=adamgreig a=Dirbaio Picking up #433 since it seems stalled. Changes from #433 are: - Update to `critical-section 1.0.0-alpha.2` - Use `bool` restore token - Name Cargo feature `critical-section-single-core`. TODO before merging: - [x] Wait for `critical-section 1.0` release https://github.com/rust-embedded/critical-section/pull/19 Co-Authored-By: Markus Reiter `@reitermarkus` Co-authored-by: Dario Nieuwenhuis <dirbaio@dirbaio.net>
Diffstat (limited to 'cortex-m-semihosting')
-rw-r--r--cortex-m-semihosting/Cargo.toml1
-rw-r--r--cortex-m-semihosting/src/export.rs10
2 files changed, 5 insertions, 6 deletions
diff --git a/cortex-m-semihosting/Cargo.toml b/cortex-m-semihosting/Cargo.toml
index 5afe0ac..ac0afa5 100644
--- a/cortex-m-semihosting/Cargo.toml
+++ b/cortex-m-semihosting/Cargo.toml
@@ -21,3 +21,4 @@ no-semihosting = []
[dependencies]
cortex-m = { path = "..", version = ">= 0.5.8, < 0.8" }
+critical-section = "1.0.0"
diff --git a/cortex-m-semihosting/src/export.rs b/cortex-m-semihosting/src/export.rs
index 0bbd09f..46e70e7 100644
--- a/cortex-m-semihosting/src/export.rs
+++ b/cortex-m-semihosting/src/export.rs
@@ -2,14 +2,12 @@
use core::fmt::{self, Write};
-use cortex_m::interrupt;
-
use crate::hio::{self, HostStream};
static mut HSTDOUT: Option<HostStream> = None;
pub fn hstdout_str(s: &str) {
- let _result = interrupt::free(|_| unsafe {
+ let _result = critical_section::with(|_| unsafe {
if HSTDOUT.is_none() {
HSTDOUT = Some(hio::hstdout()?);
}
@@ -19,7 +17,7 @@ pub fn hstdout_str(s: &str) {
}
pub fn hstdout_fmt(args: fmt::Arguments) {
- let _result = interrupt::free(|_| unsafe {
+ let _result = critical_section::with(|_| unsafe {
if HSTDOUT.is_none() {
HSTDOUT = Some(hio::hstdout()?);
}
@@ -31,7 +29,7 @@ pub fn hstdout_fmt(args: fmt::Arguments) {
static mut HSTDERR: Option<HostStream> = None;
pub fn hstderr_str(s: &str) {
- let _result = interrupt::free(|_| unsafe {
+ let _result = critical_section::with(|_| unsafe {
if HSTDERR.is_none() {
HSTDERR = Some(hio::hstderr()?);
}
@@ -41,7 +39,7 @@ pub fn hstderr_str(s: &str) {
}
pub fn hstderr_fmt(args: fmt::Arguments) {
- let _result = interrupt::free(|_| unsafe {
+ let _result = critical_section::with(|_| unsafe {
if HSTDERR.is_none() {
HSTDERR = Some(hio::hstderr()?);
}