diff --git a/libcortex_a9/src/sync_channel.rs b/libcortex_a9/src/sync_channel.rs index a30c315..effe4f1 100644 --- a/libcortex_a9/src/sync_channel.rs +++ b/libcortex_a9/src/sync_channel.rs @@ -87,6 +87,16 @@ impl<'a, T> Sender<'a, T> where T: Clone { content: Err(content.into()), }.await } + + /// Reset the `sync_channel`, *forget* all items in the queue. Affects both the sender and + /// receiver. + pub unsafe fn reset(&mut self) { + self.write.store(0, Ordering::Relaxed); + self.read.store(0, Ordering::Relaxed); + for v in self.list.iter() { + v.store(core::ptr::null_mut(), Ordering::Relaxed); + } + } } impl<'a, T> Receiver<'a, T> where T: Clone {