1#[cfg(any(target_os = "android", target_os = "linux"))] 2#[test] 3fn test_eventfd() { 4 use rustix::io::{eventfd, read, write, EventfdFlags}; 5 use std::mem::size_of; 6 use std::thread; 7 8 let efd = eventfd(0, EventfdFlags::CLOEXEC).unwrap(); 9 10 let child = thread::spawn(move || { 11 for u in [1_u64, 3, 6, 11, 5000].iter() { 12 assert_eq!(write(&efd, &u.to_ne_bytes()).unwrap(), size_of::<u64>()); 13 } 14 efd 15 }); 16 17 let efd = child.join().unwrap(); 18 19 let mut bytes = [0_u8; size_of::<u64>()]; 20 let s = read(&efd, &mut bytes).unwrap(); 21 assert_eq!(s, bytes.len()); 22 let u = u64::from_ne_bytes(bytes); 23 assert_eq!(u, 5021); 24} 25