diff options
Diffstat (limited to 'embassy-sync')
| -rw-r--r-- | embassy-sync/src/channel.rs | 30 | ||||
| -rw-r--r-- | embassy-sync/src/mutex.rs | 4 | ||||
| -rw-r--r-- | embassy-sync/src/once_lock.rs | 2 | ||||
| -rw-r--r-- | embassy-sync/src/pipe.rs | 2 | ||||
| -rw-r--r-- | embassy-sync/src/priority_channel.rs | 32 | ||||
| -rw-r--r-- | embassy-sync/src/pubsub/mod.rs | 2 | ||||
| -rw-r--r-- | embassy-sync/src/ring_buffer.rs | 6 | ||||
| -rw-r--r-- | embassy-sync/src/rwlock.rs | 4 | ||||
| -rw-r--r-- | embassy-sync/src/semaphore.rs | 4 | ||||
| -rw-r--r-- | embassy-sync/src/signal.rs | 4 | ||||
| -rw-r--r-- | embassy-sync/src/waitqueue/atomic_waker.rs | 2 | ||||
| -rw-r--r-- | embassy-sync/src/watch.rs | 4 | ||||
| -rw-r--r-- | embassy-sync/src/zerocopy_channel.rs | 10 |
13 files changed, 53 insertions, 53 deletions
diff --git a/embassy-sync/src/channel.rs b/embassy-sync/src/channel.rs index de437cc52..dbd24a6c7 100644 --- a/embassy-sync/src/channel.rs +++ b/embassy-sync/src/channel.rs | |||
| @@ -50,8 +50,8 @@ use core::task::{Context, Poll}; | |||
| 50 | 50 | ||
| 51 | use heapless::Deque; | 51 | use heapless::Deque; |
| 52 | 52 | ||
| 53 | use crate::blocking_mutex::raw::RawMutex; | ||
| 54 | use crate::blocking_mutex::Mutex; | 53 | use crate::blocking_mutex::Mutex; |
| 54 | use crate::blocking_mutex::raw::RawMutex; | ||
| 55 | use crate::waitqueue::WakerRegistration; | 55 | use crate::waitqueue::WakerRegistration; |
| 56 | 56 | ||
| 57 | /// Send-only access to a [`Channel`]. | 57 | /// Send-only access to a [`Channel`]. |
| @@ -1112,11 +1112,13 @@ mod tests { | |||
| 1112 | static CHANNEL: StaticCell<Channel<CriticalSectionRawMutex, u32, 3>> = StaticCell::new(); | 1112 | static CHANNEL: StaticCell<Channel<CriticalSectionRawMutex, u32, 3>> = StaticCell::new(); |
| 1113 | let c = &*CHANNEL.init(Channel::new()); | 1113 | let c = &*CHANNEL.init(Channel::new()); |
| 1114 | let c2 = c; | 1114 | let c2 = c; |
| 1115 | assert!(executor | 1115 | assert!( |
| 1116 | .spawn(async move { | 1116 | executor |
| 1117 | assert!(c2.try_send(1).is_ok()); | 1117 | .spawn(async move { |
| 1118 | }) | 1118 | assert!(c2.try_send(1).is_ok()); |
| 1119 | .is_ok()); | 1119 | }) |
| 1120 | .is_ok() | ||
| 1121 | ); | ||
| 1120 | assert_eq!(c.receive().await, 1); | 1122 | assert_eq!(c.receive().await, 1); |
| 1121 | } | 1123 | } |
| 1122 | 1124 | ||
| @@ -1143,13 +1145,15 @@ mod tests { | |||
| 1143 | // However, I've used the debugger to observe that the send does indeed wait. | 1145 | // However, I've used the debugger to observe that the send does indeed wait. |
| 1144 | Delay::new(Duration::from_millis(500)).await; | 1146 | Delay::new(Duration::from_millis(500)).await; |
| 1145 | assert_eq!(c.receive().await, 1); | 1147 | assert_eq!(c.receive().await, 1); |
| 1146 | assert!(executor | 1148 | assert!( |
| 1147 | .spawn(async move { | 1149 | executor |
| 1148 | loop { | 1150 | .spawn(async move { |
| 1149 | c.receive().await; | 1151 | loop { |
| 1150 | } | 1152 | c.receive().await; |
| 1151 | }) | 1153 | } |
| 1152 | .is_ok()); | 1154 | }) |
| 1155 | .is_ok() | ||
| 1156 | ); | ||
| 1153 | send_task_1.unwrap().await; | 1157 | send_task_1.unwrap().await; |
| 1154 | send_task_2.unwrap().await; | 1158 | send_task_2.unwrap().await; |
| 1155 | } | 1159 | } |
diff --git a/embassy-sync/src/mutex.rs b/embassy-sync/src/mutex.rs index aea682899..96b834f02 100644 --- a/embassy-sync/src/mutex.rs +++ b/embassy-sync/src/mutex.rs | |||
| @@ -2,13 +2,13 @@ | |||
| 2 | //! | 2 | //! |
| 3 | //! This module provides a mutex that can be used to synchronize data between asynchronous tasks. | 3 | //! This module provides a mutex that can be used to synchronize data between asynchronous tasks. |
| 4 | use core::cell::{RefCell, UnsafeCell}; | 4 | use core::cell::{RefCell, UnsafeCell}; |
| 5 | use core::future::{poll_fn, Future}; | 5 | use core::future::{Future, poll_fn}; |
| 6 | use core::ops::{Deref, DerefMut}; | 6 | use core::ops::{Deref, DerefMut}; |
| 7 | use core::task::Poll; | 7 | use core::task::Poll; |
| 8 | use core::{fmt, mem}; | 8 | use core::{fmt, mem}; |
| 9 | 9 | ||
| 10 | use crate::blocking_mutex::raw::RawMutex; | ||
| 11 | use crate::blocking_mutex::Mutex as BlockingMutex; | 10 | use crate::blocking_mutex::Mutex as BlockingMutex; |
| 11 | use crate::blocking_mutex::raw::RawMutex; | ||
| 12 | use crate::waitqueue::WakerRegistration; | 12 | use crate::waitqueue::WakerRegistration; |
| 13 | 13 | ||
| 14 | /// Error returned by [`Mutex::try_lock`] | 14 | /// Error returned by [`Mutex::try_lock`] |
diff --git a/embassy-sync/src/once_lock.rs b/embassy-sync/src/once_lock.rs index 73edfea9a..2af19ca20 100644 --- a/embassy-sync/src/once_lock.rs +++ b/embassy-sync/src/once_lock.rs | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | use core::cell::Cell; | 3 | use core::cell::Cell; |
| 4 | use core::fmt::{Debug, Formatter}; | 4 | use core::fmt::{Debug, Formatter}; |
| 5 | use core::future::{poll_fn, Future}; | 5 | use core::future::{Future, poll_fn}; |
| 6 | use core::mem::MaybeUninit; | 6 | use core::mem::MaybeUninit; |
| 7 | use core::sync::atomic::{AtomicBool, Ordering}; | 7 | use core::sync::atomic::{AtomicBool, Ordering}; |
| 8 | use core::task::Poll; | 8 | use core::task::Poll; |
diff --git a/embassy-sync/src/pipe.rs b/embassy-sync/src/pipe.rs index 6d624979a..215a556d9 100644 --- a/embassy-sync/src/pipe.rs +++ b/embassy-sync/src/pipe.rs | |||
| @@ -7,8 +7,8 @@ use core::ops::Range; | |||
| 7 | use core::pin::Pin; | 7 | use core::pin::Pin; |
| 8 | use core::task::{Context, Poll}; | 8 | use core::task::{Context, Poll}; |
| 9 | 9 | ||
| 10 | use crate::blocking_mutex::raw::RawMutex; | ||
| 11 | use crate::blocking_mutex::Mutex; | 10 | use crate::blocking_mutex::Mutex; |
| 11 | use crate::blocking_mutex::raw::RawMutex; | ||
| 12 | use crate::ring_buffer::RingBuffer; | 12 | use crate::ring_buffer::RingBuffer; |
| 13 | use crate::waitqueue::WakerRegistration; | 13 | use crate::waitqueue::WakerRegistration; |
| 14 | 14 | ||
diff --git a/embassy-sync/src/priority_channel.rs b/embassy-sync/src/priority_channel.rs index 715a20e86..1af7d9221 100644 --- a/embassy-sync/src/priority_channel.rs +++ b/embassy-sync/src/priority_channel.rs | |||
| @@ -8,11 +8,11 @@ use core::future::Future; | |||
| 8 | use core::pin::Pin; | 8 | use core::pin::Pin; |
| 9 | use core::task::{Context, Poll}; | 9 | use core::task::{Context, Poll}; |
| 10 | 10 | ||
| 11 | pub use heapless::binary_heap::{Kind, Max, Min}; | ||
| 12 | use heapless::BinaryHeap; | 11 | use heapless::BinaryHeap; |
| 12 | pub use heapless::binary_heap::{Kind, Max, Min}; | ||
| 13 | 13 | ||
| 14 | use crate::blocking_mutex::raw::RawMutex; | ||
| 15 | use crate::blocking_mutex::Mutex; | 14 | use crate::blocking_mutex::Mutex; |
| 15 | use crate::blocking_mutex::raw::RawMutex; | ||
| 16 | use crate::channel::{DynamicChannel, DynamicReceiver, DynamicSender, TryReceiveError, TrySendError}; | 16 | use crate::channel::{DynamicChannel, DynamicReceiver, DynamicSender, TryReceiveError, TrySendError}; |
| 17 | use crate::waitqueue::WakerRegistration; | 17 | use crate::waitqueue::WakerRegistration; |
| 18 | 18 | ||
| @@ -799,11 +799,13 @@ mod tests { | |||
| 799 | static CHANNEL: StaticCell<PriorityChannel<CriticalSectionRawMutex, u32, Max, 3>> = StaticCell::new(); | 799 | static CHANNEL: StaticCell<PriorityChannel<CriticalSectionRawMutex, u32, Max, 3>> = StaticCell::new(); |
| 800 | let c = &*CHANNEL.init(PriorityChannel::new()); | 800 | let c = &*CHANNEL.init(PriorityChannel::new()); |
| 801 | let c2 = c; | 801 | let c2 = c; |
| 802 | assert!(executor | 802 | assert!( |
| 803 | .spawn(async move { | 803 | executor |
| 804 | assert!(c2.try_send(1).is_ok()); | 804 | .spawn(async move { |
| 805 | }) | 805 | assert!(c2.try_send(1).is_ok()); |
| 806 | .is_ok()); | 806 | }) |
| 807 | .is_ok() | ||
| 808 | ); | ||
| 807 | assert_eq!(c.receive().await, 1); | 809 | assert_eq!(c.receive().await, 1); |
| 808 | } | 810 | } |
| 809 | 811 | ||
| @@ -830,13 +832,15 @@ mod tests { | |||
| 830 | // However, I've used the debugger to observe that the send does indeed wait. | 832 | // However, I've used the debugger to observe that the send does indeed wait. |
| 831 | Delay::new(Duration::from_millis(500)).await; | 833 | Delay::new(Duration::from_millis(500)).await; |
| 832 | assert_eq!(c.receive().await, 1); | 834 | assert_eq!(c.receive().await, 1); |
| 833 | assert!(executor | 835 | assert!( |
| 834 | .spawn(async move { | 836 | executor |
| 835 | loop { | 837 | .spawn(async move { |
| 836 | c.receive().await; | 838 | loop { |
| 837 | } | 839 | c.receive().await; |
| 838 | }) | 840 | } |
| 839 | .is_ok()); | 841 | }) |
| 842 | .is_ok() | ||
| 843 | ); | ||
| 840 | send_task_1.unwrap().await; | 844 | send_task_1.unwrap().await; |
| 841 | send_task_2.unwrap().await; | 845 | send_task_2.unwrap().await; |
| 842 | } | 846 | } |
diff --git a/embassy-sync/src/pubsub/mod.rs b/embassy-sync/src/pubsub/mod.rs index ad9402f5a..127a208f1 100644 --- a/embassy-sync/src/pubsub/mod.rs +++ b/embassy-sync/src/pubsub/mod.rs | |||
| @@ -10,8 +10,8 @@ use heapless::Deque; | |||
| 10 | 10 | ||
| 11 | use self::publisher::{ImmediatePub, Pub}; | 11 | use self::publisher::{ImmediatePub, Pub}; |
| 12 | use self::subscriber::Sub; | 12 | use self::subscriber::Sub; |
| 13 | use crate::blocking_mutex::raw::RawMutex; | ||
| 14 | use crate::blocking_mutex::Mutex; | 13 | use crate::blocking_mutex::Mutex; |
| 14 | use crate::blocking_mutex::raw::RawMutex; | ||
| 15 | use crate::waitqueue::MultiWakerRegistration; | 15 | use crate::waitqueue::MultiWakerRegistration; |
| 16 | 16 | ||
| 17 | pub mod publisher; | 17 | pub mod publisher; |
diff --git a/embassy-sync/src/ring_buffer.rs b/embassy-sync/src/ring_buffer.rs index f03b7dd8f..608447cd6 100644 --- a/embassy-sync/src/ring_buffer.rs +++ b/embassy-sync/src/ring_buffer.rs | |||
| @@ -95,11 +95,7 @@ impl<const N: usize> RingBuffer<N> { | |||
| 95 | 95 | ||
| 96 | fn wrap(&self, n: usize) -> usize { | 96 | fn wrap(&self, n: usize) -> usize { |
| 97 | assert!(n <= N); | 97 | assert!(n <= N); |
| 98 | if n == N { | 98 | if n == N { 0 } else { n } |
| 99 | 0 | ||
| 100 | } else { | ||
| 101 | n | ||
| 102 | } | ||
| 103 | } | 99 | } |
| 104 | } | 100 | } |
| 105 | 101 | ||
diff --git a/embassy-sync/src/rwlock.rs b/embassy-sync/src/rwlock.rs index e43388c4d..918a6aa41 100644 --- a/embassy-sync/src/rwlock.rs +++ b/embassy-sync/src/rwlock.rs | |||
| @@ -3,12 +3,12 @@ | |||
| 3 | //! This module provides a read-write lock that can be used to synchronize data between asynchronous tasks. | 3 | //! This module provides a read-write lock that can be used to synchronize data between asynchronous tasks. |
| 4 | use core::cell::{RefCell, UnsafeCell}; | 4 | use core::cell::{RefCell, UnsafeCell}; |
| 5 | use core::fmt; | 5 | use core::fmt; |
| 6 | use core::future::{poll_fn, Future}; | 6 | use core::future::{Future, poll_fn}; |
| 7 | use core::ops::{Deref, DerefMut}; | 7 | use core::ops::{Deref, DerefMut}; |
| 8 | use core::task::Poll; | 8 | use core::task::Poll; |
| 9 | 9 | ||
| 10 | use crate::blocking_mutex::raw::RawMutex; | ||
| 11 | use crate::blocking_mutex::Mutex as BlockingMutex; | 10 | use crate::blocking_mutex::Mutex as BlockingMutex; |
| 11 | use crate::blocking_mutex::raw::RawMutex; | ||
| 12 | use crate::waitqueue::WakerRegistration; | 12 | use crate::waitqueue::WakerRegistration; |
| 13 | 13 | ||
| 14 | /// Error returned by [`RwLock::try_read`] and [`RwLock::try_write`] when the lock is already held. | 14 | /// Error returned by [`RwLock::try_read`] and [`RwLock::try_write`] when the lock is already held. |
diff --git a/embassy-sync/src/semaphore.rs b/embassy-sync/src/semaphore.rs index 4e82b0fcd..8d2413931 100644 --- a/embassy-sync/src/semaphore.rs +++ b/embassy-sync/src/semaphore.rs | |||
| @@ -1,13 +1,13 @@ | |||
| 1 | //! A synchronization primitive for controlling access to a pool of resources. | 1 | //! A synchronization primitive for controlling access to a pool of resources. |
| 2 | use core::cell::{Cell, RefCell}; | 2 | use core::cell::{Cell, RefCell}; |
| 3 | use core::convert::Infallible; | 3 | use core::convert::Infallible; |
| 4 | use core::future::{poll_fn, Future}; | 4 | use core::future::{Future, poll_fn}; |
| 5 | use core::task::{Poll, Waker}; | 5 | use core::task::{Poll, Waker}; |
| 6 | 6 | ||
| 7 | use heapless::Deque; | 7 | use heapless::Deque; |
| 8 | 8 | ||
| 9 | use crate::blocking_mutex::raw::RawMutex; | ||
| 10 | use crate::blocking_mutex::Mutex; | 9 | use crate::blocking_mutex::Mutex; |
| 10 | use crate::blocking_mutex::raw::RawMutex; | ||
| 11 | use crate::waitqueue::WakerRegistration; | 11 | use crate::waitqueue::WakerRegistration; |
| 12 | 12 | ||
| 13 | /// An asynchronous semaphore. | 13 | /// An asynchronous semaphore. |
diff --git a/embassy-sync/src/signal.rs b/embassy-sync/src/signal.rs index 229b1fa99..cc02228cf 100644 --- a/embassy-sync/src/signal.rs +++ b/embassy-sync/src/signal.rs | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | //! A synchronization primitive for passing the latest value to a task. | 1 | //! A synchronization primitive for passing the latest value to a task. |
| 2 | use core::cell::Cell; | 2 | use core::cell::Cell; |
| 3 | use core::future::{poll_fn, Future}; | 3 | use core::future::{Future, poll_fn}; |
| 4 | use core::task::{Context, Poll, Waker}; | 4 | use core::task::{Context, Poll, Waker}; |
| 5 | 5 | ||
| 6 | use crate::blocking_mutex::raw::RawMutex; | ||
| 7 | use crate::blocking_mutex::Mutex; | 6 | use crate::blocking_mutex::Mutex; |
| 7 | use crate::blocking_mutex::raw::RawMutex; | ||
| 8 | 8 | ||
| 9 | /// Single-slot signaling primitive for a _single_ consumer. | 9 | /// Single-slot signaling primitive for a _single_ consumer. |
| 10 | /// | 10 | /// |
diff --git a/embassy-sync/src/waitqueue/atomic_waker.rs b/embassy-sync/src/waitqueue/atomic_waker.rs index 5a9910e7f..d2bf890e5 100644 --- a/embassy-sync/src/waitqueue/atomic_waker.rs +++ b/embassy-sync/src/waitqueue/atomic_waker.rs | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | use core::cell::Cell; | 1 | use core::cell::Cell; |
| 2 | use core::task::Waker; | 2 | use core::task::Waker; |
| 3 | 3 | ||
| 4 | use crate::blocking_mutex::raw::{CriticalSectionRawMutex, RawMutex}; | ||
| 5 | use crate::blocking_mutex::Mutex; | 4 | use crate::blocking_mutex::Mutex; |
| 5 | use crate::blocking_mutex::raw::{CriticalSectionRawMutex, RawMutex}; | ||
| 6 | 6 | ||
| 7 | /// Utility struct to register and wake a waker. | 7 | /// Utility struct to register and wake a waker. |
| 8 | /// If a waker is registered, registering another waker will replace the previous one without waking it. | 8 | /// If a waker is registered, registering another waker will replace the previous one without waking it. |
diff --git a/embassy-sync/src/watch.rs b/embassy-sync/src/watch.rs index 332ab5405..0f8a8d679 100644 --- a/embassy-sync/src/watch.rs +++ b/embassy-sync/src/watch.rs | |||
| @@ -1,13 +1,13 @@ | |||
| 1 | //! A synchronization primitive for passing the latest value to **multiple** receivers. | 1 | //! A synchronization primitive for passing the latest value to **multiple** receivers. |
| 2 | 2 | ||
| 3 | use core::cell::RefCell; | 3 | use core::cell::RefCell; |
| 4 | use core::future::{poll_fn, Future}; | 4 | use core::future::{Future, poll_fn}; |
| 5 | use core::marker::PhantomData; | 5 | use core::marker::PhantomData; |
| 6 | use core::ops::{Deref, DerefMut}; | 6 | use core::ops::{Deref, DerefMut}; |
| 7 | use core::task::{Context, Poll}; | 7 | use core::task::{Context, Poll}; |
| 8 | 8 | ||
| 9 | use crate::blocking_mutex::raw::RawMutex; | ||
| 10 | use crate::blocking_mutex::Mutex; | 9 | use crate::blocking_mutex::Mutex; |
| 10 | use crate::blocking_mutex::raw::RawMutex; | ||
| 11 | use crate::waitqueue::MultiWakerRegistration; | 11 | use crate::waitqueue::MultiWakerRegistration; |
| 12 | 12 | ||
| 13 | /// The `Watch` is a single-slot signaling primitive that allows _multiple_ (`N`) receivers to concurrently await | 13 | /// The `Watch` is a single-slot signaling primitive that allows _multiple_ (`N`) receivers to concurrently await |
diff --git a/embassy-sync/src/zerocopy_channel.rs b/embassy-sync/src/zerocopy_channel.rs index b3f7dbe8c..c572592b8 100644 --- a/embassy-sync/src/zerocopy_channel.rs +++ b/embassy-sync/src/zerocopy_channel.rs | |||
| @@ -15,12 +15,12 @@ | |||
| 15 | //! another message will result in an error being returned. | 15 | //! another message will result in an error being returned. |
| 16 | 16 | ||
| 17 | use core::cell::RefCell; | 17 | use core::cell::RefCell; |
| 18 | use core::future::{poll_fn, Future}; | 18 | use core::future::{Future, poll_fn}; |
| 19 | use core::marker::PhantomData; | 19 | use core::marker::PhantomData; |
| 20 | use core::task::{Context, Poll}; | 20 | use core::task::{Context, Poll}; |
| 21 | 21 | ||
| 22 | use crate::blocking_mutex::raw::RawMutex; | ||
| 23 | use crate::blocking_mutex::Mutex; | 22 | use crate::blocking_mutex::Mutex; |
| 23 | use crate::blocking_mutex::raw::RawMutex; | ||
| 24 | use crate::waitqueue::WakerRegistration; | 24 | use crate::waitqueue::WakerRegistration; |
| 25 | 25 | ||
| 26 | /// A bounded zero-copy channel for communicating between asynchronous tasks | 26 | /// A bounded zero-copy channel for communicating between asynchronous tasks |
| @@ -296,11 +296,7 @@ struct State { | |||
| 296 | 296 | ||
| 297 | impl State { | 297 | impl State { |
| 298 | fn increment(&self, i: usize) -> usize { | 298 | fn increment(&self, i: usize) -> usize { |
| 299 | if i + 1 == self.capacity { | 299 | if i + 1 == self.capacity { 0 } else { i + 1 } |
| 300 | 0 | ||
| 301 | } else { | ||
| 302 | i + 1 | ||
| 303 | } | ||
| 304 | } | 300 | } |
| 305 | 301 | ||
| 306 | fn clear(&mut self) { | 302 | fn clear(&mut self) { |
