nix/sys/eventfd.rs
1use crate::errno::Errno;
2use crate::Result;
3use std::os::unix::io::RawFd;
4
5libc_bitflags! {
6 pub struct EfdFlags: libc::c_int {
7 EFD_CLOEXEC; // Since Linux 2.6.27
8 EFD_NONBLOCK; // Since Linux 2.6.27
9 EFD_SEMAPHORE; // Since Linux 2.6.30
10 }
11}
12
13pub fn eventfd(initval: libc::c_uint, flags: EfdFlags) -> Result<RawFd> {
14 let res = unsafe { libc::eventfd(initval, flags.bits()) };
15
16 Errno::result(res).map(|r| r as RawFd)
17}