#[cfg(not(target_os = "linux"))]
fn main() {}
#[cfg(target_os = "linux")]
mod _pick_device;
#[cfg(target_os = "linux")]
fn main() -> std::io::Result<()> {
use nix::sys::epoll;
let mut dev = _pick_device::pick_device();
println!("{dev}");
dev.set_nonblocking(true)?;
let epoll = epoll::Epoll::new(epoll::EpollCreateFlags::EPOLL_CLOEXEC)?;
let event = epoll::EpollEvent::new(epoll::EpollFlags::EPOLLIN, 0);
epoll.add(&dev, event)?;
let mut events = [epoll::EpollEvent::empty(); 2];
println!("Events:");
loop {
match dev.fetch_events() {
Ok(iterator) => {
for ev in iterator {
println!("{ev:?}");
}
}
Err(e) if e.kind() == std::io::ErrorKind::WouldBlock => {
epoll.wait(&mut events, epoll::EpollTimeout::NONE)?;
}
Err(e) => {
eprintln!("{e}");
break;
}
}
}
Ok(())
}