From 609f14b1e4f169eb639025a5edefbb64afebf816 Mon Sep 17 00:00:00 2001 From: Nils Fitinghoff Date: Tue, 22 Aug 2023 17:42:52 +0200 Subject: [PATCH] ritc-sync: Fix make_channel forcing dependency into user crate Before, `make_channel` assumed that `critical_section` would be available in the namespace of the code that invoked the macro. Access `critical_section` through `rtic-sync` instead. --- rtic-sync/CHANGELOG.md | 2 ++ rtic-sync/src/channel.rs | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/rtic-sync/CHANGELOG.md b/rtic-sync/CHANGELOG.md index 70fd388d9e..90c481788c 100644 --- a/rtic-sync/CHANGELOG.md +++ b/rtic-sync/CHANGELOG.md @@ -13,6 +13,8 @@ For each category, *Added*, *Changed*, *Fixed* add new entries at the top! ### Fixed +- `make_channel` no longer requires the user crate to have `critical_section` in scope + ## [v1.0.1] - 2023-06-14 ### Fixed diff --git a/rtic-sync/src/channel.rs b/rtic-sync/src/channel.rs index 06a6639b0e..61ae7e2f91 100644 --- a/rtic-sync/src/channel.rs +++ b/rtic-sync/src/channel.rs @@ -9,6 +9,8 @@ use core::{ sync::atomic::{fence, Ordering}, task::{Poll, Waker}, }; +#[doc(hidden)] +pub use critical_section; use heapless::Deque; use rtic_common::waker_registration::CriticalSectionWakerRegistration as WakerRegistration; use rtic_common::{ @@ -108,7 +110,7 @@ macro_rules! make_channel { static CHECK: ::core::sync::atomic::AtomicU8 = ::core::sync::atomic::AtomicU8::new(0); - critical_section::with(|_| { + $crate::channel::critical_section::with(|_| { if CHECK.load(::core::sync::atomic::Ordering::Relaxed) != 0 { panic!("call to the same `make_channel` instance twice"); }