diff options
Diffstat (limited to 'vendor/rustix/tests/io/eventfd.rs')
-rw-r--r-- | vendor/rustix/tests/io/eventfd.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/vendor/rustix/tests/io/eventfd.rs b/vendor/rustix/tests/io/eventfd.rs new file mode 100644 index 000000000..11bc8ae55 --- /dev/null +++ b/vendor/rustix/tests/io/eventfd.rs @@ -0,0 +1,24 @@ +#[cfg(any(target_os = "android", target_os = "linux"))] +#[test] +fn test_eventfd() { + use rustix::io::{eventfd, read, write, EventfdFlags}; + use std::mem::size_of; + use std::thread; + + let efd = eventfd(0, EventfdFlags::CLOEXEC).unwrap(); + + let child = thread::spawn(move || { + for u in [1_u64, 3, 6, 11, 5000].iter() { + assert_eq!(write(&efd, &u.to_ne_bytes()).unwrap(), size_of::<u64>()); + } + efd + }); + + let efd = child.join().unwrap(); + + let mut bytes = [0_u8; size_of::<u64>()]; + let s = read(&efd, &mut bytes).unwrap(); + assert_eq!(s, bytes.len()); + let u = u64::from_ne_bytes(bytes); + assert_eq!(u, 5021); +} |