eth_igb/osal.rs
1use core::time::Duration;
2
3use trait_ffi::def_extern_trait;
4
5use crate::DError;
6
7#[def_extern_trait]
8pub trait Kernel {
9 fn sleep(duration: Duration);
10}
11
12pub(crate) fn wait_for<F: FnMut() -> bool>(
13 mut f: F,
14 interval: Duration,
15 try_count: Option<usize>,
16) -> Result<(), DError> {
17 for _ in 0..try_count.unwrap_or(usize::MAX) {
18 if f() {
19 return Ok(());
20 }
21
22 kernel::sleep(interval);
23 }
24 Err(DError::Timeout)
25}