forked from M-Labs/zynq-rs
1
0
Fork 0

libcortex_a9: impl Iterator for sync_channel::Receiver

This commit is contained in:
Astro 2020-04-09 02:56:54 +02:00
parent e54edbf32d
commit 6fd6f429fe
2 changed files with 11 additions and 7 deletions

View File

@ -135,11 +135,9 @@ pub fn main_core0() {
let core1 = boot::Core1::start(core1_stack); let core1 = boot::Core1::start(core1_stack);
let (tx, mut rx) = sync_channel(1000); let (tx, mut rx) = sync_channel(10);
*SHARED.lock() = Some(tx); *SHARED.lock() = Some(tx);
let mut i = 0u32; for (i, r) in rx.enumerate() {
loop {
let r = rx.recv();
// println!("Recvd {}", r); // println!("Recvd {}", r);
if i != *r { if i != *r {
println!("Expected {}, received {}", i, r); println!("Expected {}, received {}", i, r);
@ -147,8 +145,6 @@ pub fn main_core0() {
if i % 100000 == 0 { if i % 100000 == 0 {
println!("{} Ok", i); println!("{} Ok", i);
} }
i += 1;
} }
core1.reset(); core1.reset();
@ -253,7 +249,7 @@ pub fn main_core0() {
}); });
} }
static SHARED: Mutex<Option<sync_channel::Sender<u32>>> = Mutex::new(None); static SHARED: Mutex<Option<sync_channel::Sender<usize>>> = Mutex::new(None);
static DONE: Mutex<bool> = Mutex::new(false); static DONE: Mutex<bool> = Mutex::new(false);
#[no_mangle] #[no_mangle]

View File

@ -102,3 +102,11 @@ impl<T> Receiver<T> {
} }
} }
} }
impl<T> Iterator for Receiver<T> {
type Item = Box<T>;
fn next(&mut self) -> Option<Self::Item> {
Some(self.recv())
}
}